WO2016014344A1 - Systems and methods for performing uninterrupted network upgrades with controllers - Google Patents

Systems and methods for performing uninterrupted network upgrades with controllers Download PDF

Info

Publication number
WO2016014344A1
WO2016014344A1 PCT/US2015/040804 US2015040804W WO2016014344A1 WO 2016014344 A1 WO2016014344 A1 WO 2016014344A1 US 2015040804 W US2015040804 W US 2015040804W WO 2016014344 A1 WO2016014344 A1 WO 2016014344A1
Authority
WO
WIPO (PCT)
Prior art keywords
switches
controller
network
software
redundant
Prior art date
Application number
PCT/US2015/040804
Other languages
French (fr)
Inventor
Michael STOLARCHUK
Carl D. ROTH
Alok SHANKAR
Robert K. Vaterlaus
Srinivasan Ramasubramanian
Andreas Wundsam
Robert W. SHERWOOD
Rajneesh Bajpai
Original Assignee
Big Switch Networks, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Big Switch Networks, Inc. filed Critical Big Switch Networks, Inc.
Publication of WO2016014344A1 publication Critical patent/WO2016014344A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0889Techniques to speed-up the configuration process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Definitions

  • This relates to communication networks, and more particularly, to communications networks having network switches that are controlled by a controller.
  • Packet -based networks such as the Internet and local data networks that are connected to the internet include network switches.
  • Network switches are used in forwarding packets from packet sources to packet
  • the packets may be sometimes referred to as frames.
  • data is forwarded over layer 2 of the Open Systems Interconnection (OSI) model as frames (e.g., Ethernet frames)
  • OSI Open Systems Interconnection
  • packets e.g., Internet
  • Cross-platform controller clients can be included on the switches in a network.
  • the controller clients are able to communicate with a corresponding controller server over network paths. Because the controller clients can be implemented on a variety of switch hardware, it is possible for a single controller to control switch equipment that might otherwise be
  • First and second controllers implemented on computing equipment may be used to control switches in a network (e.g., by providing control messages that include packet forwarding rules such as flow table entries to the switches over control paths) .
  • the switches may be connected to end hosts and may forward network data packets between the end hosts.
  • the first controller may communicate with the second controller to perform a software upgrade operation on the network.
  • the switches in the network may forward network traffic between the end hosts during the software upgrade operation.
  • the second controller may identify at least first and second redundant partitions of switches in the network that are each coupled to all of the end hosts. At least one of the first and second controllers may load (e.g., pre-load) software (e.g., updated, upgraded, or new software) onto the first and second redundant partitions (e.g., first and second redundant groups or sets) of switches .
  • the first controller may instruct the first redundant partition of switches to install the loaded software and the second redundant partition of switches may continue to forward network traffic (e.g., network data packets) between the end hosts while the first redundant partition of switches installs the loaded software.
  • the first controller may instruct the second redundant partition of switches to install the loaded software after the first redundant partition has completed installation of the loaded software.
  • the first redundant partition of switches may continue to forward network traffic between the end hosts while the second redundant partition of switches installs the loaded software.
  • the second controller may instruct the first and second redundant partitions of switches to disable connections between the first and second redundant partitions. If desired, the second controller may instruct each of the switches in the first and second redundant partitions of switches to disable a respective connection with the first controller and the first controller may install the software on the first
  • the second controller may instruct the first redundant partition of switches to enable (e.g., re- enable) the disabled connections between the first redundant partition of switches and the first controller prior to instructing the first redundant partition of switches to install the loaded software using the first controller.
  • the second controller may instruct the second redundant partition of switches to enable the disabled connections between the second redundant partition of switches and the first controller prior to instructing the second redundant partition of switches to install the loaded software using the first controller. If desired, the second controller may install the software while the second redundant partition of switches installs the loaded software .
  • the first controller may receive network topology information identifying connections in the network from the second controller and may translate the received network topology information to updated software definitions specified by the installed (updated) software.
  • the first controller may generate network forwarding rules such as flow table entries based on the network topology information and may provide the flow table entries to the switches for performing data forwarding through the network.
  • the first controller may generate additional network forwarding rules such as additional flow table entries using the translated network topology information (e.g., the network topology information translated using the updated software definitions) and may provide the additional flow table entries to the switches after the switches have installed the upgraded software.
  • the switches may process the additional flow table entries and may forward data traffic through the network using the received additional flow table entries .
  • packets may be forwarded between end hosts during the software upgrade operations without a noticeable reduction in network forwarding performance (e.g., without a level of packet loss that is detectable by a user of the end hosts) .
  • FIG. 1 is a diagram of an illustrative network that includes a controller and a packet forwarding system in accordance with an embodiment of the present invention.
  • FIG. 2 is a diagram of a controller server and controller client that may communicate over a network connection in accordance with an embodiment of the present invention.
  • FIG. 3 is a diagram of an illustrative flow table of the type that may be used by a packet processing system in accordance with an embodiment of the present invention.
  • FIG. 4 is a diagram of an illustrative flow table of the type that may be used by a packet processing system showing three illustrative types of packet
  • FIG. 5 is a flow chart of illustrative steps involved in processing packets in a packet processing system in accordance with an embodiment of the present invention .
  • FIG. 6 is a diagram of an illustrative network having switches that may be controlled by multiple controllers to perform software upgrade operations in accordance with an embodiment of the present invention.
  • FIG. 7 is a diagram of an illustrative rack- based system that implements a network having switches that may be controlled by multiple controllers to perform software upgrade operations in accordance with an
  • FIG. 8 is a flow chart of illustrative steps involved in upgrading software on a network using multiple controllers without data forwarding interruptions in accordance with an embodiment of the present invention.
  • FIGS. 9A-9D is a flow chart of illustrative steps that may be performed by first and second
  • controllers for partitioning a network having redundant connections and performing software upgrade operations on the network without data forwarding interruptions in accordance with an embodiment of the present invention.
  • FIG. 10 is a diagram of illustrative flow table entries that may be generated using a network policy before and after upgrading software on the network in accordance with an embodiment of the present invention.
  • Networks such as the internet and the local and regional networks that are coupled to the internet rely on packet-based switches. These switches, which are
  • packet sources and destinations are sometimes referred to as end hosts. Examples of end hosts are personal computers, servers, and other computing equipment such as portable electronic devices that access the network using wired or wireless technologies.
  • Network switches range in capability from relatively small Ethernet switches and wireless access points to large rack-based systems that include multiple line cards, redundant power supplies, and supervisor capabilities. It is not uncommon for networks to include equipment from multiple vendors. Network switches from different vendors can be interconnected to form a packet forwarding network, but can be difficult to manage in a centralized fashion due to incompatibilities between their operating systems and control protocols.
  • a centralized cross-platform controller such as a controller server or distributed controller server may interact with each of the control clients over respective network links.
  • the use of a cross-platform controller and corresponding controller clients allows potentially disparate network switch equipment to be centrally managed.
  • Controller server 18 may be implemented on a stand-alone computer, on a cluster of computers, on a set of computers that are distributed among multiple locations, on hardware that is embedded within a network switch, or on other suitable computing equipment 12. Controller server 18 can run as a single process on a single computer or can be distributed over several hosts for redundancy. The use of a distributed arrangement may help provide network 10 with resiliency against unexpected network partitions (e.g., a situation in which a network link between two campuses is
  • controller nodes can exchange information using an intra- controller protocol. For example, if a new end host connects to network hardware (e.g., a switch) that is only connected to a first controller node, that first
  • controller node may use the intra-controller protocol to inform other controller nodes of the presence of the new end host .
  • a switch or other network component may be connected to multiple controller nodes (e.g., two or more controllers) . Arrangements in which first and second controller servers are used to control a network of associated switches are sometimes described herein as an example .
  • a given controller server such as controller server 18 as shown in FIG. 1 may gather information about the topology of network 10. For example, controller server 18 may send Link Layer Discovery Protocol (LLDP) probe packets through the network to discover the topology of network 10. Controller server 18 may use information on network topology and information on the capabilities of network equipment to determine appropriate paths for packets flowing through the network. Once appropriate paths have been identified, controller server 18 may send corresponding settings data to the hardware in network 10 to ensure that packets flow through the network as desired. Network configuration operations such as these may be performed during system setup operations,
  • LLDP Link Layer Discovery Protocol
  • Controller server 18 may be used to implement network configuration rules 20.
  • Rules 20 may specify which services are available to various network entities.
  • rules 20 may specify which users (or type of users) in network 10 may access a particular server.
  • rules 20 may include policies
  • Rules 20 may, for example, be maintained in a database at computing equipment 12.
  • Controller server 18 and controller clients 30 at respective network switches 14 may use network protocol stacks to communicate over network links 16.
  • Each switch e.g., each packet forwarding system
  • Each switch may have input-output ports 34 (sometimes referred to as network switch interfaces) . Cables may be used to connect pieces of equipment to ports 34. For example, end hosts such as personal computers, web servers, and other computing equipment may be plugged into ports 34. Ports 34 may also be used to connect one of switches 14 to other switches 14.
  • Packet processing circuitry 32 may be used in forwarding packets from one of ports 34 to another of ports 34 and may be used in performing other suitable actions on incoming packets. Packet processing circuit 32 may be implemented using one or more integrated circuits such as dedicated high-speed switch circuits and may serve as a hardware data path. If desired, packet processing software 26 that is running on control unit 24 may be used in implementing a software data path.
  • Control unit 24 may include processing and memory circuits (e.g., one or more microprocessors, memory chips, and other control circuitry) for storing and running control software.
  • control unit 24 may store and run software such as packet processing software 26, may store flow table 28, and may be used to support the operation of controller clients 30.
  • Controller clients 30 and controller server 18 may be compliant with a network switch protocol such as the OpenFlow protocol (see, e.g., OpenFlow Switch
  • controller server 18 may provide controller clients 30 with data that determines how switch 14 is to process incoming packets from input-output ports 34.
  • flow table data from controller server 18 may be stored in a flow table such as flow table 28.
  • the entries of flow table 28 may be used in configuring switch 14 (e.g., the functions of packet processing circuitry 32 and/or packet processing software 26) .
  • flow table 28 serves as cache storage for flow table entries and a
  • flow table 28 may serve as the exclusive storage for flow table entries in switch 14 or may be omitted in favor of flow table storage resources within packet processing circuitry 32.
  • flow table entries may be stored using any suitable data structures (e.g., one or more tables, lists, etc.) .
  • the data of flow table 28 is referred to herein as forming flow table entries (e.g., rows in flow table 28) .
  • flow tables 28 storing data that determines how switch 14 is to process incoming packets are merely illustrative. If desired, any packet
  • forwarding decision engine may be used in place of or in addition to flow tables 28 to assist packet forwarding system 14 to make decisions about how to forward network packets.
  • packet forwarding decision engines may direct packet forwarding system 14 to forward network packets to predetermined ports based on attributes of the network packets (e.g., based on network protocol headers) .
  • Any desired switch may be provided with controller clients that communicate with and are
  • switch 14 may be implemented using a general purpose processing platform that runs control software and that omits packet processing circuitry 32.
  • switch 14 may be implemented using control circuitry that is coupled to one or more high-speed switching integrated circuits ("switch ICs") .
  • switch 14 may be implemented as a line card in a rack-based system having multiple line cards each with its own packet processing circuitry.
  • the controller server may, if desired, be implemented on one or more line cards in the rack-based system, in another rack-based system, or on other
  • controller server 18 and controller client 30 may communicate over network path 66 using network protocol stacks such as network protocol stack 58 and network protocol stack 60.
  • Stacks 58 and 60 may be, for example Linux TCP/IP stacks or the TCP/IP stack in the VxWorks operating system (as examples) .
  • Path 66 may be, for example, a path that supports a network connection between switch 14 and external equipment (e.g., network path 16 of FIG. 1) or may be a backbone path in a rack-based system. Arrangements in which path 66 is a network path such as path 16 are sometimes described herein as an example .
  • Control protocol stack 56 serves as an interface between network protocol stack 58 and control software 54.
  • Control protocol stack 62 serves as an interface between network protocol stack 60 and control software 64.
  • control protocol stacks 56 generate and parse control protocol messages (e.g., control messages to activate a port or to install a particular flow table entry into flow table 28) .
  • a network connection is formed over the link between controller server 18 and controller client 30.
  • Controller server 18 and controller client 30 can communicate using a
  • Transmission Control Protocol or User Datagram Protocol (UDP) over Internet Protocol (IP) network connection.
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • IP Internet Protocol
  • control protocols that may be used when communicating between controller server 18 and controller clients 30 over the network connection include S MP and OpenFlow protocol stack version 1.0.0 (as examples) .
  • Flow table 28 contains flow table entries (e.g., rows in the table) that have multiple fields (sometimes referred to as header fields) .
  • the fields in a packet that has been received by switch 14 can be compared to the fields in the flow table.
  • Each flow table entry may have associated actions. When there is a match between the fields in a packet and the fields in a flow table entry, the corresponding action for that flow table entry may be taken .
  • table 28 may have flow table entries (rows) 68. Each flow table entry may be associated with header 70, action 72, and statistics 74. Headers 70 may each include multiple header fields 76. The action in each flow table entry indicates what action switch 14 is to perform on the packet when a match is detected between the fields in the packet and the corresponding fields in the header of that flow table entry. Switch 14 may maintain statistical data (counter values) in the
  • header fields in header 70 may include the following fields: ingress port (i.e., the identity of the physical port in switch 14 through which the packet is being received), Ethernet source address, Ethernet
  • Ethernet type Ethernet type
  • VLAN virtual local area network identification (sometimes referred to as a VLAN tag)
  • VLAN priority sometimes referred to as a VLAN tag
  • IP source address sometimes referred to as IP
  • IP protocol IP ToS (type of service) bits
  • Transport source port / Internet Control Message Protocol (ICMP) Type (sometimes referred to as source TCP port)
  • TCP port (sometimes referred to as destination TCP port) .
  • Other fields may be used if desired. For example, a network protocol field and a protocol port field may be used.
  • Each flow table entry (flow entry) is associated with zero or more actions that dictate how the switch handles matching packets. If no forward actions are present, the packet is preferably dropped.
  • the actions that may be taken by switch 14 when a match is detected between packet fields and the header fields in a flow table entry may include the following actions : forward (e.g., ALL to send the packet out on all interfaces, not including the incoming interface, CONTROLLER to
  • Additional actions that may be taken by switch 14 include: an enqueue action to forward a packet through a queue attached to a port and a drop action (e.g., to drop a packet that matches a flow table entry with no specified action) .
  • Modify-field actions may also be supported by switch 14. Examples of modify-field actions that may be taken include: Set VLAN ID, Set VLAN priority, Strip VLAN header, Modify VLAN tag, Modify Ethernet source MAC (Media Access Control) address, Modify Ethernet destination MAC address, Modify IPv4 source address, Modify IPv4 ToS bits, Modify transport destination port.
  • the modify-field actions may be used in rewriting portions of network packets that match the flow table entry.
  • FIG. 4 is an illustrative flow table having three flow table entries.
  • the entries include fields with wildcards (e.g., "*" symbols) .
  • wildcards e.g., "*" symbols
  • Additional fields may match additional packet information (e.g., packet header information of network packets) .
  • the entry of the first row of the FIG. 4 table directs the switch in which the flow table entry is operating to perform Ethernet switching. In particular, incoming packets with matching Ethernet destination addresses are forwarded to port 3.
  • the entry of the second row of table of FIG. 4 illustrates how a switch may be configured to perform internet routing (i.e., packets are forwarded based on their destination IP address) .
  • the third row of the table of FIG. 4 contains an entry that illustrates how a switch may be configured to perform firewalling.
  • a packet is received that has a destination IP port value of 80, that packet is dropped (i.e., the switch is configured to serve as a firewall that blocks port 80 traffic) .
  • Flow table entries of the type shown in FIG. 4 may be loaded into a switch 14 by controller server 18 during system setup operations or may be provided to a switch 14 from controller server 18 in real time in response to receipt and processing of packets at
  • controller server 18 from switches such as switch 14.
  • switches such as switch 14
  • each switch can be provided with appropriate flow table entries to form a path through the network.
  • switch 14 receives a packet on one of its ports (e.g., one of input -output ports 34 of FIG. 1) .
  • switch 14 compares the fields of the received packet to the fields of the flow table entries in the flow table 28 of that switch to determine whether there is a match.
  • Some fields in a flow table entry may contain complete values (e.g., complete addresses) .
  • Other fields may contain wildcards (i.e., fields marked with the "don't care" wildcard character of "*") .
  • Yet other fields may have partially complete entries (e.g., a partial address that is partially wildcarded) .
  • Some fields may use ranges (e.g., by restricting a TCP port number to a value between 1 and 4096) and in effect use the range to implement a type of partial wildearding.
  • switch 14 can take into account whether or not each field in the flow table entry contains a complete value without any wildcarding, a partial value with wildcarding, or a wildcard character (i.e., a completely wildcarded field) .
  • switch 14 may send the packet to controller server 18 over link 16 (step 84) .
  • switch 14 may perform the action that is associated with that flow table entry and may update the counter value in the statistics field of that flow table entry (step 82) . Processing may then loop back to step 78, so that another packet may be processed by switch 14, as indicated by line 86.
  • FIG. 6 is a diagram of an illustrative network 100 in which switches may be controlled by controllers 18 (e.g., a first controller 18A and a second controller 18B) .
  • Controllers 18A and 18B may each be a controller server or a distributed controller implemented across multiple computing devices. In another suitable
  • controllers 18A and 18B may be formed on shared computing equipment.
  • network 100 may include switches such as switches CI, C2 , El, E2, E3 , and E4.
  • Controllers 18A and 18B may each be coupled to the switches of network 100 via control paths 66 (e.g., each switch in network 100 may be connected to both controllers 18A and 18B via control paths 66) .
  • Controllers 18A and 18B may control the switches using control paths 66 (e.g., by providing control messages such as control messages that include flow table entries 68 of FIG. 3) .
  • Controllers 18A and 18B may communicate with each other over path 67 (e.g., for coordinating software upgrade operations , for sharing network topology
  • Network 100 may include end hosts such as end hosts EH1, EH2, EH3 , and EH4 that are coupled to the switches of network 100.
  • Switches that are directly coupled to end hosts may sometimes be referred to as edge switches, whereas switches that merely interconnect other switches and are not directly coupled to the end hosts may be referred to as core switches.
  • switches El, E2 , E3 , and E are edge switches, because they are coupled to end hosts.
  • Switches CI and C2 are core switches, because switches CI and C2 interconnect switches El, E2 , E3, and E4 and are not directly coupled to end hosts.
  • Switches CI and C2 may couple network 100 to other networks 102 (e.g., other networks including switches and end hosts) . If desired, switches of the same rack may be coupled by intra-rack paths. In the example of FIG. 6, switches El, E2, E3 , and E4 are coupled by paths 65.
  • Switches 14 in network 100 may be coupled to other switches 14 and end hosts EH through ports P (e.g., ports such as input -output ports 34 as shown in FIG. 1) .
  • a first edge switch El may forward data (e.g., network data packets) to and from end host EH1 via a first port Pi, may forward data to and from end host EH2 via a second port P 2 , may forward data to and from a second edge switch E2 via a third port P 3 and a corresponding communications path 65, may forward data to and from core switch C2 via a fourth port P 4 , and forward data to and from core switch CI via fifth port P 5 .
  • Second edge switch E2 may forward data to and from end host EHl via a corresponding port P 2 , may forward data to and from edge switch El via a corresponding port P lf etc.
  • network 100 may include at least two controllers 18 (e.g., network 100 may include two controllers, three controllers, four
  • controllers or any other desired number of controllers.
  • FIG. 7 is an illustrative example of network 100 of FIG. 6 that is implemented using rack-based systems.
  • edge switches and end hosts may be implemented using network racks 110 and 112 that are coupled to switches 114 (e.g., core switches as shown in FIG. 7).
  • network 100 may include additional network racks that house additional end hosts and switches and that are coupled to core switches 114.
  • Network rack 110 may include edge switches El and E2 and end hosts EHl and EH2
  • network rack 112 may include edge switches E3 and E4 and end hosts EH3 and EH4.
  • Edge switches El, E2 , E3 , and E4 may serve as top-of-rack switches that are coupled via network paths to each end host of the corresponding network rack 112.
  • top-of-rack switch E3 is connected to each of the end hosts of network 112 (e.g., end hosts EH3 and EH4) .
  • Each top-of-rack switch serves as an interface between end hosts of the corresponding network rack and other network devices such as other portions of network 100 or other networks 102.
  • Network traffic to or from end hosts of network rack 110 may be required to traverse at least one of the top-of-rack switches of network rack 110 (e.g., top-of-rack switches El and E2) .
  • network traffic of network rack 112 may be required to traverse at least one of switches E3 and E .
  • network packets sent by end host EH1 to end host EH3 may be forwarded by top-of-rack switch El, core switch CI, and top-of-rack switch E3.
  • network packets sent by end host EH1 to end host EH3 may be forwarded by top-of-rack switch E2 , core switch CI, and top-of-rack switch E4.
  • controller 18A may be implemented in network rack 110 (e.g., using the resources of a line card or other computing equipment of network rack 110) . Controller 18A may communicate with the top- of-rack switches and core switches by sending control packets and receiving control plane packets from the switches. In this scenario, one or more switches of network 100 may form portions of control paths 66 of FIG. 6. For example, switch El or switch E2 may serve as part of control paths between core switches CI and C2 and controller 18A. As another example, switches El, E2 , CI, C2 , and C3 may form portions of control paths between controller 18 and switches E3 and E4.
  • Controller 18B may be implemented in network rack 112 (e.g., using the resources of a line card or other computing equipment of network rack 112) .
  • Controller 18B may communicate with the top-of-rack switches and core switches by sending control packets and receiving control plane packets from the switches. This example is merely illustrative. If desired, controller 18B and controller 18A may both be formed on rack 110, may both be formed on rack 112, or one or both of controllers 18A and 18B may be formed on additional network racks (not shown) .
  • Edge switches such as El, E2 , E3 , and E4 that are coupled to multiple end hosts are sometimes referred to as leaf switches.
  • leaf switches For example, top-of-rack switches in a rack-based system are sometimes referred to as leaf switches.
  • Switches 114 that are coupled to each of the leaf switches are sometimes referred to as spine switches.
  • Spine switches may be core switches that are not connected to any end hosts (e.g., as shown in FIG. 7) or may have one or more ports that are connected to end hosts.
  • FIG. 7 is merely illustrative.
  • racks 110 and 112 may include any desired number of leaf switches, end hosts, and controllers.
  • Network 100 may include any desired number of network racks.
  • Software may be implemented on controllers 18A and 18B and switches 14 in network 100 for performing and controlling data forwarding through the network.
  • Software running on network 100 may include, for example, packet processing software 26 implemented on switches 14 (as shown in FIG. 1) , control software 54 implemented on controller 18 (as shown in FIG. 2), control software 64 implemented on switches 14, software for generating and implementing flow table entries based on desired network rules or policies, or any other desired software running on controllers 18 and/or switches 14 (e.g., operating system software, forwarding software, control software, etc . ) .
  • switches 14 and/or controllers 18 may obtain new software (e.g., updated or upgraded software) from an external source (e.g., provided by a user or network administrator, received over other networks 102, etc.).
  • the software may be, for example, a software image or other information for configuring switches 14 and controller 18.
  • Switches 14 and controllers 18 may install the updated software and may subsequently use the updated software for performing data forwarding operations through the network.
  • switches 14 and controllers 18 typically need to be temporarily disabled (e.g., rebooted) after installation of the updated software. If care is not taken, rebooting switches 14 and/or controller 18 may interrupt or delay data forwarding through network 100 (e.g., rebooting switches and controllers on network 100 may cause
  • Interruptions to the network caused by the software update operations may generate a network performance reduction (e.g., packet loss) or network performance "hit" that is noticeable to a user of end hosts EH.
  • a noticeable network hit may be defined herein as any increase in the time required to forward a packet from a packet source to a packet destination through network 100 that exceeds a timeout period associated with applications running on end hosts EH (e.g., any time greater than an application timeout period of approximately 3-5 seconds, greater than an application timeout period of approximately 30 seconds, etc.) . It may therefore be desirable to be able to provide improved systems and methods for upgrading software implemented on communications network 100.
  • controllers 18A and 18B may actively manage upgrade operations for network 100 so that any performance reduction caused by the upgrade operations are unnoticeable or "hit-less" to a user of the network.
  • controllers 18A and 18B may utilize connection redundancy in network 100 to ensure that end hosts EH are always connected to network 100 as switches 14 install updated software and to mitigate the effects of any performance loss resulting from the upgrade process.
  • each end host EH may be connected to at least two different edge switches and each edge switch is connected to every core switch in network 100.
  • each end host EH may be redundantly connected to network 100 (e.g., so that if one of the edge switches connected to a particular end host needs to reboot, another edge switch remains connected to that end host for forwarding data packets between that end host and other end hosts in network 100) .
  • controllers 18 e.g., with a first controller 18A and a second controller 18B
  • controllers 18A and 18B may minimize any reduction in data forwarding performance generated by the upgrade process.
  • FIG. 8 is a flow chart of illustrative steps that may be performed by controllers such as controllers 18 for performing uninterrupted (seamless) software upgrade operations on the network (e.g., upgrade
  • FIG. 8 The steps of FIG. 8 are described in connection with the example of FIG. 6 for performing upgrade operations using two controllers 18 ⁇ and 18B on switches 14 in network 100. This is merely illustrative and does not serve to limit the scope of the present invention. If desired, the steps of FIG. 8 may be performed using any desired
  • communications network having any desired number and arrangement of controllers, switches, and end hosts.
  • Controllers 18 may partition network 100 into redundant first and second partitions of switches. Controllers 18 may identify different groups (sets) of respective switches that are each connected to all of the end hosts EH in the network. In the example of FIG. 6, controllers 18 may identify a first redundant partition of switches (sometimes referred to herein as a partition of switches, a redundant set of switches, a set of switches, a redundant group of
  • switches or a group of switches that includes the switches El, E3 , and CI (i.e., the shaded switches shown in FIG. 6) , and a second redundant partition of switches that includes switches E2 , C2, and E4 (i.e., the unshaded switches shown in FIG. 6) .
  • partitions of switches shown in FIG. 6 are each coupled to all of the end hosts EH in network 100 via network paths that are not formed as a part of the other partition of switches (e.g., the first partition of switches is coupled to all of end hosts EHl over paths that are not a part of the second partition and the second partition of switches is coupled to all of end hosts EHl over paths that are not a part of the first partition) , thereby providing network redundancy for each partition of switches.
  • end host EHl of FIG. 6 is coupled to the first (shaded) partition via port Pi on edge switch El and is coupled to the second (unshaded) partition via port P 2 on edge switch E2
  • end host EH2 is coupled to the first partition via port P 2 on switch El and is coupled to the second partition via port P 3 on switch E2
  • end host EH4 is coupled to the first partition via port P 2 on switch E3 and is coupled to the second partition via port P 2 on switch E4, etc.
  • controllers 18 may identify these redundant partitions of switches based on the gathered topology of network 100 and may use the
  • controllers 18 may partition (group) the switches in a manner such that each end host is able to communicate with every other end host in network 100 thr ' ough each of the partitions.
  • end host EHl may communicate with end host EH2 either through the first partition (e.g. , edge switch El may forward a packet received from end host EHl via port Pi to end host EH2 via port P 2 ) or through the second partition (e.g., edge switch E2 may forward a packet received from end host EHl via port P 2 to end host EH2 via port P 3 ) .
  • first partition e.g. , edge switch El may forward a packet received from end host EHl via port Pi to end host EH2 via port P 2
  • edge switch E2 may forward a packet received from end host EHl via port P 2 to end host EH2 via port P 3 .
  • controllers 18 may partition the switches in network 100 into any number of redundant sets (partitions) based on the connections between end hosts EH and switches 14 in the network (e.g., controllers 18 may group the switches into three partitions in scenarios where each end host is connected to at least three edge switches, may group the switches into four partitions in scenarios where each end host is connected to at least four edge switches, etc . ) .
  • first controller 18A may perform upgrade operations on itself by installing new (updated) software.
  • first controller 18A may obtain new software from an external source, may install the new software, and may reboot to implement the new software.
  • controller 18A may be in a standby (idle) mode in which controller 18A does not control switches 14 in network 100 (e.g., TCP connections with the switches may be disconnected or dropped) .
  • Controller 18B may be active and may control data forwarding through network 100 while controller 18A is idle, thereby preventing
  • second controller 18B may transfer control of the first redundant partition of switches
  • first controller 18A e.g., switches El, CI, and E3 of FIG. 6
  • first controller 18A e.g., the first controller 18A after controller 18A installs and implements the updated
  • Upgraded first controller 18A may instruct the switches in the first partition to install the new
  • upgraded controller 18A may instruct switches El, CI, and E3 in the first partition to install the updated software and to reboot.
  • Controller 18B may be active and may manage (e.g., control) data forwarding using the second partition of switches while the first partition of switches installs the new software. Switches in the second partition may forward data between each end host EH while the first partition of switches installs the new software. If desired, after the first partition of switches has been upgraded (e.g., after the first partition has installed the new software and rebooted) , there may be a period of time during which both the first and second controllers are actively controlling switches in network 100 (e.g., during which the upgraded first controller 18A controls network forwarding using the upgraded first partition of switches and during which the second controller 18B controls forwarding using the second partition of
  • second controller 18B may transfer control of the second redundant partition of switches (e.g., switches E2 , C2 , and E4) to upgraded first
  • Upgraded first controller 18A may instruct the switches in the second partition to install the new software.
  • upgraded controller 18A may instruct switches E2, C2 , and E4 in the second partition to install the updated software and to reboot.
  • second controller 18B may perform upgrade operations on itself by installing new software. For example, second controller 18B may obtain new software from an external source, may install the new software, and may reboot to implement the new software . While second controller 18B is installing the new software and
  • controller 18B may be in a standby (idle) mode in which controller 18B does not control switches 14 in network 100. Controller 18A may be active and may manage data forwarding through network 100 while controller 18B is idle, thereby preventing noticeable reduction in data forwarding performance through network 100. If desired, second controller 18B may install the new software and reboot prior to installing the new software on the second partition of switches, after installing the new software on the second partition of switches, or concurrently with installation of the new software on the second partition of switches.
  • data may be forwarded between any of the end hosts EH even when the switches in one of the partitions are disabled (e.g., while those switches are rebooting with the new software) or when one of the controllers is disabled (e.g., while that controller is rebooting with the new software) .
  • network 100 may route packets sent by end host EHl to end host EH2 by forwarding the packets through switch E2 in the second partition even when switches El, CI, and E3 of the first partition are rebooting and may route the packets sent by end host EHl to end host EH2 by forwarding the packets through switch El in the first partition even when switches E2, C2 , and E4 in the second partition are rebooting.
  • FIGS. 9A-9D show a flow chart of illustrative steps that may be performed by first and second switch controllers to perform uninterrupted software upgrade operations on the switches in a communications network. The steps of FIGS. 9A-9D are described in connection with the example of FIG. 6 in which first and second
  • controllers 18A and 18B perform upgrade operations on switches 14 in network 100. This is merely illustrative and does not serve to limit the scope of the present invention. If desired, the steps of FIGS. 9A-9D may be performed using any desired communications network having any desired number and arrangement of controllers, switches, and end hosts.
  • first controllers 18A and second controller 18B may obtain new (updated) software.
  • a user of network 100 may provide the new software to controllers 18A and 18B and/or controllers 18A and 18B may receive the new software over other networks such as network 102 (e.g., the internet) as shown in FIG. 6.
  • Controllers 18A and 18B may store
  • controllers 18A and 18B may store multiple uninstalled versions of software (e.g., multiple uninstalled software images, different software versions or builds, etc.) on memory for installation at a later time (e.g., so that a user of network 100 may select a pre-loaded software image to install from memory when desired) .
  • controllers 18A and 18B may pre-load the new software onto switches 14 (e.g., leaf switches and spine switches in network 100) .
  • switches 14 may provide the new software to switches 14 over control paths 66.
  • Switches 14 may store (cache) the new software on memory until the new software is to be installed. If desired, switches 14 may store multiple uninstalled versions of the software on memory for installation at a later time.
  • first controller 18A may communicate with second controller 18B (e.g., by conveying control messages over inter- controller path 67) to determine an initial active controller and standby controller. If desired, controllers 18A and 18B may determine the active and standby controllers using a leader election process. In the scenario described herein as an example, controller 18B may be identified as the active controller and controller 18A may be identified as the standby controller prior to installing the new software. This is merely illustrative and, in general, any controller 18 in network 100 may be elected the active or standby controller.
  • first (standby) controller 18A may inform second (active) controller 18B that a software upgrade is to be made (e.g., by providing control messages over inter-controller path 67) . If desired, first controller 18A may inform second controller 18B that an upgrade is to be made in response to receiving input from a user of network 100 (e.g., a system administrator for network 100, etc.) , after a predetermined time period or at regular predetermined intervals, once new software is obtained, etc .
  • second (active) controller 18B may verify connection redundancy in network 100 (e.g., controller 18B may process network topology information to determine whether the network has sufficient connection redundancy to perform an interrupted software upgrade) . If desired, second controller 18B may lock the
  • Second controller 18B may, for example, determine that there is insufficient redundancy in network 100 if each end host EH is not connected to at least two edge switches (e.g., if there are end hosts that are connected to only one edge switch and/or if there are not at least two redundant network paths between each pair of end hosts EH in network 100) .
  • controllers 18 may abort the upgrade operations and continue performing normal data forwarding or may perform software upgrade operations on network 100 that generate a noticeable reduction in network forwarding performance (e.g., an upgrade operation having a performance "hit") .
  • controllers 18 may update software on switches 14 without a guarantee that there is always a redundant data path for forwarding packets between any given pair of end hosts EH in this scenario .
  • Second controller 18B may, for example, determine that network 100 is fully redundant if each end host EH in the network is coupled to at least two edge switches 14 (e.g., if there are at least two redundant network paths between each pair of end hosts in network 100). In the example of FIG. 6, second controller 18B determines that network 100 is fully redundant because each end host EH is connected to at least two edge switches and there are two redundant network paths between each end host EH. In another suitable arrangement, controller 18B may identify portions of network 100 (e.g., subsets of switches) that are redundant and may only perform software upgrade operations on the portions of network 100 that are redundant.
  • portions of network 100 e.g., subsets of switches
  • second (active) controller 18B may identify the redundant sets of switches in network 100. If desired, second controller 18B may provide information about the redundant sets of switches to first (standby) controller 18A. In the example of FIG. 6, second
  • controller 18B may identify first and second redundant partitions of switches 14 (e.g., a first redundant partition including switches El, E3 , and CI and a second redundant partition including switches E2, C2 , and E4 ) , because packets may be forwarded between any pair of end hosts EH in network 100 through the first partition (e.g., switches El, CI, and E3 ) without traversing any switches in the second partition (e.g., switches E2 , C2 , and E4) and packets may be forwarded between any pair of end hosts EH through the second partition without traversing any switches in the first partition.
  • first partition e.g., switches El, CI, and E3
  • the second partition e.g., switches E2 , C2 , and E4
  • second (active) controller 18B may instruct all of the switches 14 in network 100 to
  • Steps 300-318 as shown in FIG. 9A may, for example, be performed by controllers 18 while processing step 200 of FIG. 8. Processing may subsequently proceed to step 320 as shown in FIG. 9B .
  • first (standby) controller 18A may perform upgrade operations on itself by installing the new software (e.g., the software image that was pre-loaded onto first controller 18A while processing step 300 of FIG. 9A) .
  • controller 18A may reboot (e.g., controller 18A may boot with the new installed software, obtain an IP address, etc.) .
  • Step 320 may, for example, be performed while processing step 202 of FIG. 8.
  • Steps 322-328 of FIG. 9B and steps 330-340 of FIG. 9C may, for example, be performed while processing step 204 of FIG. 8.
  • the upgraded first (standby) controller 18A may request network topology information from second (active) controller 18B) .
  • Second (active) controller 18B may provide network topology information (e.g., a snapshot of the operational state of network 100) to upgraded first (standby)
  • controller 18A (e.g., via inter-controller path 67).
  • the upgraded first (standby) controller 18A may translate (convert) the received network topology information to new software definitions of the network (e.g., new software network definitions as identified by the installed new software image at step 324).
  • the new software definitions may be strictly additive (e.g., to add lines to the previous software definitions of the network without deleting or removing existing lines) or may include transition functions that map between the previous and new software definitions of the network.
  • other changes to the software definitions of the network e.g., non-additive changes
  • first controller 18A may use the network topology information that has been translated to the new (updated) software network definitions for generating flow table entries for switches 14 (e.g., based on network policies implemented on controllers 81) .
  • upgraded first (standby) controller 18A may inform second (active) controller 18B that first controller 18A has successfully installed the updated software.
  • First controller 18A may request that second controller 18B logically cleave network 100 between the identified first and second partitions.
  • second (active) controller 18B may logically cleave the network 100 between the identified first and second partitions (e.g., in response to
  • Controller 18B may cleave the network by instructing switches 14 to disable connections between the first and second partitions (e.g. , by instructing switches 14 to disable ports that are connected to switches in other redundant partitions) .
  • controller 18B may instruct switch E2 (as shown in FIG. 6) in the second partition to disable port Pi connected to switch El in the first partition, may instruct switch E2 to disable port P 4 connected to switch E3 in the first partition, may instruct switch E3 in the first partition to disable port Pi connected to switch E2 in the second partition, may instruct switch E3 to disable port P 4 connected to switch E4 in the first partition, etc.
  • network paths between the redundant partitions such as network paths 65 may be disabled for performing subsequent upgrade operations . Processing may proceed to step
  • upgraded first (standby) controller 18A may request reassignment of the first partition of switches from second (active)
  • Second (active) controller 18B may transfer control of the first partition of switches to upgraded first controller 18A.
  • Second (active) controller 18B may transfer control of the first partition of switches to upgraded first controller 18A.
  • (active) controller 18B may instruct the first partition of switches to re-establish connections with first controller 18A (e.g. , to re-establish respective TCP sessions with first controller 18A) . If desired, second controller 18B may subsequently disconnect from the switches in the first partition. First controller 18A may enter an active mode from the standby mode (e.g. , first controller 18A may become an active controller) after the first partition of switches has been reassigned to upgraded first controller 18A (e.g. , first controller 18A may actively control the first partition of switches) .
  • both the first and second controllers 18 may be active (e.g., the first controller may control the first partition of switches whereas the second controller may control the second partition of switches) after reassignment of the first partition to upgraded first controller 18A.
  • the duration in which both controllers 18 are active may be limited so that the duration is less than a predetermined value associated with an application timeout period of end hosts EH (e.g., less than approximately 3-5 seconds) .
  • upgraded first (active) controller 18A may instruct the first partition of switches to disconnect from end hosts EH.
  • controller 18A may instruct the first partition of switches to disable ports connected to end hosts EH.
  • upgraded first (active) controller 18A may instruct switch El to disable ports Pi and P 2 connected to end hosts EHl and EH2 and may instruct switch E3 to disable ports P 2 and P 3 connected to end hosts EH3 and EH .
  • End hosts EH may continue to send and receive data packets over the second partition of switches even when the first partition of switches is disconnected from the end hosts.
  • upgraded first (active) controller 18A may instruct the first partition of switches to install the new software stored on the first partition of switches (e.g., the software images pre-loaded onto the switches while processing step 302 of FIG. 9A) .
  • the switches in the first partition may reboot to complete the software installation process .
  • upgraded first controller 18A may optionally determine whether switches in the first partition need to be upgraded (e.g., controller 18A may identify whether any switches in the first partition have already installed the latest version of the software) and may instruct switches that still need to install the new software to install the new software and reboot. In this scenario, upgraded first controller 18A may only instruct switches in the first partition that need to upgrade to the new software to disable ports connected to end hosts EH. For example, end host ports on switches in the first partition that have already installed the latest software version and that do not need to be upgraded may remain enabled while the other switches in the first partition are upgraded, and the switches that have already been upgraded may continue to be used to forward data for end hosts EH.
  • upgraded first (active) controller 18A may provide network configuration information that has been translated to the updated software definitions (e.g., translated while processing step 324 of FIG. 9B) to the switches in the upgraded first partition.
  • upgraded first (active) controller 18A may generate packet forwarding rules such as flow table entries that implement a desired network configuration (e.g., that implement desired network policies or rules) using updated software definitions provided by the new software.
  • Controller 18A may provide the generated flow table entries to the upgraded switches in the first partition.
  • the upgraded switches in the first partition may process and implement the received flow table entries for performing packet forwarding operations (e.g., because the upgraded switches have installed the new software and are thereby capable of handling flow table entries that were generated using any new software definitions) .
  • upgraded first (active) controller 18A may wait for all switches in the upgraded first partition to confirm that the flow table entries (e.g., the flow table entries generated based on the new software definitions) have been successfully implemented. For example, first controller 18A may wait until a response message is received from each upgraded switch in the first partition that indicates that the flow table entries have been successfully implemented on the upgraded switches.
  • upgraded first (active) controller 18A may instruct the upgraded first partition of switches to re-enable ports connected to end hosts EH. For example, upgraded first (active) controller 18A may instruct switch El to enable ports V 1 and P 2 and may instruct switch E3 to re-enable ports P 2 and P 3 .
  • second controller 18B may instruct the second partition of switches to disable ports connected to end hosts EH (e.g., second (active) controller 18B may instruct switch E2 to disable ports P 2 and P 3 connected to end hosts EH1 and EH2 and may instruct switch E4 to disable ports P 2 and P 3 connected to end hosts EH3 and EH4) .
  • End hosts EH may continue to send and receive data packets over the first partition of switches even when the second partition of switches is disconnected from the end hosts (e.g., allowing for uninterrupted data forwarding between end hosts without a noticeable performance reduction) .
  • Steps 342-354 may, for example, be performed while processing steps 206 and 208 of FIG. 8.
  • upgraded first (active) controller 18A may request reassignment of the second partition of switches from second controller 18B.
  • Second controller 18B may transfer control of the second partition of switches to upgraded first (active)
  • second controller 18B may instruct the second partition of switches to re-enable connections with upgraded first controller 18A (e.g., to re-establish respective TCP sessions with first controller 18A) . If desired, second controller 18B may disconnect from the switches in the second partition. Second controller 18B may enter a standby mode (e.g., an idle or inactive mode) after the second partition of switches has been reassigned to upgraded first (active) controller 18A.
  • a standby mode e.g., an idle or inactive mode
  • second (standby) controller 18B may perform upgrade operations on itself by installing the new software (e.g., the software image that was pre-loaded onto second controller 18B while processing step 300 of PIG. 9A) .
  • second controller 18B may reboot (e.g., controller 18B may boot with the new installed software, obtain an IP address, etc . ) .
  • upgraded first (active) controller 18A may instruct the second partition of switches to install the new software stored on the second partition of switches (e.g., the software images pre-loaded onto the switches while processing step 302 of FIG. 9A) .
  • the switches in the second partition may reboot to complete the software installation process .
  • upgraded first controller 18A may optionally determine whether switches in the second partition need to be upgraded (e.g., controller 18A may determine whether any switches in the second partition have already installed the latest version of the software) and may instruct switches that still need to install the new software to install the new software and reboot. In this scenario, upgraded first controller 18A may only instruct switches in the second partition that need to upgrade to the new software to disable ports connected to end hosts EH. For example, end host ports on switches in the second partition that have already installed the latest software version and that do not need to be upgraded may remain enabled while the other switches in the second partition are upgraded, and the switches that have already been upgraded may continue to be used to forward data for end hosts EH.
  • upgraded first (active) controller 18A may instruct the second partition of switches to install the pre-loaded new software and reboot prior to installing the new software on second controller 18B, after installing the new software on second controller 18B, or concurrently with (e.g., simultaneously with or in parallel with) installing the new software on second controller 18B (e.g., step 346 may be performed prior to, after, or concurrently with step 344) .
  • controllers 18 may reduce the time required to upgrade network 100 relative to performing steps 344 and 346 serially, for example.
  • upgraded first (active) controller 18A may provide network configuration information that has been translated to the updated software definitions (e.g., translated while processing step 324 of FIG. 9B) to the switches in the upgraded second partition.
  • upgraded first (active) controller 18A may generate network forwarding rules such as flow table entries that implement a desired network configuration (e.g., that implement desired network policies or rules) using updated software definitions provided by the new software.
  • Controller 18A may provide the generated flow table entries to the upgraded switches in the second partition.
  • the upgraded switches in the second partition may process and implement the received flow table entries for
  • upgraded first (active) controller 18A may instruct the upgraded second partition of switches to re -enable ports connected to end hosts EH.
  • upgraded first (active) controller 18A may instruct switch E2 to enable ports P 2 and P 3 and may instruct switch E4 to re-enable ports P 2 and P 3 .
  • the upgraded switches in the first and second partitions may subsequently be used for forwarding data through network 100.
  • upgraded first (active) controller 18A may instruct the upgraded first and second partitions of switches to re-enable connections between the first and second partitions.
  • upgraded first (active) controller 18A may instruct switch E2 in the second partition to enable port Pi connected to switch El in the first partition, may instruct switch E2 to enable port P 4 connected to switch E3 in the first partition, may
  • upgraded first (active) controller 18A may provide current network topology information associated with network 100 to upgraded second (standby) controller 18B.
  • the current network topology information may be represented using the new software definitions provided by the new installed software.
  • Upgraded first (active) controller 18A may instruct the switches in network 100 (e.g., the first and second partitions) to re-establish connections with upgraded second controller 18B. If desired, upgraded second controller 18B may enter an active mode from the standby mode (e.g., second controller 18B may become an active controller) after the switches have reconnected to second controller 18B. Upgraded second (active) controller 18B may use the current topology information received from upgraded first (active) controller 18A to generate flow table entries for the switches, for example.
  • switches 14 may be connected to both controllers 18A and 18B and network 100 may resume normal data forwarding operations with updated (new) software implemented on controllers 18 and switches 14.
  • upgraded first controller 18A may be used to control packet forwarding through network 100 (e.g., by providing flow table entries to the upgraded switches on the network)
  • second controller 18B may be used to control packet forwarding through the network, or both of
  • controllers 18A and 18B may be used to control packet forwarding through the network.
  • FIG. 9D is merely illustrative.
  • steps 350-354 may be performed in any desired order or in parallel (e.g., step 352 may be performed prior to step 350, step 354 may be performed prior to step 352, step 350 may be performed in parallel with step 352, etc.) .
  • packets may be
  • any increase in the time period required for a packet to traverse the network during the update operation may be limited to less than timeout periods associated with applications running on end hosts EH (less than 3 seconds, for example) .
  • the example of FIGS. 9A-9D in which the switches in network 100 are upgraded in two phases is merely illustrative. If desired, any number of phases may be used to upgrade the switches in network 100. If desired, the switches in network 100 may be partitioned into any desired number of redundant groups that are each upgraded during respective phases.
  • FIG. 10 is an illustrative diagram showing how first controller 18A may generate flow table entries for upgraded switches in network 100 based on stored network topology information and network policy information before and after installing the updated software.
  • a network policy such as network policy 360 may be stored on first controller 18A.
  • the network policy may, for example, be provided by a user of network 100 (e.g., a network administrator) and stored as a portion of network configuration rules 20 (see, e.g., FIG. 1) .
  • policy 360 specifies that end host EH1 as shown in FIG. 6 cannot communicate with end host EH2 (e.g., the network administrator may desire that communication between end hosts EH1 and EH2 be restricted) .
  • Controller 18A may generate flow table entries 362 that implement policy 360 to restrict communications between end hosts EH1 and EH2 (e.g., using information about the topology of network 100 and software definitions provided by software running on controller 18A such as control software 54 as shown in FIG. 2) .
  • the first entry (row) of flow table entries 362 directs a switch in which the flow table entry is
  • IPv4 Internet Protocol Version 4
  • IPv4 source address of end host EH2 e.g., having a header field with the IPv4 source address value IPv4 EH2
  • IPv4 EH i IPv4 source address value
  • Network 100 may be upgraded using new software (e.g., using the steps of FIGS. 8 and 9A-9D) .
  • the new software may configure controllers 18 and switches 14 in network 100 to handle Internet Protocol Version 6 (IPv6) traffic (whereas switches 14 and controllers 18 handled IPv4 traffic without handling IPv6 traffic prior to the software upgrade) .
  • controller 18A may generate flow table entries 364 that implement policy 360 to restrict communications between end hosts EHl and EH2 using information about the topology of network 100 and software definitions provided by the new software installed on controller 18A during the upgrade process.
  • the first entry (row) of flow table entries 364 directs a switch in which the flow table entry is
  • IPv6 Internet Protocol Version 6
  • IPv6 source address of end host EH2 e.g., having header fields with the IPv6 source address value IPv6 EH2
  • IPv6 EH2 IPv6 source address value
  • the second row of flow table entries 362 directs a switch in which the flow table entry is operating to drop packets having headers with the IPv6 destination address value IPv6 EH2 a.nd the IPv6 source address value IPv6 EH i .
  • packets may be generated by end host EH1 with a source address value IPV6 EHI and a
  • an additive software upgrade is performed on network 100 in which the new software definitions add IPv6 source and destination header fields to the flow tables generated by controller 18 without removing other header fields generated using the previous software definitions (e.g., the IPv4 fields).
  • switches 14 may be upgraded to handle IPv6 traffic without losing forwarding functionality for IPv4 packets as specified by the previous software definitions.
  • the software upgrades performed by network 100 may be additive or map previous software definitions to updated software definitions without removing or deleting any previous software definitions in order to ensure an uninterrupted (e.g., "hit-less") upgrade process.
  • FIG. 10 is merely illustrative. If desired, the software upgrade operations may update any desired software definitions implemented by controllers 18 and switches 14.
  • a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches includes with the first controller, communicating with the second controller to perform a software upgrade operation on the network, the switches in the network forward network traffic between the end hosts during the software upgrade operation.
  • the method includes with the first controller, electing a selected one of the first and second controllers as an active controller by communicating with the second controller .
  • the method includes with the second controller, identifying first and second redundant partitions of switches in the network, each of the end hosts is coupled to the first redundant partition of switches and each of the end hosts is coupled to the second redundant partitions of switches.
  • the method includes with at least one of the first and second controllers, loading software onto the first and second redundant partitions of switches.
  • the method includes with the first controller, instructing the first redundant partition of switches to install the loaded software, and with the second redundant partition of switches, forwarding the network traffic between the end hosts while the first redundant partition of switches installs the loaded software.
  • the method includes with the first controller, instructing the second redundant partition of switches to install the loaded software, and with the first redundant partition of switches, forwarding the network traffic between the end hosts while the second redundant partition of switches installs the loaded software .
  • the method includes with the second controller, instructing each of the switches in the first and second redundant partitions of switches to disable a respective connection with the first controller.
  • the method includes with the first controller, installing the software on the first controller after each of the switches in the first and second redundant partitions of switches have disabled the respective connections with the first controller.
  • the method includes with the second controller, instructing the first redundant partition of switches to enable the disabled connections between the first redundant partition of switches and the first controller, and with the first controller, instructing the first redundant partition of switches to install the loaded software after the disabled connections between the first redundant partition of switches and the first controller have been enabled.
  • the method includes with the second controller, instructing the second redundant partition of switches to enable the disabled connections between the second redundant
  • partition of switches and the first controller and with the first controller, instructing the second redundant partition of switches to install the loaded software after the disabled connections between the second redundant partition of switches and the first controller have been enabled.
  • the method includes with the second controller, installing the software while the second redundant partition of switches installs the loaded software .
  • the method includes with the first controller, receiving network topology information identifying connections in the network from the second controller, with the first controller, installing a software image that specifies updated software definitions for the network, and with the first controller, translating the received network topology information to the updated software definitions specified by the installed software image.
  • the method includes with the first controller, generating flow table entries based on the translated network topology information, and with the first controller, providing the flow table entries to the switches.
  • the switches in the network forward network traffic between the end hosts over network paths and the first controller provides the flow table entries to the switches over control paths .
  • a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches the method is provided that includes with the first and second controllers,
  • the switches partitioning the switches into first and second sets of switches, the first set of switches is connected to each of the end hosts and the second set of switches is connected to each of the end hosts, and with at least one of the first and second controllers, instructing the switches to disable network connections between the first and second sets of switches.
  • the method includes with at least one of the first and second controllers, providing software to the first and second sets of switches, with the second controller, assigning control of the first set of switches to the first
  • controller with the first controller, instructing the first set of switches to install the software
  • second controller assigning control of the second set of switches to the first controller
  • first controller instructing the second set of switches to install the software after the first set of switches has installed the software
  • the method includes with the second set of switches,
  • the method includes with the first controller, installing the software prior to instructing the first set of switches to install the software, and with the second controller, installing the software after the first set of switches has installed the software.
  • the method includes with the first controller, instructing the first set of switches to disable ports connected to the end hosts prior to installing the software on the first set of switches, and with the first controller,
  • a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches includes with at least one of the first and second controllers, identifying at least first and second redundant groups of switches in the network, with the first controller, instructing the first redundant group of switches in the network to perform software upgrade operations, and with the first controller, instructing the second redundant group of switches in the network to perform software upgrade operations after the first redundant group of switches has completed the software upgrade operations .
  • the method includes with the second controller, instructing the first and second redundant groups of switches to disable network connections between the first and second redundant groups of switches .
  • the method includes with the first redundant group of
  • switches forwarding network packets between the end hosts while the second redundant group of switches performs the software upgrade operations, and with the second redundant group of switches, forwarding the network packets between the end hosts while the second redundant group of switches performs the software upgrade operations .
  • the method includes with the first controller, identifying network topology information associated with the network, with the first controller, generating packet forwarding rules based on the identified network topology
  • the first controller providing the packet forwarding rules to the switches, with the first controller, receiving a software image and installing the received software image, with the first controller, generating additional packet forwarding rules based on the installed software image, and with the first controller, providing the additional packet forwarding rules to the first redundant group of switches after the first

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

First and second controllers implemented on computing equipment may be used to control switches in a network. The switches may forward network packets between end hosts. The second controller may identify first and second redundant partitions of switches in the network that are each coupled to all of the end hosts. The first controller may instruct the first partition to install software while the second partition forwards network traffic and may instruct the second partition to install software while the first partition forwards network traffic. The first controller may install the software while the second controller is active and the second controller may install the software while the first controller is active. In this way, the switches and controllers may be provided with an uninterrupted software upgrade and packets may be forwarded between end hosts during the software upgrade without introducing packet loss or other noticeable reductions in network performance.

Description

SYSTEMS AND METHODS FOR PERFORMING UNINTERRUPTED NETWORK UPGRADES WITH CONTROLLERS
This application claims priority to US Patent Application No. 14/337,193 filed on July 21, 2014, which is hereby incorporated by reference herein in its
entiret .
Background
This relates to communication networks, and more particularly, to communications networks having network switches that are controlled by a controller.
Packet -based networks such as the Internet and local data networks that are connected to the internet include network switches. Network switches are used in forwarding packets from packet sources to packet
destinations. The packets may be sometimes referred to as frames. For example, data is forwarded over layer 2 of the Open Systems Interconnection (OSI) model as frames (e.g., Ethernet frames) , whereas data is forwarded over layer 3 of the OSI model as packets (e.g., Internet
Protocol packets) .
It can be difficult or impossible to configure the switches of one vendor using the equipment of another vendor. This is because the switch equipment of one vendor may use a different operating system and set of control procedures than the switch equipment of another vendor. To address the challenges associated with controlling different types of switch platforms, cross- platform protocols have been developed. These protocols allow centralized control of otherwise incompatible switches .
Cross-platform controller clients can be included on the switches in a network. The controller clients are able to communicate with a corresponding controller server over network paths. Because the controller clients can be implemented on a variety of switch hardware, it is possible for a single controller to control switch equipment that might otherwise be
incompatible .
Over time, software that is implemented by the switches and controller servers on the network may need to be updated to a newer version of the software. In order to update software running on the network, the controller and switches need to be rebooted to complete installation of the updated software. If care is not taken, rebooting the switches and/or controller can cause interruptions to data forwarding services provided by the network. It may therefore be desirable to be able to provide improved systems and methods for updating software on
communications networks. Summary
First and second controllers implemented on computing equipment may be used to control switches in a network (e.g., by providing control messages that include packet forwarding rules such as flow table entries to the switches over control paths) . The switches may be connected to end hosts and may forward network data packets between the end hosts.
The first controller may communicate with the second controller to perform a software upgrade operation on the network. The switches in the network may forward network traffic between the end hosts during the software upgrade operation. The second controller may identify at least first and second redundant partitions of switches in the network that are each coupled to all of the end hosts. At least one of the first and second controllers may load (e.g., pre-load) software (e.g., updated, upgraded, or new software) onto the first and second redundant partitions (e.g., first and second redundant groups or sets) of switches .
The first controller may instruct the first redundant partition of switches to install the loaded software and the second redundant partition of switches may continue to forward network traffic (e.g., network data packets) between the end hosts while the first redundant partition of switches installs the loaded software. The first controller may instruct the second redundant partition of switches to install the loaded software after the first redundant partition has completed installation of the loaded software. The first redundant partition of switches may continue to forward network traffic between the end hosts while the second redundant partition of switches installs the loaded software.
If desired, the second controller may instruct the first and second redundant partitions of switches to disable connections between the first and second redundant partitions. If desired, the second controller may instruct each of the switches in the first and second redundant partitions of switches to disable a respective connection with the first controller and the first controller may install the software on the first
controller after each of the switches in the first and second redundant partitions of switches have disabled the respective connections with the first controller.
The second controller may instruct the first redundant partition of switches to enable (e.g., re- enable) the disabled connections between the first redundant partition of switches and the first controller prior to instructing the first redundant partition of switches to install the loaded software using the first controller. The second controller may instruct the second redundant partition of switches to enable the disabled connections between the second redundant partition of switches and the first controller prior to instructing the second redundant partition of switches to install the loaded software using the first controller. If desired, the second controller may install the software while the second redundant partition of switches installs the loaded software .
The first controller may receive network topology information identifying connections in the network from the second controller and may translate the received network topology information to updated software definitions specified by the installed (updated) software. The first controller may generate network forwarding rules such as flow table entries based on the network topology information and may provide the flow table entries to the switches for performing data forwarding through the network. After performing the software upgrade, the first controller may generate additional network forwarding rules such as additional flow table entries using the translated network topology information (e.g., the network topology information translated using the updated software definitions) and may provide the additional flow table entries to the switches after the switches have installed the upgraded software. The switches may process the additional flow table entries and may forward data traffic through the network using the received additional flow table entries .
By performing the software upgrade operations on one controller at a time and one redundant partition of switches at a time, packets may be forwarded between end hosts during the software upgrade operations without a noticeable reduction in network forwarding performance (e.g., without a level of packet loss that is detectable by a user of the end hosts) .
Further features of the present invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description.
Brief Description of the Drawings
FIG. 1 is a diagram of an illustrative network that includes a controller and a packet forwarding system in accordance with an embodiment of the present invention.
FIG. 2 is a diagram of a controller server and controller client that may communicate over a network connection in accordance with an embodiment of the present invention.
FIG. 3 is a diagram of an illustrative flow table of the type that may be used by a packet processing system in accordance with an embodiment of the present invention.
FIG. 4 is a diagram of an illustrative flow table of the type that may be used by a packet processing system showing three illustrative types of packet
forwarding that may be performed based on the flow table entries of the flow table in accordance with an embodiment of the present invention.
FIG. 5 is a flow chart of illustrative steps involved in processing packets in a packet processing system in accordance with an embodiment of the present invention .
FIG. 6 is a diagram of an illustrative network having switches that may be controlled by multiple controllers to perform software upgrade operations in accordance with an embodiment of the present invention.
FIG. 7 is a diagram of an illustrative rack- based system that implements a network having switches that may be controlled by multiple controllers to perform software upgrade operations in accordance with an
embodiment of the present invention.
FIG. 8 is a flow chart of illustrative steps involved in upgrading software on a network using multiple controllers without data forwarding interruptions in accordance with an embodiment of the present invention.
FIGS. 9A-9D is a flow chart of illustrative steps that may be performed by first and second
controllers for partitioning a network having redundant connections and performing software upgrade operations on the network without data forwarding interruptions in accordance with an embodiment of the present invention.
FIG. 10 is a diagram of illustrative flow table entries that may be generated using a network policy before and after upgrading software on the network in accordance with an embodiment of the present invention.
Detailed Description
Networks such as the internet and the local and regional networks that are coupled to the internet rely on packet-based switches. These switches, which are
sometimes referred to herein as network switches, packet processing systems, or packet forwarding systems can forward packets based on address information. In this way, data packets that are transmitted by a packet source may be delivered to a packet destination. In network terms, packet sources and destinations are sometimes referred to as end hosts. Examples of end hosts are personal computers, servers, and other computing equipment such as portable electronic devices that access the network using wired or wireless technologies.
Network switches range in capability from relatively small Ethernet switches and wireless access points to large rack-based systems that include multiple line cards, redundant power supplies, and supervisor capabilities. It is not uncommon for networks to include equipment from multiple vendors. Network switches from different vendors can be interconnected to form a packet forwarding network, but can be difficult to manage in a centralized fashion due to incompatibilities between their operating systems and control protocols.
These potential incompatibilities can be overcome by incorporating a common cross -platform control module (sometimes referred to herein as a controller client) into each network switch. A centralized cross- platform controller such as a controller server or distributed controller server may interact with each of the control clients over respective network links. The use of a cross-platform controller and corresponding controller clients allows potentially disparate network switch equipment to be centrally managed.
With one illustrative configuration, which is sometimes described herein as an example, centralized control is provided by one or more controller servers such as controller server 18 of FIG. 1. Controller server 18 may be implemented on a stand-alone computer, on a cluster of computers, on a set of computers that are distributed among multiple locations, on hardware that is embedded within a network switch, or on other suitable computing equipment 12. Controller server 18 can run as a single process on a single computer or can be distributed over several hosts for redundancy. The use of a distributed arrangement may help provide network 10 with resiliency against unexpected network partitions (e.g., a situation in which a network link between two campuses is
disrupted) .
In distributed controller arrangements, controller nodes can exchange information using an intra- controller protocol. For example, if a new end host connects to network hardware (e.g., a switch) that is only connected to a first controller node, that first
controller node may use the intra-controller protocol to inform other controller nodes of the presence of the new end host . If desired, a switch or other network component may be connected to multiple controller nodes (e.g., two or more controllers) . Arrangements in which first and second controller servers are used to control a network of associated switches are sometimes described herein as an example .
A given controller server such as controller server 18 as shown in FIG. 1 may gather information about the topology of network 10. For example, controller server 18 may send Link Layer Discovery Protocol (LLDP) probe packets through the network to discover the topology of network 10. Controller server 18 may use information on network topology and information on the capabilities of network equipment to determine appropriate paths for packets flowing through the network. Once appropriate paths have been identified, controller server 18 may send corresponding settings data to the hardware in network 10 to ensure that packets flow through the network as desired. Network configuration operations such as these may be performed during system setup operations,
continuously in the background, or in response to the appearance of newly transmitted data packets (i.e., packets for which a preexisting path has not been
established) .
Controller server 18 may be used to implement network configuration rules 20. Rules 20 may specify which services are available to various network entities. As an example, rules 20 may specify which users (or type of users) in network 10 may access a particular server. As another example, rules 20 may include policies
restricting communication between particular end hosts in network 10. Rules 20 may, for example, be maintained in a database at computing equipment 12.
Controller server 18 and controller clients 30 at respective network switches 14 may use network protocol stacks to communicate over network links 16. Each switch (e.g., each packet forwarding system) 14 may have input-output ports 34 (sometimes referred to as network switch interfaces) . Cables may be used to connect pieces of equipment to ports 34. For example, end hosts such as personal computers, web servers, and other computing equipment may be plugged into ports 34. Ports 34 may also be used to connect one of switches 14 to other switches 14.
Packet processing circuitry 32 may be used in forwarding packets from one of ports 34 to another of ports 34 and may be used in performing other suitable actions on incoming packets. Packet processing circuit 32 may be implemented using one or more integrated circuits such as dedicated high-speed switch circuits and may serve as a hardware data path. If desired, packet processing software 26 that is running on control unit 24 may be used in implementing a software data path.
Control unit 24 may include processing and memory circuits (e.g., one or more microprocessors, memory chips, and other control circuitry) for storing and running control software. For example, control unit 24 may store and run software such as packet processing software 26, may store flow table 28, and may be used to support the operation of controller clients 30.
Controller clients 30 and controller server 18 may be compliant with a network switch protocol such as the OpenFlow protocol (see, e.g., OpenFlow Switch
Specification version 1.0.0, 1.3.1, or other versions of the OpenFlow protocol) . One or more clients among controller clients 30 may also be compliant with other protocols (e.g., the Simple Network Management Protocol) . Using the OpenFlow protocol or other suitable protocols, controller server 18 may provide controller clients 30 with data that determines how switch 14 is to process incoming packets from input-output ports 34.
With one suitable arrangement, flow table data from controller server 18 may be stored in a flow table such as flow table 28. The entries of flow table 28 may be used in configuring switch 14 (e.g., the functions of packet processing circuitry 32 and/or packet processing software 26) . In a typical scenario, flow table 28 serves as cache storage for flow table entries and a
corresponding version of these flow table entries is embedded within the settings maintained by the circuitry of packet processing circuitry 32. This is, however, merely illustrative. Flow table 28 may serve as the exclusive storage for flow table entries in switch 14 or may be omitted in favor of flow table storage resources within packet processing circuitry 32. In general, flow table entries may be stored using any suitable data structures (e.g., one or more tables, lists, etc.) . For clarity, the data of flow table 28 (whether maintained in a database in control unit 24 or embedded within the configuration of packet processing circuitry 32) is referred to herein as forming flow table entries (e.g., rows in flow table 28) .
The example of flow tables 28 storing data that determines how switch 14 is to process incoming packets are merely illustrative. If desired, any packet
forwarding decision engine may be used in place of or in addition to flow tables 28 to assist packet forwarding system 14 to make decisions about how to forward network packets. As an example, packet forwarding decision engines may direct packet forwarding system 14 to forward network packets to predetermined ports based on attributes of the network packets (e.g., based on network protocol headers) .
Any desired switch may be provided with controller clients that communicate with and are
controlled by a controller server. For example, switch 14 may be implemented using a general purpose processing platform that runs control software and that omits packet processing circuitry 32. As another example, switch 14 may be implemented using control circuitry that is coupled to one or more high-speed switching integrated circuits ("switch ICs") . As yet another example, switch 14 may be implemented as a line card in a rack-based system having multiple line cards each with its own packet processing circuitry. The controller server may, if desired, be implemented on one or more line cards in the rack-based system, in another rack-based system, or on other
computing equipment that is coupled to the network.
As shown in PIG. 2, controller server 18 and controller client 30 may communicate over network path 66 using network protocol stacks such as network protocol stack 58 and network protocol stack 60. Stacks 58 and 60 may be, for example Linux TCP/IP stacks or the TCP/IP stack in the VxWorks operating system (as examples) . Path 66 may be, for example, a path that supports a network connection between switch 14 and external equipment (e.g., network path 16 of FIG. 1) or may be a backbone path in a rack-based system. Arrangements in which path 66 is a network path such as path 16 are sometimes described herein as an example .
Control protocol stack 56 serves as an interface between network protocol stack 58 and control software 54. Control protocol stack 62 serves as an interface between network protocol stack 60 and control software 64. During operation, when controller server 18 is communicating with controller client 30, control protocol stacks 56 generate and parse control protocol messages (e.g., control messages to activate a port or to install a particular flow table entry into flow table 28) . By using
arrangements of the type shown in FIG. 2, a network connection is formed over the link between controller server 18 and controller client 30. Controller server 18 and controller client 30 can communicate using a
Transmission Control Protocol (TCP) or User Datagram Protocol (UDP) over Internet Protocol (IP) network connection. Examples of control protocols that may be used when communicating between controller server 18 and controller clients 30 over the network connection include S MP and OpenFlow protocol stack version 1.0.0 (as examples) .
Flow table 28 contains flow table entries (e.g., rows in the table) that have multiple fields (sometimes referred to as header fields) . The fields in a packet that has been received by switch 14 can be compared to the fields in the flow table. Each flow table entry may have associated actions. When there is a match between the fields in a packet and the fields in a flow table entry, the corresponding action for that flow table entry may be taken .
An illustrative flow table is shown in FIG. 3. As shown in FIG. 3, table 28 may have flow table entries (rows) 68. Each flow table entry may be associated with header 70, action 72, and statistics 74. Headers 70 may each include multiple header fields 76. The action in each flow table entry indicates what action switch 14 is to perform on the packet when a match is detected between the fields in the packet and the corresponding fields in the header of that flow table entry. Switch 14 may maintain statistical data (counter values) in the
statistics portion of flow table 28 that can be queried by- controller server 18 when it is desired to obtain
information on the performance of switch 1 .
The header fields in header 70 (and the corresponding fields in each incoming packet) may include the following fields: ingress port (i.e., the identity of the physical port in switch 14 through which the packet is being received), Ethernet source address, Ethernet
destination address, Ethernet type, virtual local area network (VLAN) identification (sometimes referred to as a VLAN tag), VLAN priority, IP source address, IP
destination address, IP protocol, IP ToS (type of service) bits, Transport source port / Internet Control Message Protocol (ICMP) Type (sometimes referred to as source TCP port) , and Transport destination port / ICMP Code
(sometimes referred to as destination TCP port) . Other fields may be used if desired. For example, a network protocol field and a protocol port field may be used.
Each flow table entry (flow entry) is associated with zero or more actions that dictate how the switch handles matching packets. If no forward actions are present, the packet is preferably dropped. The actions that may be taken by switch 14 when a match is detected between packet fields and the header fields in a flow table entry may include the following actions : forward (e.g., ALL to send the packet out on all interfaces, not including the incoming interface, CONTROLLER to
encapsulate and send the packet to the controller server, LOCAL to send the packet to the local networking stack of the switch, TABLE to perform actions in flow table 28, IN_PORT to send the packet out of the input port , NORMAL to process the packet with a default forwarding path that is supported by the switch using, for example, traditional level 2, VLAN, and level 3 processing, and FLOOD to flood the packet along the minimum forwarding tree, not
including the incoming interface) . Additional actions that may be taken by switch 14 include: an enqueue action to forward a packet through a queue attached to a port and a drop action (e.g., to drop a packet that matches a flow table entry with no specified action) . Modify-field actions may also be supported by switch 14. Examples of modify-field actions that may be taken include: Set VLAN ID, Set VLAN priority, Strip VLAN header, Modify VLAN tag, Modify Ethernet source MAC (Media Access Control) address, Modify Ethernet destination MAC address, Modify IPv4 source address, Modify IPv4 ToS bits, Modify transport destination port. The modify-field actions may be used in rewriting portions of network packets that match the flow table entry.
FIG. 4 is an illustrative flow table having three flow table entries. The entries include fields with wildcards (e.g., "*" symbols) . When a wildcard is present in a particular field, all incoming packets will be considered to form a "match" with respect to the field, regardless of the particular value of the field in the incoming packet. Additional fields may match additional packet information (e.g., packet header information of network packets) .
The entry of the first row of the FIG. 4 table directs the switch in which the flow table entry is operating to perform Ethernet switching. In particular, incoming packets with matching Ethernet destination addresses are forwarded to port 3.
The entry of the second row of table of FIG. 4 illustrates how a switch may be configured to perform internet routing (i.e., packets are forwarded based on their destination IP address) .
The third row of the table of FIG. 4 contains an entry that illustrates how a switch may be configured to perform firewalling. When a packet is received that has a destination IP port value of 80, that packet is dropped (i.e., the switch is configured to serve as a firewall that blocks port 80 traffic) .
Flow table entries of the type shown in FIG. 4 may be loaded into a switch 14 by controller server 18 during system setup operations or may be provided to a switch 14 from controller server 18 in real time in response to receipt and processing of packets at
controller server 18 from switches such as switch 14. In a network with numerous switches 14, each switch can be provided with appropriate flow table entries to form a path through the network.
Illustrative steps that may be performed by switch 14 in processing packets that are received on input -output ports 34 are shown in FIG. 5. At step 78, switch 14 receives a packet on one of its ports (e.g., one of input -output ports 34 of FIG. 1) .
At step 80, switch 14 compares the fields of the received packet to the fields of the flow table entries in the flow table 28 of that switch to determine whether there is a match. Some fields in a flow table entry may contain complete values (e.g., complete addresses) . Other fields may contain wildcards (i.e., fields marked with the "don't care" wildcard character of "*") . Yet other fields may have partially complete entries (e.g., a partial address that is partially wildcarded) . Some fields may use ranges (e.g., by restricting a TCP port number to a value between 1 and 4096) and in effect use the range to implement a type of partial wildearding. In making field- by-field comparisons between the received packet and the flow table entries, switch 14 can take into account whether or not each field in the flow table entry contains a complete value without any wildcarding, a partial value with wildcarding, or a wildcard character (i.e., a completely wildcarded field) .
If it is determined during the operations of step 80 that there is no match between the fields of the packet and the corresponding fields of the flow table entries, switch 14 may send the packet to controller server 18 over link 16 (step 84) .
If it is determined during the operations of step 80 that there is a match between the packet and a flow table entry, switch 14 may perform the action that is associated with that flow table entry and may update the counter value in the statistics field of that flow table entry (step 82) . Processing may then loop back to step 78, so that another packet may be processed by switch 14, as indicated by line 86.
FIG. 6 is a diagram of an illustrative network 100 in which switches may be controlled by controllers 18 (e.g., a first controller 18A and a second controller 18B) . Controllers 18A and 18B may each be a controller server or a distributed controller implemented across multiple computing devices. In another suitable
arrangement, controllers 18A and 18B may be formed on shared computing equipment. As shown in FIG. 6, network 100 may include switches such as switches CI, C2 , El, E2, E3 , and E4. Controllers 18A and 18B may each be coupled to the switches of network 100 via control paths 66 (e.g., each switch in network 100 may be connected to both controllers 18A and 18B via control paths 66) . Controllers 18A and 18B may control the switches using control paths 66 (e.g., by providing control messages such as control messages that include flow table entries 68 of FIG. 3) . Controllers 18A and 18B may communicate with each other over path 67 (e.g., for coordinating software upgrade operations , for sharing network topology
information, for coordinating which of the controllers is to actively control the switches on the network at any given time, etc.) .
Network 100 may include end hosts such as end hosts EH1, EH2, EH3 , and EH4 that are coupled to the switches of network 100. Switches that are directly coupled to end hosts may sometimes be referred to as edge switches, whereas switches that merely interconnect other switches and are not directly coupled to the end hosts may be referred to as core switches. In the example of FIG. 6, switches El, E2 , E3 , and E , are edge switches, because they are coupled to end hosts. Switches CI and C2 are core switches, because switches CI and C2 interconnect switches El, E2 , E3, and E4 and are not directly coupled to end hosts. Core switches such as switches CI and C2 may couple network 100 to other networks 102 (e.g., other networks including switches and end hosts) . If desired, switches of the same rack may be coupled by intra-rack paths. In the example of FIG. 6, switches El, E2, E3 , and E4 are coupled by paths 65.
Switches 14 in network 100 may be coupled to other switches 14 and end hosts EH through ports P (e.g., ports such as input -output ports 34 as shown in FIG. 1) . As shown in the example of FIG. 6, a first edge switch El may forward data (e.g., network data packets) to and from end host EH1 via a first port Pi, may forward data to and from end host EH2 via a second port P2, may forward data to and from a second edge switch E2 via a third port P3 and a corresponding communications path 65, may forward data to and from core switch C2 via a fourth port P4, and forward data to and from core switch CI via fifth port P5. Second edge switch E2 may forward data to and from end host EHl via a corresponding port P2, may forward data to and from edge switch El via a corresponding port Plf etc.
The example of FIG. 6 in which edge switches are directly coupled to core switches are merely illustrative. If desired, additional switches may be interposed between the edge and core switches. In general, network 100 may include at least two controllers 18 (e.g., network 100 may include two controllers, three controllers, four
controllers, or any other desired number of controllers) . In general, there may be any desired number of end hosts, edge switches, core switches, and controllers implemented in network 100.
FIG. 7 is an illustrative example of network 100 of FIG. 6 that is implemented using rack-based systems. As shown in FIG. 7, edge switches and end hosts may be implemented using network racks 110 and 112 that are coupled to switches 114 (e.g., core switches as shown in FIG. 7). If desired, network 100 may include additional network racks that house additional end hosts and switches and that are coupled to core switches 114. Network rack 110 may include edge switches El and E2 and end hosts EHl and EH2 , whereas network rack 112 may include edge switches E3 and E4 and end hosts EH3 and EH4. Edge switches El, E2 , E3 , and E4 may serve as top-of-rack switches that are coupled via network paths to each end host of the corresponding network rack 112. For example, top-of-rack switch E3 is connected to each of the end hosts of network 112 (e.g., end hosts EH3 and EH4) . Each top-of-rack switch serves as an interface between end hosts of the corresponding network rack and other network devices such as other portions of network 100 or other networks 102. Network traffic to or from end hosts of network rack 110 may be required to traverse at least one of the top-of-rack switches of network rack 110 (e.g., top-of-rack switches El and E2) . Similarly, network traffic of network rack 112 may be required to traverse at least one of switches E3 and E . As an example, network packets sent by end host EH1 to end host EH3 may be forwarded by top-of-rack switch El, core switch CI, and top-of-rack switch E3. As another example, network packets sent by end host EH1 to end host EH3 may be forwarded by top-of-rack switch E2 , core switch CI, and top-of-rack switch E4.
As shown in FIG. 7, controller 18A may be implemented in network rack 110 (e.g., using the resources of a line card or other computing equipment of network rack 110) . Controller 18A may communicate with the top- of-rack switches and core switches by sending control packets and receiving control plane packets from the switches. In this scenario, one or more switches of network 100 may form portions of control paths 66 of FIG. 6. For example, switch El or switch E2 may serve as part of control paths between core switches CI and C2 and controller 18A. As another example, switches El, E2 , CI, C2 , and C3 may form portions of control paths between controller 18 and switches E3 and E4.
Controller 18B may be implemented in network rack 112 (e.g., using the resources of a line card or other computing equipment of network rack 112) .
Controller 18B may communicate with the top-of-rack switches and core switches by sending control packets and receiving control plane packets from the switches. This example is merely illustrative. If desired, controller 18B and controller 18A may both be formed on rack 110, may both be formed on rack 112, or one or both of controllers 18A and 18B may be formed on additional network racks (not shown) .
Edge switches such as El, E2 , E3 , and E4 that are coupled to multiple end hosts are sometimes referred to as leaf switches. For example, top-of-rack switches in a rack-based system are sometimes referred to as leaf switches. Switches 114 that are coupled to each of the leaf switches are sometimes referred to as spine switches. Spine switches may be core switches that are not connected to any end hosts (e.g., as shown in FIG. 7) or may have one or more ports that are connected to end hosts. The example of FIG. 7 is merely illustrative. If desired, racks 110 and 112 may include any desired number of leaf switches, end hosts, and controllers. Network 100 may include any desired number of network racks.
Software may be implemented on controllers 18A and 18B and switches 14 in network 100 for performing and controlling data forwarding through the network. Software running on network 100 may include, for example, packet processing software 26 implemented on switches 14 (as shown in FIG. 1) , control software 54 implemented on controller 18 (as shown in FIG. 2), control software 64 implemented on switches 14, software for generating and implementing flow table entries based on desired network rules or policies, or any other desired software running on controllers 18 and/or switches 14 (e.g., operating system software, forwarding software, control software, etc . ) . Over time, software implemented on network 100 may need to updated or upgraded (e.g., to a latest software version or build, to incorporate additions or changes to the functionality of network 100, to implement updated or new communications protocols, etc.) . In order to update the software running on network 100, switches 14 and/or controllers 18 may obtain new software (e.g., updated or upgraded software) from an external source (e.g., provided by a user or network administrator, received over other networks 102, etc.). The software may be, for example, a software image or other information for configuring switches 14 and controller 18. Switches 14 and controllers 18 may install the updated software and may subsequently use the updated software for performing data forwarding operations through the network. In order to properly implement the updated software, switches 14 and controllers 18 typically need to be temporarily disabled (e.g., rebooted) after installation of the updated software. If care is not taken, rebooting switches 14 and/or controller 18 may interrupt or delay data forwarding through network 100 (e.g., rebooting switches and controllers on network 100 may cause
undesirable packet loss) .
As an example, consider a scenario in which switches El and E2 as shown in FIG. 6 simultaneously reboot after installing new software. In this scenario, end hosts EH1 and EH2 are simultaneously disconnected from network 100 while rebooting and are unable to communicate with the rest of the network while switches El and E2 reboot. This interruption may be noticeable and
objectionable to a user of end hosts EH1 or EH2.
Interruptions to the network caused by the software update operations may generate a network performance reduction (e.g., packet loss) or network performance "hit" that is noticeable to a user of end hosts EH. A noticeable network hit may be defined herein as any increase in the time required to forward a packet from a packet source to a packet destination through network 100 that exceeds a timeout period associated with applications running on end hosts EH (e.g., any time greater than an application timeout period of approximately 3-5 seconds, greater than an application timeout period of approximately 30 seconds, etc.) . It may therefore be desirable to be able to provide improved systems and methods for upgrading software implemented on communications network 100.
If desired, controllers 18A and 18B may actively manage upgrade operations for network 100 so that any performance reduction caused by the upgrade operations are unnoticeable or "hit-less" to a user of the network. For example, controllers 18A and 18B may utilize connection redundancy in network 100 to ensure that end hosts EH are always connected to network 100 as switches 14 install updated software and to mitigate the effects of any performance loss resulting from the upgrade process.
As shown in FIG. 6, each end host EH may be connected to at least two different edge switches and each edge switch is connected to every core switch in network 100. In this way, each end host EH may be redundantly connected to network 100 (e.g., so that if one of the edge switches connected to a particular end host needs to reboot, another edge switch remains connected to that end host for forwarding data packets between that end host and other end hosts in network 100) . By forming network 100 with at least two controllers 18 (e.g., with a first controller 18A and a second controller 18B) , a given one of the controllers can control (manage) data flow through network 100 while the other controller (s) reboots to install upgraded software. By coordinating upgrade operations on network 100, controllers 18A and 18B may minimize any reduction in data forwarding performance generated by the upgrade process.
FIG. 8 is a flow chart of illustrative steps that may be performed by controllers such as controllers 18 for performing uninterrupted (seamless) software upgrade operations on the network (e.g., upgrade
operations that do not noticeably impact the performance of the network in forwarding data between end hosts) . The steps of FIG. 8 are described in connection with the example of FIG. 6 for performing upgrade operations using two controllers 18Ά and 18B on switches 14 in network 100. This is merely illustrative and does not serve to limit the scope of the present invention. If desired, the steps of FIG. 8 may be performed using any desired
communications network having any desired number and arrangement of controllers, switches, and end hosts.
At step 200, controller 18A and/or controller
18B
may partition network 100 into redundant first and second partitions of switches. Controllers 18 may identify different groups (sets) of respective switches that are each connected to all of the end hosts EH in the network. In the example of FIG. 6, controllers 18 may identify a first redundant partition of switches (sometimes referred to herein as a partition of switches, a redundant set of switches, a set of switches, a redundant group of
switches, or a group of switches) that includes the switches El, E3 , and CI (i.e., the shaded switches shown in FIG. 6) , and a second redundant partition of switches that includes switches E2 , C2, and E4 (i.e., the unshaded switches shown in FIG. 6) . The first and second
partitions of switches shown in FIG. 6 are each coupled to all of the end hosts EH in network 100 via network paths that are not formed as a part of the other partition of switches (e.g., the first partition of switches is coupled to all of end hosts EHl over paths that are not a part of the second partition and the second partition of switches is coupled to all of end hosts EHl over paths that are not a part of the first partition) , thereby providing network redundancy for each partition of switches.
For example, end host EHl of FIG. 6 is coupled to the first (shaded) partition via port Pi on edge switch El and is coupled to the second (unshaded) partition via port P2 on edge switch E2 , end host EH2 is coupled to the first partition via port P2 on switch El and is coupled to the second partition via port P3 on switch E2 , end host EH4 is coupled to the first partition via port P2 on switch E3 and is coupled to the second partition via port P2 on switch E4, etc. If desired, controllers 18 may identify these redundant partitions of switches based on the gathered topology of network 100 and may use the
identified partitions for performing uninterrupted
software upgrade operations on the network. In other words, controllers 18 may partition (group) the switches in a manner such that each end host is able to communicate with every other end host in network 100 thr'ough each of the partitions.
For example, end host EHl may communicate with end host EH2 either through the first partition (e.g. , edge switch El may forward a packet received from end host EHl via port Pi to end host EH2 via port P2) or through the second partition (e.g., edge switch E2 may forward a packet received from end host EHl via port P2 to end host EH2 via port P3) . This example is merely illustrative. If desired, controllers 18 may partition the switches in network 100 into any number of redundant sets (partitions) based on the connections between end hosts EH and switches 14 in the network (e.g., controllers 18 may group the switches into three partitions in scenarios where each end host is connected to at least three edge switches, may group the switches into four partitions in scenarios where each end host is connected to at least four edge switches, etc . ) .
At step 202, first controller 18A may perform upgrade operations on itself by installing new (updated) software. For example, first controller 18A may obtain new software from an external source, may install the new software, and may reboot to implement the new software. While first controller 18A is installing the new software and rebooting, controller 18A may be in a standby (idle) mode in which controller 18A does not control switches 14 in network 100 (e.g., TCP connections with the switches may be disconnected or dropped) . Controller 18B may be active and may control data forwarding through network 100 while controller 18A is idle, thereby preventing
noticeable reduction in data forwarding performance in network 100.
At step 204, second controller 18B may transfer control of the first redundant partition of switches
(e.g., switches El, CI, and E3 of FIG. 6) to upgraded first controller 18A (e.g., the first controller 18A after controller 18A installs and implements the updated
software) . Upgraded first controller 18A may instruct the switches in the first partition to install the new
software. For example, upgraded controller 18A may instruct switches El, CI, and E3 in the first partition to install the updated software and to reboot.
Controller 18B may be active and may manage (e.g., control) data forwarding using the second partition of switches while the first partition of switches installs the new software. Switches in the second partition may forward data between each end host EH while the first partition of switches installs the new software. If desired, after the first partition of switches has been upgraded (e.g., after the first partition has installed the new software and rebooted) , there may be a period of time during which both the first and second controllers are actively controlling switches in network 100 (e.g., during which the upgraded first controller 18A controls network forwarding using the upgraded first partition of switches and during which the second controller 18B controls forwarding using the second partition of
switches) .
At step 206, second controller 18B may transfer control of the second redundant partition of switches (e.g., switches E2 , C2 , and E4) to upgraded first
controller 18A. Upgraded first controller 18A may instruct the switches in the second partition to install the new software. For example, upgraded controller 18A may instruct switches E2, C2 , and E4 in the second partition to install the updated software and to reboot.
At step 208, second controller 18B may perform upgrade operations on itself by installing new software. For example, second controller 18B may obtain new software from an external source, may install the new software, and may reboot to implement the new software . While second controller 18B is installing the new software and
rebooting, controller 18B may be in a standby (idle) mode in which controller 18B does not control switches 14 in network 100. Controller 18A may be active and may manage data forwarding through network 100 while controller 18B is idle, thereby preventing noticeable reduction in data forwarding performance through network 100. If desired, second controller 18B may install the new software and reboot prior to installing the new software on the second partition of switches, after installing the new software on the second partition of switches, or concurrently with installation of the new software on the second partition of switches.
By partitioning the network into redundant groups and performing installation and rebooting
operations on one redundant group and one controller at a time, there may be path through the network for forwarding data between a given end host EH and all other end hosts EH in network 100 (e.g., even while some of the network switches are rebooting) without a noticeable impact on the performance of the network during the upgrade process (e.g., the upgrade process of FIG. 8 may sometimes be referred to as a "seamless," "hit -less," or
"uninterrupted" upgrade process because communications between end hosts is not interrupted during the software upgrade process) .
For example, data may be forwarded between any of the end hosts EH even when the switches in one of the partitions are disabled (e.g., while those switches are rebooting with the new software) or when one of the controllers is disabled (e.g., while that controller is rebooting with the new software) . In the example of FIG. 6, network 100 may route packets sent by end host EHl to end host EH2 by forwarding the packets through switch E2 in the second partition even when switches El, CI, and E3 of the first partition are rebooting and may route the packets sent by end host EHl to end host EH2 by forwarding the packets through switch El in the first partition even when switches E2, C2 , and E4 in the second partition are rebooting.
FIGS. 9A-9D show a flow chart of illustrative steps that may be performed by first and second switch controllers to perform uninterrupted software upgrade operations on the switches in a communications network. The steps of FIGS. 9A-9D are described in connection with the example of FIG. 6 in which first and second
controllers 18A and 18B perform upgrade operations on switches 14 in network 100. This is merely illustrative and does not serve to limit the scope of the present invention. If desired, the steps of FIGS. 9A-9D may be performed using any desired communications network having any desired number and arrangement of controllers, switches, and end hosts.
At step 300 of FIG. 9A, first controllers 18A and second controller 18B may obtain new (updated) software. For example, a user of network 100 may provide the new software to controllers 18A and 18B and/or controllers 18A and 18B may receive the new software over other networks such as network 102 (e.g., the internet) as shown in FIG. 6. Controllers 18A and 18B may store
(cache) the new software on memory until the new software is to be installed. If desired, controllers 18A and 18B may store multiple uninstalled versions of software (e.g., multiple uninstalled software images, different software versions or builds, etc.) on memory for installation at a later time (e.g., so that a user of network 100 may select a pre-loaded software image to install from memory when desired) . At step 302, one or both of controllers 18A and 18B may pre-load the new software onto switches 14 (e.g., leaf switches and spine switches in network 100) . For example, controllers 18A and 18B may provide the new software to switches 14 over control paths 66. Switches 14 may store (cache) the new software on memory until the new software is to be installed. If desired, switches 14 may store multiple uninstalled versions of the software on memory for installation at a later time.
At step 304, first controller 18A may communicate with second controller 18B (e.g., by conveying control messages over inter- controller path 67) to determine an initial active controller and standby controller. If desired, controllers 18A and 18B may determine the active and standby controllers using a leader election process. In the scenario described herein as an example, controller 18B may be identified as the active controller and controller 18A may be identified as the standby controller prior to installing the new software. This is merely illustrative and, in general, any controller 18 in network 100 may be elected the active or standby controller.
At step 306, first (standby) controller 18A may inform second (active) controller 18B that a software upgrade is to be made (e.g., by providing control messages over inter-controller path 67) . If desired, first controller 18A may inform second controller 18B that an upgrade is to be made in response to receiving input from a user of network 100 (e.g., a system administrator for network 100, etc.) , after a predetermined time period or at regular predetermined intervals, once new software is obtained, etc . At step 308, second (active) controller 18B may verify connection redundancy in network 100 (e.g., controller 18B may process network topology information to determine whether the network has sufficient connection redundancy to perform an interrupted software upgrade) . If desired, second controller 18B may lock the
configuration of network 100 (e.g., to ensure that any verified network redundancy does not change and to ensure that there are no new changes to the configuration of network 100 until after the new software is installed) .
If second (active) controller 18B determines that there is insufficient connection redundancy in network 100, processing may proceed to step 312 as shown by path 310. Second controller 18B may, for example, determine that there is insufficient redundancy in network 100 if each end host EH is not connected to at least two edge switches (e.g., if there are end hosts that are connected to only one edge switch and/or if there are not at least two redundant network paths between each pair of end hosts EH in network 100) .
At step 312, controllers 18 may abort the upgrade operations and continue performing normal data forwarding or may perform software upgrade operations on network 100 that generate a noticeable reduction in network forwarding performance (e.g., an upgrade operation having a performance "hit") . For example, controllers 18 may update software on switches 14 without a guarantee that there is always a redundant data path for forwarding packets between any given pair of end hosts EH in this scenario .
If second (active) controller 18B determines that network 100 has sufficient redundancy (e.g., that network 100 is fully redundant) , processing may proceed to step 316 as shown by path 314. Second controller 18B may, for example, determine that network 100 is fully redundant if each end host EH in the network is coupled to at least two edge switches 14 (e.g., if there are at least two redundant network paths between each pair of end hosts in network 100). In the example of FIG. 6, second controller 18B determines that network 100 is fully redundant because each end host EH is connected to at least two edge switches and there are two redundant network paths between each end host EH. In another suitable arrangement, controller 18B may identify portions of network 100 (e.g., subsets of switches) that are redundant and may only perform software upgrade operations on the portions of network 100 that are redundant.
At step 316, second (active) controller 18B may identify the redundant sets of switches in network 100. If desired, second controller 18B may provide information about the redundant sets of switches to first (standby) controller 18A. In the example of FIG. 6, second
controller 18B may identify first and second redundant partitions of switches 14 (e.g., a first redundant partition including switches El, E3 , and CI and a second redundant partition including switches E2, C2 , and E4 ) , because packets may be forwarded between any pair of end hosts EH in network 100 through the first partition (e.g., switches El, CI, and E3 ) without traversing any switches in the second partition (e.g., switches E2 , C2 , and E4) and packets may be forwarded between any pair of end hosts EH through the second partition without traversing any switches in the first partition.
At step 318, second (active) controller 18B may instruct all of the switches 14 in network 100 to
disconnect from first (standby) controller 18A (e.g., may instruct switches 14 to disable connections with first controller 18A) . For example, second (active) controller 18B may instruct switches 14 to cancel or drop a TCP session between switches 14 and first (standby) controller 18A. Steps 300-318 as shown in FIG. 9A may, for example, be performed by controllers 18 while processing step 200 of FIG. 8. Processing may subsequently proceed to step 320 as shown in FIG. 9B .
At step 320, first (standby) controller 18A may perform upgrade operations on itself by installing the new software (e.g., the software image that was pre-loaded onto first controller 18A while processing step 300 of FIG. 9A) . After the new software is installed, controller 18A may reboot (e.g., controller 18A may boot with the new installed software, obtain an IP address, etc.) . Step 320 may, for example, be performed while processing step 202 of FIG. 8. Steps 322-328 of FIG. 9B and steps 330-340 of FIG. 9C may, for example, be performed while processing step 204 of FIG. 8.
At step 322 as shown in FIG. 9B, the upgraded first (standby) controller 18A may request network topology information from second (active) controller 18B) . Second (active) controller 18B may provide network topology information (e.g., a snapshot of the operational state of network 100) to upgraded first (standby)
controller 18A (e.g., via inter-controller path 67).
At step 324, the upgraded first (standby) controller 18A may translate (convert) the received network topology information to new software definitions of the network (e.g., new software network definitions as identified by the installed new software image at
controller 18A) . If desired, the new software definitions (e.g., new software scheme for representing the network) may be strictly additive (e.g., to add lines to the previous software definitions of the network without deleting or removing existing lines) or may include transition functions that map between the previous and new software definitions of the network. In general, other changes to the software definitions of the network (e.g., non-additive changes) can often require excessive
resources and time for controllers 18 to process and may thereby render the upgrade operation noticeable to a user of the network (e.g., "hit-full") . If desired, first controller 18A may use the network topology information that has been translated to the new (updated) software network definitions for generating flow table entries for switches 14 (e.g., based on network policies implemented on controllers 81) .
At step 326, upgraded first (standby) controller 18A may inform second (active) controller 18B that first controller 18A has successfully installed the updated software. First controller 18A may request that second controller 18B logically cleave network 100 between the identified first and second partitions.
At step 328, second (active) controller 18B may logically cleave the network 100 between the identified first and second partitions (e.g., in response to
receiving the request to cleave the network from first controller 18A) . Controller 18B may cleave the network by instructing switches 14 to disable connections between the first and second partitions (e.g. , by instructing switches 14 to disable ports that are connected to switches in other redundant partitions) . For example, controller 18B may instruct switch E2 (as shown in FIG. 6) in the second partition to disable port Pi connected to switch El in the first partition, may instruct switch E2 to disable port P4 connected to switch E3 in the first partition, may instruct switch E3 in the first partition to disable port Pi connected to switch E2 in the second partition, may instruct switch E3 to disable port P4 connected to switch E4 in the first partition, etc. In this way, network paths between the redundant partitions such as network paths 65 may be disabled for performing subsequent upgrade operations . Processing may proceed to step
330 as shown in FIG. 9C. At step 330, upgraded first (standby) controller 18A may request reassignment of the first partition of switches from second (active)
controller 18B. Second (active) controller 18B may transfer control of the first partition of switches to upgraded first controller 18A. For example, second
(active) controller 18B may instruct the first partition of switches to re-establish connections with first controller 18A (e.g. , to re-establish respective TCP sessions with first controller 18A) . If desired, second controller 18B may subsequently disconnect from the switches in the first partition. First controller 18A may enter an active mode from the standby mode (e.g. , first controller 18A may become an active controller) after the first partition of switches has been reassigned to upgraded first controller 18A (e.g. , first controller 18A may actively control the first partition of switches) . In this scenario, both the first and second controllers 18 may be active (e.g., the first controller may control the first partition of switches whereas the second controller may control the second partition of switches) after reassignment of the first partition to upgraded first controller 18A. If desired, the duration in which both controllers 18 are active may be limited so that the duration is less than a predetermined value associated with an application timeout period of end hosts EH (e.g., less than approximately 3-5 seconds) .
At step 332, upgraded first (active) controller 18A may instruct the first partition of switches to disconnect from end hosts EH. For example, controller 18A may instruct the first partition of switches to disable ports connected to end hosts EH. In the example of FIG. 6, upgraded first (active) controller 18A may instruct switch El to disable ports Pi and P2 connected to end hosts EHl and EH2 and may instruct switch E3 to disable ports P2 and P3 connected to end hosts EH3 and EH . End hosts EH may continue to send and receive data packets over the second partition of switches even when the first partition of switches is disconnected from the end hosts.
At step 334, upgraded first (active) controller 18A may instruct the first partition of switches to install the new software stored on the first partition of switches (e.g., the software images pre-loaded onto the switches while processing step 302 of FIG. 9A) . After installing the new software, the switches in the first partition may reboot to complete the software installation process .
If desired, upgraded first controller 18A may optionally determine whether switches in the first partition need to be upgraded (e.g., controller 18A may identify whether any switches in the first partition have already installed the latest version of the software) and may instruct switches that still need to install the new software to install the new software and reboot. In this scenario, upgraded first controller 18A may only instruct switches in the first partition that need to upgrade to the new software to disable ports connected to end hosts EH. For example, end host ports on switches in the first partition that have already installed the latest software version and that do not need to be upgraded may remain enabled while the other switches in the first partition are upgraded, and the switches that have already been upgraded may continue to be used to forward data for end hosts EH.
At step 336, upgraded first (active) controller 18A may provide network configuration information that has been translated to the updated software definitions (e.g., translated while processing step 324 of FIG. 9B) to the switches in the upgraded first partition. For example, upgraded first (active) controller 18A may generate packet forwarding rules such as flow table entries that implement a desired network configuration (e.g., that implement desired network policies or rules) using updated software definitions provided by the new software. Controller 18A may provide the generated flow table entries to the upgraded switches in the first partition. The upgraded switches in the first partition may process and implement the received flow table entries for performing packet forwarding operations (e.g., because the upgraded switches have installed the new software and are thereby capable of handling flow table entries that were generated using any new software definitions) .
At step 338, upgraded first (active) controller 18A may wait for all switches in the upgraded first partition to confirm that the flow table entries (e.g., the flow table entries generated based on the new software definitions) have been successfully implemented. For example, first controller 18A may wait until a response message is received from each upgraded switch in the first partition that indicates that the flow table entries have been successfully implemented on the upgraded switches. At step 340, upgraded first (active) controller 18A may instruct the upgraded first partition of switches to re-enable ports connected to end hosts EH. For example, upgraded first (active) controller 18A may instruct switch El to enable ports V1 and P2 and may instruct switch E3 to re-enable ports P2 and P3. Second (active) controller 18B
may instruct the second partition of switches to
disconnect from end hosts EH. For example, second controller 18B may instruct the second partition of switches to disable ports connected to end hosts EH (e.g., second (active) controller 18B may instruct switch E2 to disable ports P2 and P3 connected to end hosts EH1 and EH2 and may instruct switch E4 to disable ports P2 and P3 connected to end hosts EH3 and EH4) . End hosts EH may continue to send and receive data packets over the first partition of switches even when the second partition of switches is disconnected from the end hosts (e.g., allowing for uninterrupted data forwarding between end hosts without a noticeable performance reduction) .
Processing may proceed to step 342 as shown by FIG. 9D. Steps 342-354 may, for example, be performed while processing steps 206 and 208 of FIG. 8.
At step 342 as shown in FIG. 9D, upgraded first (active) controller 18A may request reassignment of the second partition of switches from second controller 18B. Second controller 18B may transfer control of the second partition of switches to upgraded first (active)
controller 18A. For example, second controller 18B may instruct the second partition of switches to re-enable connections with upgraded first controller 18A (e.g., to re-establish respective TCP sessions with first controller 18A) . If desired, second controller 18B may disconnect from the switches in the second partition. Second controller 18B may enter a standby mode (e.g., an idle or inactive mode) after the second partition of switches has been reassigned to upgraded first (active) controller 18A.
At step 344, second (standby) controller 18B may perform upgrade operations on itself by installing the new software (e.g., the software image that was pre-loaded onto second controller 18B while processing step 300 of PIG. 9A) . After the new software is installed, second controller 18B may reboot (e.g., controller 18B may boot with the new installed software, obtain an IP address, etc . ) .
At step 346, upgraded first (active) controller 18A may instruct the second partition of switches to install the new software stored on the second partition of switches (e.g., the software images pre-loaded onto the switches while processing step 302 of FIG. 9A) . After installing the new software, the switches in the second partition may reboot to complete the software installation process .
If desired, upgraded first controller 18A may optionally determine whether switches in the second partition need to be upgraded (e.g., controller 18A may determine whether any switches in the second partition have already installed the latest version of the software) and may instruct switches that still need to install the new software to install the new software and reboot. In this scenario, upgraded first controller 18A may only instruct switches in the second partition that need to upgrade to the new software to disable ports connected to end hosts EH. For example, end host ports on switches in the second partition that have already installed the latest software version and that do not need to be upgraded may remain enabled while the other switches in the second partition are upgraded, and the switches that have already been upgraded may continue to be used to forward data for end hosts EH.
If desired, upgraded first (active) controller 18A may instruct the second partition of switches to install the pre-loaded new software and reboot prior to installing the new software on second controller 18B, after installing the new software on second controller 18B, or concurrently with (e.g., simultaneously with or in parallel with) installing the new software on second controller 18B (e.g., step 346 may be performed prior to, after, or concurrently with step 344) . By performing steps 344 and 346 in parallel, controllers 18 may reduce the time required to upgrade network 100 relative to performing steps 344 and 346 serially, for example.
At step 348, upgraded first (active) controller 18A may provide network configuration information that has been translated to the updated software definitions (e.g., translated while processing step 324 of FIG. 9B) to the switches in the upgraded second partition. For example, upgraded first (active) controller 18A may generate network forwarding rules such as flow table entries that implement a desired network configuration (e.g., that implement desired network policies or rules) using updated software definitions provided by the new software.
Controller 18A may provide the generated flow table entries to the upgraded switches in the second partition. The upgraded switches in the second partition may process and implement the received flow table entries for
performing packet forwarding operations. At step 350, upgraded first (active) controller 18A may instruct the upgraded second partition of switches to re -enable ports connected to end hosts EH. For
example, upgraded first (active) controller 18A may instruct switch E2 to enable ports P2 and P3 and may instruct switch E4 to re-enable ports P2 and P3. The upgraded switches in the first and second partitions may subsequently be used for forwarding data through network 100.
At step 352, upgraded first (active) controller 18A may instruct the upgraded first and second partitions of switches to re-enable connections between the first and second partitions. For example, upgraded first (active) controller 18A may instruct switch E2 in the second partition to enable port Pi connected to switch El in the first partition, may instruct switch E2 to enable port P4 connected to switch E3 in the first partition, may
instruct switch E3 in the first partition to enable port Pi connected to switch E2 in the second partition, may instruct switch E3 to enable port P connected to switch E4 in the first partition, etc. In this way, network paths between the redundant partitions such as network paths 65 may be re-established for performing subsequent forwarding operations. At step 354, upgraded first (active) controller 18A may provide current network topology information associated with network 100 to upgraded second (standby) controller 18B. The current network topology information may be represented using the new software definitions provided by the new installed software.
Upgraded first (active) controller 18A may instruct the switches in network 100 (e.g., the first and second partitions) to re-establish connections with upgraded second controller 18B. If desired, upgraded second controller 18B may enter an active mode from the standby mode (e.g., second controller 18B may become an active controller) after the switches have reconnected to second controller 18B. Upgraded second (active) controller 18B may use the current topology information received from upgraded first (active) controller 18A to generate flow table entries for the switches, for example.
At step 356, switches 14 may be connected to both controllers 18A and 18B and network 100 may resume normal data forwarding operations with updated (new) software implemented on controllers 18 and switches 14. If desired, upgraded first controller 18A may be used to control packet forwarding through network 100 (e.g., by providing flow table entries to the upgraded switches on the network) , second controller 18B may be used to control packet forwarding through the network, or both of
controllers 18A and 18B may be used to control packet forwarding through the network. The example of FIG. 9D is merely illustrative. In general, steps 350-354 may be performed in any desired order or in parallel (e.g., step 352 may be performed prior to step 350, step 354 may be performed prior to step 352, step 350 may be performed in parallel with step 352, etc.) .
By performing software upgrade operations on one controller at a time and one redundant partition of switches at a time in this manner, packets may be
forwarded through network 100 during the software upgrade operations and any increase in the time period required for a packet to traverse the network during the update operation may be limited to less than timeout periods associated with applications running on end hosts EH (less than 3 seconds, for example) . The example of FIGS. 9A-9D in which the switches in network 100 are upgraded in two phases (e.g., a first phase in which the first partition of switches is upgraded and a second phase in which the second partition of switches is upgraded) is merely illustrative. If desired, any number of phases may be used to upgrade the switches in network 100. If desired, the switches in network 100 may be partitioned into any desired number of redundant groups that are each upgraded during respective phases.
FIG. 10 is an illustrative diagram showing how first controller 18A may generate flow table entries for upgraded switches in network 100 based on stored network topology information and network policy information before and after installing the updated software.
As shown in FIG. 10, a network policy such as network policy 360 may be stored on first controller 18A. The network policy may, for example, be provided by a user of network 100 (e.g., a network administrator) and stored as a portion of network configuration rules 20 (see, e.g., FIG. 1) . In the example of FIG. 10, policy 360 specifies that end host EH1 as shown in FIG. 6 cannot communicate with end host EH2 (e.g., the network administrator may desire that communication between end hosts EH1 and EH2 be restricted) .
Controller 18A may generate flow table entries 362 that implement policy 360 to restrict communications between end hosts EH1 and EH2 (e.g., using information about the topology of network 100 and software definitions provided by software running on controller 18A such as control software 54 as shown in FIG. 2) .
The first entry (row) of flow table entries 362 directs a switch in which the flow table entry is
operating to drop packets having the Internet Protocol Version 4 (IPv4) destination address of end host EHl (e.g., having a header field with the IPv4 destination address value of IPv4Em) and the IPv4 source address of end host EH2 (e.g., having a header field with the IPv4 source address value IPv4EH2) · The second row of flow table entries 362 directs a switch in which the flow table entry is operating to drop packets having the IPv4 destination address value IPV4EH2 and the IPv4 source address value IPv4EHi. In this way, when a switch in network 100 having flow table entries 362 receives a packet that matches entries 362, that packet will be dropped. For example, packets may be generated by end host EHl with a source address value IPv4EHi and a
destination address value IPv4EH2- When the generated packet is received at switch El or E2 implementing flow table entries 362, that switch will drop the received packet, thereby preventing data communication between end hosts EHl and EH2 and implementing network policy 360 restricting communication between end hosts EHl and EH2.
Network 100 may be upgraded using new software (e.g., using the steps of FIGS. 8 and 9A-9D) . In the example of FIG. 10, the new software may configure controllers 18 and switches 14 in network 100 to handle Internet Protocol Version 6 (IPv6) traffic (whereas switches 14 and controllers 18 handled IPv4 traffic without handling IPv6 traffic prior to the software upgrade) . After installing the new update, controller 18A may generate flow table entries 364 that implement policy 360 to restrict communications between end hosts EHl and EH2 using information about the topology of network 100 and software definitions provided by the new software installed on controller 18A during the upgrade process.
The first entry (row) of flow table entries 364 directs a switch in which the flow table entry is
operating to drop packets having the Internet Protocol Version 6 (IPv6) destination address of end host EH1 (e.g., having header fields with the IPv6 destination address value of IPv6EHi ) and the IPv6 source address of end host EH2 (e.g., having header fields with the IPv6 source address value IPv6EH2) · The second row of flow table entries 362 directs a switch in which the flow table entry is operating to drop packets having headers with the IPv6 destination address value IPv6 EH2 a.nd the IPv6 source address value IPv6EHi . In this way, when a switch in network 100 having flow table entries 364 receives a packet that matches entries 364, that packet will be dropped. For example, packets may be generated by end host EH1 with a source address value IPV6EHI and a
destination address value IPv6EH2- When the generated packet is received at switch El or E2 implementing flow table entries 364, that switch will drop the received packet, thereby preventing data communication between end hosts EH1 and EH2.
In the example of FIG. 10, an additive software upgrade is performed on network 100 in which the new software definitions add IPv6 source and destination header fields to the flow tables generated by controller 18 without removing other header fields generated using the previous software definitions (e.g., the IPv4 fields). In this way, switches 14 may be upgraded to handle IPv6 traffic without losing forwarding functionality for IPv4 packets as specified by the previous software definitions. In general, the software upgrades performed by network 100 may be additive or map previous software definitions to updated software definitions without removing or deleting any previous software definitions in order to ensure an uninterrupted (e.g., "hit-less") upgrade process. The example of FIG. 10 is merely illustrative. If desired, the software upgrade operations may update any desired software definitions implemented by controllers 18 and switches 14.
In accordance with an embodiment, a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method is provided that includes with the first controller, communicating with the second controller to perform a software upgrade operation on the network, the switches in the network forward network traffic between the end hosts during the software upgrade operation.
In accordance with another embodiment, the method includes with the first controller, electing a selected one of the first and second controllers as an active controller by communicating with the second controller .
In accordance with another embodiment, the method includes with the second controller, identifying first and second redundant partitions of switches in the network, each of the end hosts is coupled to the first redundant partition of switches and each of the end hosts is coupled to the second redundant partitions of switches.
In accordance with another embodiment, the method includes with at least one of the first and second controllers, loading software onto the first and second redundant partitions of switches.
In accordance with another embodiment, the method includes with the first controller, instructing the first redundant partition of switches to install the loaded software, and with the second redundant partition of switches, forwarding the network traffic between the end hosts while the first redundant partition of switches installs the loaded software.
In accordance with another embodiment, the method includes with the first controller, instructing the second redundant partition of switches to install the loaded software, and with the first redundant partition of switches, forwarding the network traffic between the end hosts while the second redundant partition of switches installs the loaded software .
In accordance with another embodiment, the method includes with the second controller, instructing each of the switches in the first and second redundant partitions of switches to disable a respective connection with the first controller.
In accordance with another embodiment, the method includes with the first controller, installing the software on the first controller after each of the switches in the first and second redundant partitions of switches have disabled the respective connections with the first controller.
In accordance with another embodiment, the method includes with the second controller, instructing the first redundant partition of switches to enable the disabled connections between the first redundant partition of switches and the first controller, and with the first controller, instructing the first redundant partition of switches to install the loaded software after the disabled connections between the first redundant partition of switches and the first controller have been enabled.
In accordance with another embodiment, the method includes with the second controller, instructing the second redundant partition of switches to enable the disabled connections between the second redundant
partition of switches and the first controller, and with the first controller, instructing the second redundant partition of switches to install the loaded software after the disabled connections between the second redundant partition of switches and the first controller have been enabled.
In accordance with another embodiment, the method includes with the second controller, installing the software while the second redundant partition of switches installs the loaded software .
In accordance with another embodiment, the method includes with the first controller, receiving network topology information identifying connections in the network from the second controller, with the first controller, installing a software image that specifies updated software definitions for the network, and with the first controller, translating the received network topology information to the updated software definitions specified by the installed software image.
In accordance with another embodiment, the method includes with the first controller, generating flow table entries based on the translated network topology information, and with the first controller, providing the flow table entries to the switches.
In accordance with another embodiment, the switches in the network forward network traffic between the end hosts over network paths and the first controller provides the flow table entries to the switches over control paths .
In accordance with an embodiment, a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method is provided that includes with the first and second controllers,
partitioning the switches into first and second sets of switches, the first set of switches is connected to each of the end hosts and the second set of switches is connected to each of the end hosts, and with at least one of the first and second controllers, instructing the switches to disable network connections between the first and second sets of switches.
In accordance with another embodiment, the method includes with at least one of the first and second controllers, providing software to the first and second sets of switches, with the second controller, assigning control of the first set of switches to the first
controller, with the first controller, instructing the first set of switches to install the software, with the second controller, assigning control of the second set of switches to the first controller, and with the first controller, instructing the second set of switches to install the software after the first set of switches has installed the software.
In accordance with another embodiment, the method includes with the second set of switches,
forwarding network packets between the end hosts while the first set of switches installs the software, and with the first set of switches, forwarding the network packets between the end hosts while the second set of switches installs the software.
In accordance with another embodiment, the method includes with the first controller, installing the software prior to instructing the first set of switches to install the software, and with the second controller, installing the software after the first set of switches has installed the software.
In accordance with another embodiment, the method includes with the first controller, instructing the first set of switches to disable ports connected to the end hosts prior to installing the software on the first set of switches, and with the first controller,
instructing the first set of switches to enable the ports connected to the end hosts after installing the new software on the first set of switches.
In accordance with an embodiment, a method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method is provided that includes with at least one of the first and second controllers, identifying at least first and second redundant groups of switches in the network, with the first controller, instructing the first redundant group of switches in the network to perform software upgrade operations, and with the first controller, instructing the second redundant group of switches in the network to perform software upgrade operations after the first redundant group of switches has completed the software upgrade operations .
In accordance with another embodiment, the method includes with the second controller, instructing the first and second redundant groups of switches to disable network connections between the first and second redundant groups of switches .
In accordance with another embodiment, the method includes with the first redundant group of
switches, forwarding network packets between the end hosts while the second redundant group of switches performs the software upgrade operations, and with the second redundant group of switches, forwarding the network packets between the end hosts while the second redundant group of switches performs the software upgrade operations .
In accordance with another embodiment, the method includes with the first controller, identifying network topology information associated with the network, with the first controller, generating packet forwarding rules based on the identified network topology
information, with the first controller, providing the packet forwarding rules to the switches, with the first controller, receiving a software image and installing the received software image, with the first controller, generating additional packet forwarding rules based on the installed software image, and with the first controller, providing the additional packet forwarding rules to the first redundant group of switches after the first
redundant group switches has performed the software upgrade operations.
The foregoing is merely illustrative of the principles of this invention and various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention.

Claims

What is Claimed is :
1. A method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method comprising:
with the first controller, communicating with the second controller to perform a software upgrade operation on the network, wherein the switches in the network forward network traffic between the end hosts during the software upgrade operation.
2. The method defined in claim 1 further comprising :
with the first controller, electing a selected one of the first and second controllers as an active controller by communicating with the second controller .
3. The method defined in claim 1, further comprising :
with the second controller, identifying first and second redundant partitions of switches in the network, wherein each of the end hosts is coupled to the first redundant partition of switches and each of the end hosts is coupled to the second redundant partitions of switches .
4. The method defined in claim 3, further comprising :
with at least one of the first and second controllers, loading software onto the first and second redundant partitions of switches.
5. The method defined in claim 4, further comprising :
with the first controller, instructing the first redundant partition of switches to install the loaded software; and
with the second redundant partition of switches, forwarding the network traffic between the end hosts while the first redundant partition of switches installs the loaded software.
6. The method defined in claim 5, further comprising:
with the first controller, instructing the second redundant partition of switches to install the loaded software; and
with the first redundant partition of switches, forwarding the network traffic between the end hosts while the second redundant partition of switches installs the loaded software.
7. The method defined in claim 4, further comprising :
with the second controller, instructing each of the switches in the first and second redundant partitions of switches to disable a respective connection with the first controller.
8. The method defined in claim 7, further comprising :
with the first controller, installing the software on the first controller after each of the switches in the first and second redundant partitions of switches have disabled the respective connections with the first controller.
9. The method defined in claim 8, further comprising :
with the second controller, instructing the first redundant partition of switches to enable the disabled connections between the first redundant partition of switches and the first controller; and
with the first controller, instructing the first redundant partition of switches to install the loaded software after the disabled connections between the first redundant partition of switches and the first controller have been enabled.
10. The method defined in claim 9, further comprising :
with the second controller, instructing the second redundant partition of switches to enable the disabled connections between the second redundant
partition of switches and the first controller; and
with the first controller, instructing the second redundant partition of switches to install the loaded software after the disabled connections between the second redundant partition of switches and the first controller have been enabled.
11. The method defined in claim 10, further comprising :
with the second controller, installing the software while the second redundant partition of switches installs the loaded software.
12. The method defined in claim 1, further comprising:
with the first controller, receiving network topology information identifying connections in the network from the second controller;
with the first controller, installing a software image that specifies updated software definitions for the network; and
with the first controller, translating the received network topology information to the updated software definitions specified by the installed software image .
13. The method defined in claim 12, further comprising :
with the first controller, generating flow table entries based on the translated network topology information; and
with the first controller, providing the flow table entries to the switches.
14. The method defined in claim 13, wherein the switches in the network forward network traffic between the end hosts over network paths and the first controller provides the flow table entries to the switches over control paths .
15. A method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method comprising:
with the first and second controllers, partitioning the switches into first and second sets of switches, wherein the first set of switches is connected to each of the end hosts and wherein the second set of switches is connected to each of the end hosts; and
with at least one of the first and second controllers, instructing the switches to disable network connections between the first and second sets of switches.
16. The method defined in claim 15, further comprising:
with at least one of the first and second controllers, providing software to the first and second sets of switches;
with the second controller, assigning control of the first set of switches to the first
controller ;
with the first controller, instructing the first set of switches to install the software;
with the second controller, assigning control of the second set of switches to the first controller; and
with the first controller, instructing the second set of switches to install the software after the first set of switches has installed the software.
17. The method defined in claim 16, further comprising :
with the second set of switches, forwarding network packets between the end hosts while the first set of switches installs the software; and
with the first set of switches, forwarding the network packets between the end hosts while the second set of switches installs the software.
5S
18. The method defined in claim 17, further comprising :
with the first controller, installing the software prior to instructing the first set of switches to install the software; and
with the second controller, installing the software after the first set of switches has installed the software .
19. The method defined in claim 16, further comprising :
with the first controller, instructing the first set of switches to disable ports connected to the end hosts prior to installing the software on the first set of switches; and
with the first controller, instructing the first set of switches to enable the ports connected to the end hosts after installing the new software on the first set of switches .
20. A method of using at least first and second controllers that each controls switches in a network having end hosts that are coupled to the switches, the method comprising:
with at least one of the first and second controllers, identifying at least first and second redundant groups of switches in the network;
with the first controller, instructing the first redundant group of switches in the network to perform software upgrade operations; and
with the first controller, instructing the second redundant group of switches in the network to perform software upgrade operations after the first redundant group of switches has completed the software upgrade operations .
21. The method defined in claim 20, further comprising :
with the second controller, instructing the first and second redundant groups of switches to disable network connections between the first and second redundant groups of switches .
22. The method defined in claim 20, further comprising :
with the first redundant group of switches, forwarding network packets between the end hosts while the second redundant group of switches performs the software upgrade operations; and
with the second redundant group of
switches, forwarding the network packets between the end hosts while the second redundant group of switches performs the software upgrade operations.
23. The method defined in claim 20, further comprising :
with the first controller, identifying network topology information associated with the network;
with the first controller, generating packet forwarding rules based on the identified network topology information;
with the first controller, providing the packet forwarding rules to the switches;
with the first controller, receiving a software image and installing the received software image; with the first controller, generating additional packet forwarding rules based on the installed software image; and
with the first controller, providing the additional packet forwarding rules to the first redundant group of switches after the first redundant group switches has performed the software upgrade operations .
PCT/US2015/040804 2014-07-21 2015-07-16 Systems and methods for performing uninterrupted network upgrades with controllers WO2016014344A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/337,193 2014-07-21
US14/337,193 US9600263B2 (en) 2014-07-21 2014-07-21 Systems and methods for performing uninterrupted network upgrades with controllers

Publications (1)

Publication Number Publication Date
WO2016014344A1 true WO2016014344A1 (en) 2016-01-28

Family

ID=53836814

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/040804 WO2016014344A1 (en) 2014-07-21 2015-07-16 Systems and methods for performing uninterrupted network upgrades with controllers

Country Status (2)

Country Link
US (1) US9600263B2 (en)
WO (1) WO2016014344A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10009229B2 (en) * 2015-06-11 2018-06-26 Cisco Technology, Inc. Policy verification in a network
US20180365000A1 (en) * 2015-12-04 2018-12-20 Aruba Networks, Inc. Reprogramming access points
US10594505B2 (en) * 2016-01-27 2020-03-17 Quanta Computer Inc. System and method for avoiding deadlock in transmission of broadcast traffic in a server system
US10037203B1 (en) * 2016-07-28 2018-07-31 National Technology & Engineering Solutions Of Sandia, Llc Real-time software upgrade
US20180074813A1 (en) * 2016-09-14 2018-03-15 General Motors Llc Installing vehicle updates
CN108108120B (en) * 2016-11-25 2021-03-09 上海川源信息科技有限公司 Data storage system and data storage method thereof
US20180331973A1 (en) * 2017-05-09 2018-11-15 Microsoft Technology Licensing, Llc Increasing virtual machine availability during server updates
US10735259B2 (en) * 2017-07-10 2020-08-04 Nicira, Inc. Virtual switch updates via temporary virtual switch
CN108255538B (en) * 2017-12-08 2021-02-09 中国航空工业集团公司成都飞机设计研究所 Method for in-situ loading of second-level controller software on distributed heterogeneous system machine
US10693761B2 (en) * 2018-07-02 2020-06-23 Hewlett Packard Enterprise Development Lp Computer system including multilayer switches
US11449324B2 (en) * 2018-07-16 2022-09-20 Red Hat, Inc. Automatic updating of an application executing on an application server
JP7192415B2 (en) * 2018-11-06 2022-12-20 株式会社オートネットワーク技術研究所 Program update system and update processing program
CN110278114A (en) * 2019-06-19 2019-09-24 深圳逗号互联科技有限公司 A kind of method of the remote software upgrading of logistics retrospect equipment
US10887183B1 (en) * 2019-09-18 2021-01-05 Virtustream Ip Holding Company Llc System and method for topological redundancy
CN111124514B (en) * 2019-12-19 2023-03-28 杭州迪普科技股份有限公司 Method and system for realizing loose coupling of frame type equipment service plates and frame type equipment
US11855834B2 (en) * 2020-06-02 2023-12-26 Apple Inc. Traffic sink interface
US11593144B2 (en) 2020-09-23 2023-02-28 Cisco Technology, Inc. Near-hitless upgrade or fast bootup with virtualized hardware
US11546275B2 (en) * 2020-09-23 2023-01-03 Cisco Technology, Inc. Near-hitless upgrade or fast bootup with mobile virtualized hardware
WO2022172331A1 (en) * 2021-02-09 2022-08-18 日本電信電話株式会社 Setting change device, setting change method, and program

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144720A1 (en) * 2007-11-30 2009-06-04 Sun Microsystems, Inc. Cluster software upgrades
US20120072894A1 (en) * 2010-09-22 2012-03-22 Dawei Wang In-Service Software Upgrade on Cards of Virtual Partition of Network Element that Includes Directing Traffic Away from Cards of Virtual Partition

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430735B1 (en) * 2002-05-07 2008-09-30 Lucent Technologies Inc. Method, system, and computer program product for providing a software upgrade in a network node
JP4317828B2 (en) * 2005-03-15 2009-08-19 富士通株式会社 Network monitoring apparatus and network monitoring method
US8713551B2 (en) * 2006-01-03 2014-04-29 International Business Machines Corporation Apparatus, system, and method for non-interruptively updating firmware on a redundant hardware controller
US8000697B1 (en) 2006-12-01 2011-08-16 Sprint Communications Company L.P. Parallel loading of wireless switch updates
JP4893731B2 (en) * 2008-12-25 2012-03-07 富士通株式会社 Communication control device
ES2351830B1 (en) 2009-02-05 2011-12-12 Vodafone España, S.A.U. NETWORK PROCEDURE AND CONTROLLER TO SWITCH BETWEEN SHARED NETWORK ARCHITECTURES.
WO2010103909A1 (en) 2009-03-09 2010-09-16 日本電気株式会社 OpenFlow COMMUNICATION SYSTEM AND OpenFlow COMMUNICATION METHOD
US8495618B1 (en) * 2010-03-31 2013-07-23 American Megatrends, Inc. Updating firmware in a high availability enabled computer system
EP2572473B1 (en) * 2010-05-19 2014-02-26 Telefonaktiebolaget L M Ericsson (PUBL) Methods and apparatus for use in an openflow network
US8416796B2 (en) * 2011-05-06 2013-04-09 Big Switch Networks, Inc. Systems and methods for managing virtual switches
US8964563B2 (en) * 2011-07-08 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Controller driven OAM for OpenFlow
US20130064066A1 (en) 2011-09-12 2013-03-14 International Business Machines Corporation Updating a switch software image in a distributed fabric protocol (dfp) switching network
US9185056B2 (en) * 2011-09-20 2015-11-10 Big Switch Networks, Inc. System and methods for controlling network traffic through virtual switches
US8856384B2 (en) * 2011-10-14 2014-10-07 Big Switch Networks, Inc. System and methods for managing network protocol address assignment with a controller
US9038053B2 (en) * 2012-08-27 2015-05-19 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Non-disruptive software updates for servers processing network traffic
US8943490B1 (en) * 2012-09-28 2015-01-27 Juniper Networks, Inc. Intelligent non-stop software upgrade
US9008080B1 (en) * 2013-02-25 2015-04-14 Big Switch Networks, Inc. Systems and methods for controlling switches to monitor network traffic
US9137174B2 (en) 2013-03-14 2015-09-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Synchronization of OpenFlow controller devices via OpenFlow switching devices
US9104643B2 (en) 2013-03-15 2015-08-11 International Business Machines Corporation OpenFlow controller master-slave initialization protocol

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144720A1 (en) * 2007-11-30 2009-06-04 Sun Microsystems, Inc. Cluster software upgrades
US20120072894A1 (en) * 2010-09-22 2012-03-22 Dawei Wang In-Service Software Upgrade on Cards of Virtual Partition of Network Element that Includes Directing Traffic Away from Cards of Virtual Partition

Also Published As

Publication number Publication date
US9600263B2 (en) 2017-03-21
US20160019044A1 (en) 2016-01-21

Similar Documents

Publication Publication Date Title
US9600263B2 (en) Systems and methods for performing uninterrupted network upgrades with controllers
US8923296B2 (en) System and methods for managing network packet forwarding with a controller
US10270645B2 (en) Systems and methods for handling link aggregation failover with a controller
EP2748974B1 (en) Method for controlling network traffic through virtual switches
US9654380B1 (en) Systems and methods for determining network topologies
EP3172875B1 (en) Method for performing logical network forwarding using a controller
EP3072264B1 (en) Method for performing network service insertion
US8856384B2 (en) System and methods for managing network protocol address assignment with a controller
EP2748992B1 (en) Method for managing network hardware address requests with a controller
US8416796B2 (en) Systems and methods for managing virtual switches
US9036636B1 (en) System and methods for managing network packet broadcasting
US8787388B1 (en) System and methods for forwarding packets through a network
US9008080B1 (en) Systems and methods for controlling switches to monitor network traffic
US11463356B2 (en) Systems and methods for forming on-premise virtual private cloud resources
US9548900B1 (en) Systems and methods for forwarding network packets in a network using network domain topology information
US10291533B1 (en) Systems and methods for network traffic monitoring
US11582067B2 (en) Systems and methods for providing network connectors
US9264295B1 (en) Systems and methods for forwarding broadcast network packets with a controller
US10873476B2 (en) Networks with multiple tiers of switches

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15750500

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15750500

Country of ref document: EP

Kind code of ref document: A1