Service functions are those services provided by a provider to process a data packet. These service functions may be performed on the data packet between networking components. As such, these service functions may provide an enhancement to network operations and/or provide additional services.
The service functions are those services, processes, operations, and/or functions which may be administered by a provider to add value to packet transportation and processing. Other service functions may operate as a final destination in a networking system. For example, the service functions may include those services which add value, control quality of service, enhance privacy, and/or provide internal tracking mechanisms. Examples of the service function may include deep packet inspection (DPI), firewalls, tracking packet sizes, encryption/decryption, latency improvements, improvements in resolving addresses, improvements in transferring information to cover packet losses, network address translation, post-identification inspection, network forwarding policy, layer four-layer seven (L4-L7) switching, multiprotocol label switching (MPLS), virtual local area network (VLAN) switching, meta-data switching, hypertext transfer protocol (HTTP) enhancement, data caching, accounting, parental controls, call blocking, call forwarding, etc. The deployment of these service functions are based on the ability to create a service function path and/or pipeline to instances of these service functions for the traffic to flow through to these service functions. As referred to throughout this document, the term service function instance is the individualized service function while the term service function path includes a series of these service function instances to be performed on a given packet during transportation.
Service functions are implemented using a variety of techniques. One technique is based on a hard wired static network configuration. When using this method changes in the service function locations are very costly since they require physically re-wiring the network. Other methods have been proposed to solve the problems caused by hard wired configurations which use proprietary switching formats, tunneling, packet flow policy switching, etc. This results in a highly complex system and service functions may become incompatible with existing infrastructure within a network. For example, the service function may use newer protocol formats which may be impractical on existing infrastructure. Additionally, a packet may be modified to route to particular service function, but this may cause issues as the more the packet is changed, these changes may affect other networking aspects. For example, modifications to layers three through layers seven (L3-L7) may become complicated because packet modifications may cause further issues down the line in transporting the packet within the network.
Further, if a service function processes a high number of packets, this may create a bottleneck resulting in congestion. If the congestion occurs over a long enough period of time, this may lead to packet loss. Splitting the packet load over redundant service functions may be inefficient as the available capacity of the service functions are not taken into consideration.
To address these issues, some examples disclosed herein provide a mechanism to enable load balancing across service functions and/or management functions in existing infrastructure, in the context of Service Function Forwarders (SFFs) and/or load balancers for media access control (MAC) chaining. Examples include a load balancer to identify a service function and/or management function among multiple functions based on a capacity available at each of the service and/or management functions. The available capacity is the amount of resources for example bandwidth, CPU capacity, memory etc., at each function which is free to perform packet processing. Taking into consideration the available capacity at each function, the load balancer can efficiently distribute packets to the appropriate function.
Example functions include control plane functions such as MAC filter table trace, and data plane functions such as chain segment/branch tracing and continuity tests, MAC frame statistics, forwarded frames (MAC signature), dropped frames (MAC signature), delay measurements, load measurement feedback, and the like. Pre-provisioning management functions can check the operation of the service function chain (SFC) before live traffic is placed on the SFC. Tracing can be used to determine all the paths in the chain, including complex chains having branches and multiple paths, where example management frames enable testing of all paths (in contrast to relying on data that may not exercise all paths in a chain). Failure detection management functions enable isolation of the failure inside the network, and identifying where the chain is broken. Failure detection can be based on a continuity check message, whereby failure is detected by the loss of a continuity check message. Failure detection can also be used to raise a notice of the failure through a management plane, thereby flagging the failure for management to handle.
Upon identifying the service and/or management function(s), the load balancer modifies the signature address in the packet to correspond to the identified service function and/or management function. Modifying the signature address, a networking component distributes the packet to the identified service function and/or management function. Modifications to the signature address provide compatibility of service function chaining on existing infrastructure in the context of MAC chaining. For example, when packets egress from the networking component, these packets with the signature address modifications are considered standard network frames without format change(s). Additionally, modifying the signature address provides the ability to insert and delete service function(s) and/or management function(s) with ease. This provides an additional level of control over the service function(s) and/or management function(s) performed on a given packet.
In another example discussed herein, the modified signature address is modified within a layer two (L2) portion of the packet and as such may further include modifying a media access control (MAC) address. Modifying the L2 portion of the packet provides less risk as the modifications to the L2 portion is less likely to affect other networking aspects. Also, modifications to the MAC address enables the compatibility of the service functions on existing infrastructure.
Examples disclosed herein provide a mechanism in which a service function chain may be compatible on existing infrastructure. Additionally, the examples enable a flexibility for routing the packet to a particular service function and/or management function. Furthermore, examples disclosed herein enable the realization of MAC chaining in a virtual machine. The virtual machine can be implemented in a computer with memory, such as a server or a server card in equipment. A Service Function Forwarder (SFF) for MAC chaining can perform many operations in software (a function or process written in software), such as: looking up a MAC Chaining destination address (DA), looking up a MAC Chaining DA and source address (SA) together, adding a MAC chaining header (which may be a single header based on lookup or a load balanced header based on lookup), removing a MAC chaining header, maintaining tables for forwarding lookup, recognizing management frames, performing extra functions based on the management frame context, performing proxy functions, storing a packet context, converting a packet to standard form, converting a packet to MAC chain format, sending packets to service function(s), and so on. Accordingly, examples implementations described here can receive a packet including a signature address, and use a filter table for Media Access Control (MAC) chaining to identify corresponding service function chains. A load balancer identifies at least one of i) a service function instance among a plurality of service function instances, and ii) a management function instance among a plurality of management function instances, for packet distribution among the plurality of corresponding functions based on an available capacity of the corresponding functions.
Referring now to the figures,
The networking component 100 transmits the packet 102 to a load balancer 130. The load balancer 130 proceeds to identify a management function(s) 122 and/or service function(s) 120 among multiple functions 120, 122. Upon identifying the corresponding management and/or service function(s), the load balancer 130 proceeds to modify the signature address 104 in the packet 102 to produce a modified signature address indicating a location for the networking component 100 to forward the packet 102 accordingly. As such, the modified signature address corresponds to the identified service and/or management function(s). The correspondence allows the networking component 100 to appropriately route the packet 102 to the service function(s) and/or management function(s) that have the capacity to handle the traffic (e.g., the packet 102), based on balancing the loads between the various functions. The management function(s) 122 and/or service functions 120 may include those service functions a networking carrier may wish to perform upon the packet 102 when routing between computer nodes in the networking system. As such, each management function(s) 122 and/or service function(s) 120 can include a different address indicating the location of where to route the packet 102. In one implementation, the management function(s) 122 and/or service functions 120 are each a different corresponding management and/or service function instance. The management and/or service function instances are considered individual service function events which may be performed on the packet 102. The load balancer 130 can be located between a service function forwarder (SFF) and each management and/or service function instance. Thus, when the management and/or service function instance is performed, the packet 102 is routed back to a SFF for the appropriate distribution. In another implementation, the management function(s) 122 and/or service function(s) 120 each include a different service function path. A given service function path is a series of service function and/or management function instance. The load balancer 130 can be located between an ingress classifier (not illustrated in
The networking component 100 is the networked computing device which may establish the data connection with other networking components and/or forward the packet 102 accordingly. As such, the networking component 100 receives the packet 102 and transmits to the load balancer 130. Implementations of the networking component 100 include a multi-port network device, multi-layer switch, media access control (MAC) switch, router, virtual switch, virtual controller, or other type of networking component capable of receiving the packet 102 for transmission to other networking components.
The traffic as illustrated by the packet 102, is received by the networking component 100 to identify the signature address 104. In one implementation, an ingress classifier (not illustrated) receives the packet 102 and transmits to the load balancer 130. The load balancer 130 in turn modifies the signature address 104 from the packet 102 to produce the modified signature address 114. Although the traffic is illustrated as a single packet 102, this was done for illustration purposes as the traffic may include multiple packets. As such, the packet 102 is considered a networking packet or data frame which is a formatted unit of data carried by the networking system. For example, the data packet 102 or data frame consists of wire formats for standardizing portions of the packet 102. Accordingly, the packet 102 consists of at least two kinds of data including network control information and user data (i.e., the payload). As such, the control information may further include the signature address 104. The control information provides data for the networking system to deliver the payload to the appropriate destination. For example, the control information may be part of an open systems interconnection (OSI) model and as such may include the data that characterizes and standardizes the internal communication functions by partitioning the network control into various abstract layers, such as layers one through layers seven (L1-L7). This control information may be found within the headers and/or trailers. In this example, the signature address 104 would be considered part of the layer two (L2) portion of the packet 102.
The signature address 104 is a unique identifier assigned within the packet 102 for communications on a physical networking segment. Upon receiving the packet 102 with the signature address 104, the load balancer 130 identifies which of the service and/or management functions 120, 122 has the capability of available resources to handle the packet 102. Upon identifying the service and/or management function to handle the packet 102, the signature address 104 is changed to a modified signature address to correspond to the identified service and/or management function. In one implementation, the signature address 104 is a media access control (MAC) address while in another implementation, the signature address 104 is part of the L2 portion of the packet 102.
The load balancer 130 receives traffic (e.g., packet 102) and in turn determines which service and/or management function 120, 122 in which to distribute the traffic. Upon determining which service and/or management function 120, 122 to distribute the traffic, the load balancer 130 proceeds to implement the modified signature address to distribute the traffic to the appropriate service and/or management function. The load balancer 130 may include a type of load distribution engine and as such implementations may include, electronic circuitry (i.e., hardware) that implements the functionality of the load balancer 130. In this example, load balancer 130 may include by way of example, an integrated circuit, application integrated circuit (ASIC), controller, virtual controller, processor, semiconductor, processing resource, chipset, semiconductor, or other type of hardware or software implemented component capable of the functionality of the load balancer 130. Alternatively, the load balancer 130 may include instructions (e.g., stored on a machine-readable medium) that, when executed by a hardware component (e.g., processor and/or controller), implements the functionality of the load balancer 130.
The networking component 100 uses the signature address 104 to identify which service and/or management function 120, 122 to route the traffic based on the available capacity at each of the service and/or management functions 120, 122. Identifying the particular service and/or management function 120, 122 among the multiple service and/or management functions 120, 122 based on the available capacity is a mechanism in which to perform the load balancing of traffic. The networking component 100, namely the load balancer 130, identifies which of the service and/or management function(s) 120, 122 to distribute the traffic, accordingly. This decision can be based on, e.g., the available capacity at each of the service and/or management functions 120, 122. This available capacity may be determined through various techniques including, but not limited to: the available resources of one or more of the service and/or management functions 120, 122; feedback from one or more of the service and/or management functions 120, 122; reactively tracking which service and/or management function 120, 122 is the least loaded with traffic; predictively estimating how much traffic was sent at one or more of the service and/or management functions 120, 122; ordering a number of the service and/or management functions 120, 122; performing a weighted distribution on one or more of the service and/or management functions 120, 122; tracking which service and/or management function 120, 122 may be more efficient than others; and based on historical performance of one or more of the service and/or management functions 120, 122. Based on the identification of which service and/or management function 120, 122 to distribute the traffic, the load balancer 130 modifies the signature address 104 to obtain the modified signature address, to direct the location of the service and/or management function 120, 122 for performance.
In an example implementation, the networking component 100 can utilize the filter table 110 to locate identified service and/or management functions and the corresponding modified signature address, according to the various mappings 112, 114, 116. The filter table 110 may include various signature address mappings 112 (e.g., modified signature address(es)), and the corresponding mappings to service and/or management function(s) 114, 116. In an example implementation, the load balancer 130 modifies a media access control (MAC) address from the signature address mappings 112. For example, the load balancer 130 can modify a destination address (DA) and/or source address (SA) to achieve a modified destination address (DA′) and modified source address (SA′) (see
The signature address mappings 112 represent addresses at which the identified service and/or management function(s) are located. Thus, the modified signature address mappings 112 can provide the location of where to distribute the traffic, accordingly. Upon identifying which service and/or management function 120, 122 to distribute the traffic, the networking component 100 proceeds to identify that address from the filter table 110 corresponding to the identified service and/or management function. As such, the networking component 100 proceeds to transform the signature address 104 using the filter table 110. Although the signature address mappings 112 can include both a modified destination address (DA′) and a modified source address (SA′), this was done for illustration purposes and implementations should not be limited. For example, the signature address mappings can include a modified destination address alone, or in addition, may also include the modified source address.
The service and/or management function(s) 120, 122 are those function instances or function paths as provided by the network carrier for processing traffic. A given service and/or management function 120, 122 can represent a different function path or different function instance. Thus, each different function can correspond to a different modified address. In one implementation, each service and/or management function 120, 122 is located at a different networking component, while in another implementation, each service and/or management function 120, 122 is implemented as a virtual function. Although
A classifier 218 receives traffic 102 and in turn may transmit the traffic to either the load balancer over the function paths 220 or to a service function forwarder (SFF) 226. The classifier 218 forms an initial encapsulation and may set the initial meta-data for each packet in the traffic 102. The route of the traffic 102 to either the load balancer over the function paths 220 or the load balancer over function instances 228 may be dependent on which load balancer is implemented in the networking system. For example, if the load balancer of the function paths 220 is implemented but not the load balancer of function instances 228, then traffic 102 is routed to the load balancer 220. At modules 222-224 and 230-232, each load balancer 220 and 228 proceeds to identify which function path or function instance for traffic distribution based upon the available capacity at each respective service or management function. Upon identifying the respective function path or function instance, the respective load balancer 220 or 228 modifies a signature address in the traffic 102 to correspond to the identified function path 234 or function instance 236. The identified function path 234 is the series of service and/or management function instances to process the traffic 102. Upon completion of identified function path 234, the networking component forwards the traffic 102 to the final destination. The identified function instance may include one of the service and/or management function instances 236 (service function instance 1, service function instance 2, management function instance 1, or management function instance 2), and as such, the traffic 102 may be routed to one of the function instances and back to the SFF 226 for forwarding to the final destination.
The system of
Implementing MAC chaining Service Function Forwarding (SFF) in software, as illustrated in
A vport can represent an abstraction, and portions illustrated in
The described operations can be preprogrammed by a software controller and a local FDB update process, which may be the same as the SFF process. MAC addresses that do not match any forwarding entries may be passed on to exception handling software (other processes) for statistics or other operations. The operation may also be setup on demand by detecting a missing lookup. MAC chaining packets may be forwarded transparently through normal bridging operations until they reach an SFF process that owns the MAC DA in the header.
The SFF process of filter table 125 looks up either the MAC DA, or the MAC DA and SA together, to determine the next operation from the Forwarding Database. The FDB determines the next operation. In an example, the existing MAC chaining header is removed and another MAC chaining header is added, based on the FDB table operation. The new header may be to a single service and/or management function in the chain, or load balanced (via load balancer 130) to several parallel service and/or management functions in a chain, e.g., based on a load balancing distribution function. Load balancing distribution functions may use additional information in the packet or from the service/management functions to determine the next service/management function.
When the packet header is added, the SFF 125 forwards the packet out the vNIC 150 to the next destination. This may involve passing a pointer to the DMA logic and notifying the DMA to send the packet out the vNIC 150. The next destination may be a native Ethernet network or a virtual Ethernet network as provided by various tunnel technologies (VxLAN, PBB, Ethernet VPN etc.).
Often a SFF process forwards a packet to a service/management function that will return the packet back to the same SFF process. A special case is a proxy SFF process where the service/management function is MAC chaining unaware, and the SFF does the MAC chaining by proxy. In this case, the SFF process is to remember the context of the forwarded packet, to continue the forwarding on to another entity (service function, management function, SFF, or chain termination function) in the chain.
Management function processing is enabled by the SFF process being able to check the packet for management function headers that follow the MAC chaining headers. The check for a management frame allows the SFF process to trace and monitor the SFF data plane. Management functions may consume more processing resources than normal SFF functions, and therefore the SFF may delay the processing of management frames. By having the SFF process in software, the SFF can be placed anywhere, including being placed in computing resources that are co-located with the service and/or management functions themselves.
The VNIC portion 150 is optional. In alternate example implementations, such as a system passing information to a SFF process 125 that would be co-located in the same networking component/switch, the DMA operations can be avoided and message passing can be used instead. Thus, the DMA operations in
In block 510, a filter table to be used in Media Access Control (MAC) chaining, is to map between signature addresses of a packet, service function chains, and corresponding service functions and management functions. For example, the filter table includes a plurality of signature addresses 112 that a system can use to uniquely look up a given signature address 104 of a received packet, and map that address to a unique service function 120 and/or management function 122.
In block 520, a load balancer is to identify at least one of i) a service function instance among a plurality of service function instances, and ii) a management function instance among a plurality of management function instances. Such identifications enable packet distribution among the plurality of corresponding functions, based on an available capacity of the corresponding functions. For example, the system can identify available capacity using techniques including, but not limited to: the available resources of the functions; feedback from the functions; reactively tracking which function is the least loaded with traffic; predictively estimating how much traffic was sent at the functions; ordering of the functions; performing a weighted distribution on the functions; tracking which function may be more efficient; and based on historical performance of the functions.
In block 530, a controller is to modify tables of packet signature addresses usable to modify the packet corresponding to the identified at least one of the i) service function and ii) management function, to cause the packet to be forwarded accordingly. For example, a load balancer can modify a switch signature address in a packet to produce a modified signature address indicating a location to forward the packet accordingly. As such, the modified signature address corresponds to the identified service and/or management function(s). The packet can thereby be appropriately routed to the service function(s) and/or management function(s) having the capacity to handle the traffic, based on balancing the loads between the various functions.
Examples provided herein may be implemented in hardware, software, or a combination of both. Example systems can include a processor and memory resources for executing instructions stored in a tangible non-transitory medium (e.g., volatile memory, non-volatile memory, and/or computer readable media). Non-transitory computer-readable medium can be tangible and have computer-readable instructions stored thereon that are executable by a processor to implement examples according to the present disclosure.
An example system (e.g., including a controller and/or processor of a computing device) can include and/or receive a tangible non-transitory computer-readable medium storing a set of computer-readable instructions (e.g., software, firmware, etc.) to execute the methods described above and below in the claims. For example, a system can execute instructions to direct a system to cause packets to be forwarded based on available capacity of service and/or management functions in the context of MAC chaining, based on any combination of hardware and/or software to execute the instructions described herein. As used herein, the processor can include one or a plurality of processors such as in a parallel processing system. The memory can include memory addressable by the processor for execution of computer readable instructions. The computer readable medium can include volatile and/or non-volatile memory such as a random access memory (“RAM”), magnetic memory such as a hard disk, floppy disk, and/or tape memory, a solid state drive (“SSD”), flash memory, phase change memory, and so on.