A computing device may transmit packets via a network. The network packet may comprise source and destination machine access control (MAC) addresses.
Certain examples are described in the following detailed description and in reference to the drawings, in which:
Service function chaining (SFC) is an increasingly popular method of providing network services. Service function chaining routes packets through multiple service functions. As an example, a service function chain may comprise a firewall service and an intrusion protection service (IPS). In this example, a packet that is part of the service function chain may be routed first to the firewall and then to the IPS.
One way of enabling service function chaining is using MAC (media access control) chaining. In MAC address chaining, a MAC-chaining compatible network device (e.g. a switch, router, or network appliance) determines that a packet is part of a service function chain. The network device then modifies the source and destination MAC addresses of the packet such that the packet is transmitted to a particular service function, the destination address of which is specified by the modified destination address. After a service function is performed on the packet, a switch or router modifies the destination MAC address of the packet such that the packet is transmitted to a subsequent function in the service function chain. MAC chaining-compatible network devices repeatedly modify the MAC addresses of the packet until the packet has traversed each service function of the chain. The packet is then transmitted to a source network device that originated the packet.
For campus environments (i.e. network environments in which heterogeneous network devices are present, a level 3 (L3) gateway may be restore the destination MAC address of the packet once the packet has traversed each service of the chain. Requiring an L3 gateway is unsuitable for such campus environments. Additionally, MAC chaining may utilize significant memory overhead from network switching/routing devices.
The techniques of this disclosure enable MAC chaining while also preserving the destination MAC address. The techniques of this disclosure store SFC information in a portion of the source MAC address. Additionally, a compatible network device that implements the techniques of this disclosure stores a tunnel ID (identifier), an SFC ID, an index of a next service function to which the packet pill be transmitted, and an action for the packet, in the source MAC address of the packet.
Processor 104 may comprise a central processing unit (CPU), graphics processing unit (GPU), application specific integrated circuit (ASIC), digital signal processor (DSP), field programmable gate array (FPGA) or the like. Processor 104 may comprise any combination of the aforementioned. Processor 104 may also comprise one or more virtual devices, such as virtual processors of one or more virtual machines. Medium 106 may comprise software, firmware, non-volatile memory, or the like. Medium 106 may also be any combination of the aforementioned types of media. Processor 104 executes the instructions on medium 106.
Processor 104 receives a packet 108 e.g. via a network interface of device 102. In some examples, the network interface may comprise one or more virtual network interfaces. Packet 108 comprises source MAC address 110. Source MAC address 110 may comprise a MAC address in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802 format. In various examples, source MAC address 110 may be a 48 bit field of packet 108.
In the example of
SFC ID 114 identifies a particular service function chain that is associated with packet 108. An SFC comprises one or more service functions that network device(s) apply to packet 108. As an example, a service function chain may comprise a firewall service function followed by an intrusion prevention system service function.
SF index 116 corresponds to an index of a particular service function of the service function chain indicated by the value of SFC ID 116. For example, SF index 116 may indicate that a particular service that is to be performed, or has been performed on packet 108.
Tunnel ID 114 indicates a particular tunnel that is associated with packet 108. The tunnel ID indicates a particular tunnel through which packet 108 entered the SFC. Responsive to packet 108 completing the associated SFC, a device, such as device 102 may use tunnel ID 114 to determine a source network device. Device 102 may transmit packet 108 to the determined source network device. In various examples, Action Value 112, Tunnel ID 114, SFC ID 116, and SF index 118 may comprise fields of bits of source MAC address 110. The sizes of the bit fields of Action Value 112, Tunnel ID 114, SFC ID 116, and SF index 118 may be variable to accommodate different SFC configurations.
Device 102 stores Action Value 112, Tunnel ID 114, SFC ID 116, and SF index 118 in source. MAC address 110 to perform service function chaining. By storing the aforementioned fields in source MAC address 110, device 102 may be able to determine the service function chain associated with packet 108, the current service function in the service function chain, and an action (if any) to perform on packet 108. Responsive to traversing the service functions of the service function chain, device 102 may also be able to determine and transmit packet 108 to a source network device associated with packet 108.
By storing SFC data in the source MAC address as described herein, the techniques of this disclosure allow enable compatibility with campus environments, L3 gateway traversal, and transparency with legacy appliance middleboxes, which do not support MAC address chaining. Additionally, the variable numbers of bits that may be assigned to the various SFC-related fields in the source MAC address allow the SFC techniques of this disclosure to scale to hundreds or thousands of Service Chains on a single SFF, and to support hundreds of service functions per chain. Additionally, the action field supports out of band signaling from service functions, such as block flow and/or device signaling.
Thus, in accordance with examples of this disclosure, device 102 comprises a medium 106 storing instructions thereon. The instructions, when executed, cause processor 106 to: receive packet 108 comprising source MAC address 110, determine based on a first field of bits of source MAC address 110, a service function chain identifier 116 corresponding to a service function chain for packet 108.
The instructions further cause processor 106 to: determine, based on a second field of bits of source MAC address 110, a service function index (e.g. service function index 118) corresponding to a service function for the packet, determine, based on a third field of bits of the source MAC address, a tunnel identifier (e.g. tunnel identifier 114) corresponding to a tunnel for the packet, and determine, based on a fourth field of bits of the source MAC address, an action value (e.g. action value 112) for packet 108.
Service function controller 202 may comprise a software-defined networking (SDN) controller in various examples. Service function controller 202 may define service function chains and corresponding identifiers, service functions of service function chains, and tunnel identifiers of service function chains. Service function controller 202 may also define possible action values within a service function chain. In various examples, service function controller 202 may support various communication protocols, such as OpenFlow. Service function controller 202 may generate rules 204. Based on rules 204, device 102 may determine action value 112, service function chain ID 114, service function index 116, and tunnel ID 118.
In the example of
In various examples, device 102 may transmit packet 108 to one of service functions 212 based on SF index 116. In various examples, device 102 may modify fields of source MAC address 110 responsive to packet 108 completing one of service functions 212 of SFC 210. As an example, device 102 may modify the value of SF index 116 to indicate that packet 108 is to perform a subsequent one of service functions 212. In some examples, device 102 may increment the value of SF index 116 responsive to packet 106 completing one of service functions 212. Responsive to modifying the value of SF index 116, device 102 may transmit packet 108.
Responsive to packet 108 traversing service functions 212 of SFC 210, device 102 may receive packet 108, and perform additional operations on packet 108. In some examples, device 102 may transmit packet 108 to a source network device indicated by tunnel ID 118, e.g. source device 206. Source device 206 may comprise a switch, router, or any other network device as described herein, which originated packet 108.
In various examples, device 102 may also store a client ID 214 in packet 108. Client ID 214 may identify a device that originally sent packet 218. Responsive to receiving packet 108, device 102 may store source MAC address 110, e.g. in a lockup table based on client ID 214 that device 102 associates with each stored MAC address. In this manner, when packet 108 completes traversal of services of a service function chain (e.g., service functions 212 of SFC 210), device 102 may restore the original source MAC address based on the association between client ID 214 stored in packet 108 and the corresponding source MAC address.
Method 300 may start at block 302 at which point a computing device, such as device 102 may receive a packet, e.g. packet 108. At block 304, device 102 may store, in a source MAC address of the packet (e.g. source MAC address 110), a value indicating a tunnel identifier of the packet, e.g. tunnel ID 114. In some examples, the tunnel identifier may indicate source device associated with the packet, e.g. source device 206.
At block 306, device 102 may store, in the source MAC address, a value indicating a service function chain of the packet, e.g. SFC ID 116, which may indicate that packet 108 is associated with SFC 210. At block 308, device 102 may store in the source MAC address, an index value (e.g. SF IDX 118) indicating a service function of the service function chain of the packet. SF IDX 118 may indicate one of service functions 212 in various examples. At block 310, device 102 may transmit the packet, i.e. packet 108.
At block 406, device 102 may store, in the source MAC address, a value indicating a service function chain of the packet, e.g. SFC ID 116, which may indicate that packet 108 is associated with SFC 210 (illustrated in
At block 410, device 102 may store, in the source MAC address, a value (e.g. action value 112) indicating an action for the packet. In various examples, the value indicating the tunnel identifier may comprise a first field of bits of the source MAC address, the value indicating source function chain comprises a second field of bits of the source MAC address, the index value indicating the service function may comprise a third set of bits, and the value indicating the action for the packet may comprise a fourth set of bits.
At block 412, device 102 may transmit the packet, i.e. packet 108. In some examples packet 108 may traverse service functions 212 of SFC 210. At block 414, responsive to responsive to the packet completing the service function chain, device 102 may transmit the packet (e.g. packet 108) to the source network device indicated by the tunnel identifier, e.g. source device 206.
Processor 510 may be one or more central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 520. In the particular example shown in
As an alternative or in addition to retrieving and executing instructions, processor 510 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions in machine-readable storage medium 520. With respect to the executable instruction representations (e.g., boxes) described and shown herein, it should be understood that part or all of the executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box shown in the figures or in a different box not shown.
Machine-readable storage medium 520 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium 520 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), non-volatile memory, a storage drive, an optical disc, and the like. Machine-readable storage medium 520 may be disposed within system 500, as shown in
Referring to
Service function index storage instructions 526, when executed, may cause processor 510 to store, in a second bit field of the source MAC address, a service function index that corresponds to a service function of the service function chain. Tunnel identifier storage instructions 528, when executed, may cause processor 510 to store, in a third bit field of the source MAC address, a tunnel identifier, wherein the tunnel identifier corresponds to a source network device associated with the packet. Action value storage instructions 530, when executed, may cause processor 510 to store, in a fourth bit field of the source MAC address, an action value (e.g. action value 112), wherein the action value indicates an action for the packet.
Processor 610 may be one or more central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 620. In the particular example shown in
As an alternative or in addition to retrieving and executing instructions, processor 610 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions in machine-readable storage medium 620. With respect to the executable instruction representations (e.g., boxes) described and shown herein, it should be understood that part or all of the executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box shown in the figures or in a different box not shown.
Machine-readable storage medium 620 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium 620 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), non-volatile memory, a storage drive, an optical disc, and the like. Machine-readable storage medium 620 may be disposed within system 600, as shown in
Referring to
Service function chain storage instructions 628, when executed, may cause processor 610 to store, in a first bit field of the source MAC address, a service function chain identifier corresponding to the service function chain of the packet. Service function index storage instructions 630, when executed, may cause processor 610 to store, in a second bit field of the source MAC address, a service function index that corresponds to a service function of the service function chain. Tunnel identifier storage instructions 632, when executed, may cause processor 610 to store, in a third bit field of the source MAC address, a tunnel identifier, wherein the tunnel identifier corresponds to a source network device associated with the packet. Action value storage instructions 634, when executed, may cause processor 610 to store, in a fourth bit field of the source MAC address, an action value (e.g. action value 112), wherein the action value indicates an action for the packet.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2016/027047 | 4/12/2016 | WO | 00 |