Network switches are used to route data from various sources and destinations in a computing environment. For example, a network switch receives network packets from one or more servers and/or network switches and route the network packets to other servers and/or network switches. While network packets include the substantive content that is communicated between various network switches and/or computing devices, network switches may also route Operations, Administration and Management (OAM) packets. OAM packets may require additional processing by a network switch.
Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
The present disclosure relates to systems and methods for offloading packet processing from a network switch. Network switches receive multiple packets from a set of ports. It may be the case that some packets are administrative packets, where administrative packets require additional processing beyond that which is required by other network packets. The processing of these administrative packets may be offloaded from the network switch through the use of an offload processor (OLP).
According to various embodiments of the present disclosure, an OLP Rx (receive) module is used to detect administrative packets and route the administrative packets to an OLP for subsequent processing. The OLP interfaces with network switch via one of the ports used to receive packets by the network switch. In this respect, an OLP is configured to be directly connected to the network switch via any of the network packets ports. For example, the OLP may use an Ethernet port to plug into the network switch for providing the offload processing resources.
In various embodiments, the network switch encapsulates the administrative packets with one or more packet headers and routes the administrative packet to the OLP. The OLP may also respond to the receipt of an administrative packet by generating a reply packet in conformity with an administrative packet protocol.
Reference is made to
The network switch 103 comprises a set of ports 109a-n for receiving and sending network packets. Each port 109 corresponds to a port identifier such as, for example, Port 1, Port 2, etc. In various embodiments, each port 109 is a bi-directional port. In this respect, Port 1, for example, comprises an ingress path for receiving network packets and an egress path for sending network packets away from the network switch 103. Additionally, each port 109 may comprise a local area network (LAN) interface such as, for example, an Ethernet interface for communicatively coupling to other network components.
The network switch 103 comprises an ingress pipeline 112 for handling network packets received by any of the ports 109 and an egress pipeline 114 for handling the transmission of network packets by the network switch 103. The network switch 103 comprises an OLP receive module 116 for routing administrative packets 108 received by the network switch 103 to one of the offload processing circuitry 135. The network switch 103 also comprises an OLP Tx (transmit) module 119 for routing administrative packets 108 received from the offload processing circuitry 135 that are to be sent out by the network switch 103. Portions of the receive module 116 and portions of the transmit module 119 may be implemented the ingress pipeline 112 and/or egress pipeline 114.
The network switch 103 further comprises memory management circuitry 126 that is configured to buffer, queue, prioritize, and schedule network packets received by the network switch 103. The network switch 103 also comprises a peripheral interface 129 for connecting the network switch 103 to peripheral devices. The peripheral interface 129 may be, for example, a Peripheral Connect Interface (PCI), a Universal Serial Bus (USB), or any other interface. The peripheral interface 129 is configured to provide connectivity between the network switch 103 and a central processing unit (CPU) 133. The CPU 133 may provide processing resources to the network switch 103 for processing network packets.
The networked environment 100 comprises offload processing circuitry 135 that is implemented within an OLP. The offload processing circuitry 135 is configured to be directly connected to the network switch 103 via any one of the ports 109. The offload processing circuitry 135 allows the network switch 103 to offload at least a portion of the processing of administrative packets 108 to the OLP.
Each of the components in the networked environment 100, such as, for example, the ingress pipeline 112, the egress pipeline 114, the receive module 116, the transmit module 119, the memory management circuitry 126, the CPU 133, the offload processing circuitry 135, and any other component may be implemented using one or more circuits, one or more microprocessors, application specific integrated circuits, dedicated hardware, digital signal processors, microcomputers, central processing units, field programmable gate arrays, programmable logic devices, state machines, or any combination thereof. In yet other embodiments, the various components in the networked environment 100 may include one or more software modules executable within one or more processing circuits. The components may further include memory configured to store instructions and/or code that causes the execution of network switching functions.
Next, a general description of the operation of the various components of the networked environment 100 is provided. The network switch 103 receives network packets via one or more of the ports 109. In the example where the ports 109 comprise Ethernet ports, the network packets are received via an Ethernet cable. The receive module 116 analyzes received network packets to determine whether a received network packet is an administrative packet 108 that must be terminated for processing. For example, the receive module 116 makes this determination based at least upon an Internet Protocol (IP) address, a Media Access Control (MAC) address, Virtual Local Area Network (VLAN) data, Ethertype field, or any other identifier or combination of identifiers associated with the received packet. To this end, particular identifiers (e.g., IP address, MAC address, etc.) associated with a received packet may be linked to an administrative packet 108.
A received packet that is determined to not be an administrative packet 108 that requires termination and processing is routed via the ingress pipeline 112 to the memory management circuitry 126 for data packet processing/scheduling. These packets are not processed by an OLP. When a received packet is an administrative packet 108, the receive module 116 prepares the administrative packet 108 to be routed to the offload processing circuitry 135 of an OLP. For example, the receive module 116 encapsulates the administrative packet 108 with one or more headers to route the administrative packet 108 to a particular OLP.
In various embodiments, the receive module 116 encapsulates the administrative packet with a receive OLP header. The receive OLP header comprises a receive port identifier for identifying the port 109 that received the administrative packet 108. The receive OLP header may comprise a timestamp for identifying a point in time of receipt of the administrative packet 108. The timestamp, for example, is a local with respect to the network switch 103 for allowing the network switch to determine a sequence of network packets received by the network switch 103. As another example, the timestamp is global and is generated in accordance with a time synchronization protocol such as, for example IEEE 1588. The receive OLP header may also comprise a counter sample representing a snapshot of a Loss Measurement Counter. The receive OLP header may further comprise a chip identifier for associating the administrative packet 108 to the network switch 103. The chip identifier may be used in a case where the administrative packet 108 is forwarded to other network switches for subsequent offload processing. This allows the OLP to determine the identity or identities of the network switch(es) 103 that handled the administrative packet 108.
The receive OLP header further comprises an OLP port 109. The OLP port is the port 109 that is responsible for connecting the offload processing circuitry 135 to the network switch 103. The offload processing circuitry 135 may be implemented in an OLP, where the OLP is configured to be communicatively coupled to any of the network switch ports 109. Once the OLP is connected or otherwise plugged into the network switch 103 via a particular port 109, that particular port 109 represents the OLP port 109 for sending administrative packet 108 to facilitate offload processing operations. To this end, the OLP port 109 is a dedicated port for offload processing while the OLP is connected to the network switch 103. In various embodiments, the OLP may be disconnected from the OLP port 109 and reconnected to another port 109, thereby updating the OLP port 109 to the other port 109. Also an OLP may be connected to a network switch 103 via multiple ports 109, where those ports 109 may be logically grouped together to create a larger port with more bandwidth.
In various embodiments, the receive module 116 encapsulates the administrative packet 108 with a LAN header such as, for example, an Ethernet header. The Ethernet header identifies a source MAC address and/or destination MAC address in accordance with an Ethernet protocol. In other embodiments, the receive module 116 includes VLAN data in the receive OLP header and/or LAN header. The VLAN data is used by the various components in the networked environment 100 to facilitate a virtual networking protocol for allowing administrative packets 108 and data packets to be sent along the same channel.
Once the administrative packet 108 is encapsulated with one or more headers, the receive module 116 routes the administrative packet 108 to the one of the plurality of ports to facilitate an offload processing of the administrative packet 108. For example, the ingress pipeline 112 sends the encapsulated administrative packet 108 to the memory management circuitry 126 for scheduling. Once scheduled, the encapsulated administrative packet 108 is routed to the OLP for offload processing by the offload processing circuitry 135.
The OLP is configured to connect to any of the ports 109 of the network switch 103. The OLP receives the encapsulated administrative packet 108 via one or more ports 109. The OLP comprises offload processing circuitry 135 to process the encapsulated administrative packet 108. For example, the offload processing circuitry 135 uses the receive OLP header for determining a manner in which to handle the encapsulated administrative packet 108. In various embodiments, processing the encapsulated administrative packet 108 comprises performing fault management, performing continuity checks, performing link layer discovery, monitoring/troubleshooting LAN access links, or any other process that involves updating a state machine. Once the offload processing circuitry 135 processes the encapsulated administrative packet 108, the offload processing circuitry 135 may drop the encapsulated administrative packet 108.
In various embodiments, the offload processing circuitry 135 is configured to generate a reply packet in response to processing the encapsulated administrative packet 108. The reply packet is generated based at least upon the content of the encapsulated administrative packet 108. The offload processing circuitry 135 also encapsulates the reply packet with a transmit OLP header for allowing the network switch 103 to properly handle the transmission of the reply packet.
In various embodiments, the transmit OLP header may comprise commands for the network switch 103 to sample a snapshot of timestamps and/or counters and insert them into the provided Offset location inside the packet 108. The transmit OLP header comprises a destination port 109 for specifying which one of the ports 109a-n is responsible for transmitting the reply packet. For example, if the OLP is connected to the network switch 103 via Port 10, then the transmit OLP header of a reply packet may specify a destination port of Port 7. The transmit OLP header further comprises a priority value, according to various embodiments, the priority value allows the memory management circuitry 126 to determine how to prioritize the reply packet according to a set of priority queues of the memory management circuitry 126.
Once a packet has been generated by the OLP and encapsulated with an appropriate transmit OLP header, the offload processing circuitry 135 sends the reply packet to the network switch 103 via one of the ports 109. In the case where each port 109 is a bi-directional port, the reply packet may be sent via the same port 109 in which the encapsulated administrative packet 108 was previously received.
The network switch 103 is configured to receive reply packets from one or more OLPs via corresponding ports 109. Specifically, a reply packet is received via the ingress pipeline 112. A portion of a transmit module 119 that is implemented as part of the ingress pipeline is configured to handle reply packets received from the offload processing circuitry 135. For example, the transmit module 119 performs a signature match on the reply placket to authenticate the reply packet. According to various embodiments, the signature match comprises authenticating the reply packet based at least upon an IP address, MAC address, Ethertype, or any other data associated with the reply packet. For example, the transmit module 119 determines that the source MAC address/source IP address of the reply packet matches the OLP that generated the reply packet.
Additionally, the transmit module 119 identifies the port or ports 109 that are responsible for transmitting the packet 108. The transmit module 119 analyzes the transmit OLP header to identify where to route the reply packet. In another embodiment, the transmit module 119 may identify the port or ports 109 that the packet 108 must be pretended to be received from and let the switch 103 forward the packet 108 similar to a data packet. It may be the case that the pretended receive port 109 is different than the port 109 to which the OLP is attached.
In various embodiments, the transmit module 119 removes the transmit OLP header from the reply packet, according to various embodiments. To this end, the use of OLP headers may be limited to communication between the offload processing circuitry 135 and the network switch 103. For example, once the packet is scheduled to be transmitted to a local port 109, for example, the OLP header is removed. The transmit module 119 then routes the reply packet to the destination port 109 identified in the transmit OLP header. In another embodiment, the packet 108 may be scheduled to be transmitted to a port 109 located on another remote network switch 103. In that case, the OLP Transmit header is to be removed by the remote network switch 103.
According to various embodiments, the network switch 103 is configured to connect to a CPU 133, where the CPU provides supplementary processing of administrative packets 108. In this respect, a portion of the administrative packet processing may be performed in the CPU. However, the CPU is not configured to be communicatively coupled to the network switch 103 via one of the ports 109. Thus, data communication between the network switch 103 and the CPU does not rely on the use of OLP headers.
Moving on to
The third network switch 103c includes a first port 109 (
The second network switch 103b receives the administrative packet 108 from the first network switch 103a and forwards the administrative packet to a third network switch 103c. In various embodiments, the second network switch processes the administrative packet 108 using a CPU 133b.
The third network switch 103c receives the administrative packet. The receive module 116 of the third network switch 103c routes the administrative packet 108 to one of the OLPs. For example, the receive module 116 identifies the which OLP to route the administrative packet to based at least upon a type of operation performed by the offload processing circuitry 135b, c. The first offload processing circuitry 135b may be configured to process a first category of administrative packets while the second offload processing circuitry 135c may be configured to process a second category of administrative packets. As a non-limiting example, the first offload processing circuitry 135b is configured to process OAM packets while the second offload processing circuitry 135c is configured to process IPsec packets. Thus, depending on the category of the administrative packet 108, the receive module 116 routes the administrative packet to the appropriate offload processing circuitry 135b, c. To this end, the receive module 116 identifies the appropriate port 109 that corresponds to the correct OLP.
Turning to
To begin, the receive module 116 receives a packet (302). The packet is received via a port 109 (
If the packet is an administrative packet 108 that needs to be processed, the receive module 116 determines an OLP port (307). The OLP port is a port 109 that is used to directly couple the offload processing circuitry 135 (
It may be the case that multiple OLPs are coupled to the network switch 103. To this end, each OLP is associated with a corresponding OLP port. In this case, the receive module 116 identifies the proper OLP based at least upon a type of operation to be performed on administrative packet 108 by the offload processing circuitry 135. The receive module 116 encapsulates the administrative packet 108 with an OLP header such as, for example, a receive OLP header (309). The receive OLP header, for example, comprises the OLP port that indicates the port 109 in which the administration packet is to be forwarded.
The receive module 116 also encapsulates the administrative packet 108 with a LAN header such as, for example, an Ethernet header (311). In various embodiments, the LAN header comprises a source MAC address, where the source MAC address specifies an address associated with the network switch 103. Also, the LAN header may comprise a destination MAC address that specifies the MAC address associated with the OLP that is scheduled to receive the administrative packet 108. In various embodiments, VLAN data is included in the LAN header or OLP header. The VLAN data is used for routing the administrative packet according to a VLAN protocol.
Once the administrative packet 108 is encapsulated, the administrative packet 108 is routed to the offload processing circuitry 135 of the destination OLP port (314). The administrative packet 108 is routed via memory management circuitry 126 (
Referring next to
To begin, the offload processing circuitry 135 receives an administrative packet 108 (403). The offload processing circuitry 135 is communicatively coupled to a network switch 103 (
The offload processing circuitry 135 processes the administrative packet 108 (406). For example, the offload processing circuitry 135 identifies the substantive content included in the administrative packet 108. Based at least upon this content, the offload processing circuitry 135 performs fault management, one or more continuity checks, link layer discovery, monitoring/troubleshooting of LAN access links, or any other process that involves updating a state machine. Once the offload processing circuitry 135 processes the administrative packet 108, the offload processing circuitry 135 may drop the administrative packet 108.
It may be the case that, based on the content of the administrative packet, the offload processing circuitry 135 must generate a reply packet (407). If no reply is needed, then the administrative packet is dropped and the process in the flow chart of
Turning to
To begin, the transmit module 119 receives a packet (504). The packet is received from offload processing circuitry 135 (
The transmit module 119 performs a signature match (507) to authenticate the received packet. For example, the transmit module 119 determines whether the packet originated from the offload processing circuitry 135 by analyzing a source MAC address, source IP address, or any other identifier that indicates an origin of the packet. To this end, the transmit module 119 determines the authenticity of the packet based at least upon the OLP header of the packet. If the packet does not match an expected signature, then the flowchart of
The transmit module 119 determines a destination port 109 (
The transmit module 119 determines whether the packet is to be forwarded to a remote port 109 that is implemented at a remote network switch 103 (515). For example, the OLP header of the packet may indicate that the packet is to be forwarded to the remote network switch 103. If this is not the case, then the transmit module 119 removes the OLP header of the packet (518) and then routes the packet to the destination port 109 (522).
However, if this is the case, then the transmit module 119 maintains the OLP header of the packet. Thereafter, the transmit module 119 routes the packet to the remote network switch 103. Then, the transmit module 119 of the remote network switch 103 removes the OLP transmit header and forwards the packet to its local destination port 109 (522). To this end, the packet is forwarded along a path towards the remote network switch 103 while maintaining the OLP header of the packet.
The flowcharts of
Although the flowcharts of
Also, any logic or application described herein that comprises software or code, for example, the receive module 116, offload processing circuitry 135, and transmit module 119, may be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as, for example, the receive module 116, offload processing circuitry 135, and transmit module 119, in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system.
The computer-readable medium can comprise any one of many physical media such as, for example, magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical discs. Also, the computer-readable medium may be a random access memory (RAM) including, for example, static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.
It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiment(s) without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.