This claims priority to United Kingdom Application No. GB1814625.8, filed Sep. 7, 2018, under 35 U.S.C. § 119(a). The above-referenced patent application is incorporated by reference in its entirety.
The present disclosure relates to a packet processing node in a data network. In particular, but not exclusively, the present disclosure relates to the processing of packets in a router.
In a communications network, network devices are arranged and configured to control how information is transmitted across the network. For example, in a packet-switched network, network devices such as routers, bridges, gateways, firewalls and switches may be deployed and configured to selectively forward packets across the network.
In a packet-switched network, there are typically two types of packets—data packets and control packets. Data packets relate to real content that is shared across the network and may be, for example, user generated packets intended for other users such as packets of an email message, or they may be packets received by a user such as packets of a web page sent from a web server. In nearly all communication networks, the data packets are the most common packets sent across the network, and are said to exist in the data plane of the network. Control packets are used to control the network by sharing control information between network devices. The control packets help ensure the network operates efficiently, securely, and in a scalable fashion. The control packets are typically sent less frequently than data packets, and are said to exist in the control plane of the network.
In Internet Protocol (IP) packet-based networks, the data and control IP packets are sent over the same connection between network devices. When a network device receives a stream of packets, the control packets can be separated from the normal data packets, and processed to make use of the control information contained within the control packets.
The control information contained in control packets may relate to a number of different control services used within the network. The format of the control information depends on the control service and may follow a particular protocol for that control service.
Typical control services used within a packet-based network include services for detecting failures of network devices in a network, Operations, Administration and Maintenance (OAM) functions, neighbour discovery/detection including link layer discovery, neighbour management (such as transmitting or receiving per-protocol Hellos to monitor liveness and discover neighbor capabilities), route calculation, validation and sharing, and streaming telemetry.
The size and complexity of a communication network can place varying demands on the data plane and control plane of a network device operating in the network. For wide area network (WAN) and internet-scale networks, the size and complexity of the network often requires network operators to implement high-performance network devices such as high-performance routers. However, as internet services such as cloud computing and video streaming continue to grow, there is increasing demand for network operators to scale up their network devices to cope with the growth. High performance routers are not always designed for easy upgrade, allowing for them to be efficiently scaled after purchase. Also, high performance monolithic routers often have multiple Central Processing Units (CPUs) internally and share load amongst them. Whilst this helps to manage certain data and control plane functions, the cost of buying these monolithic routing devices can be significant.
An alternative approach to the use of high-performance routers, is to deploy a relatively larger number of simpler commodity routers. Because of the increased numbers, these commodity routers are able to share and meet the bandwidth demands of the network traffic. Increased traffic or bandwidth can be managed by adding further commodity routers to the network. However, network complexity leads to greater demands on the control plane of each commodity router, and the commodity routers are often limited in their ability to handle the greater control plane demands of the network.
Network operators are able to mitigate this control plane limitation of commodity routers by disabling certain control services such as router validation or streaming telemetry. However, this disabling can impact on the performance or security of the network.
According to one aspect of the invention, there is provided a packet processing node comprising: an input to receive data and control packets; an output to send data and control packets; a control plane function to process control packets; and a forwarding function configured to receive data and control packets via the input, to forward received data packets to the output, and to forward received control packets to the control plane function; wherein the control plane function is configured to receive the control packets, and to determine which control packets are to be processed by the control plane function, and which control packets are to be processed externally.
In embodiments, the packet processing node control plane function may be configured to analyze the content of control packets to determine which control packets are to be processed by the control plane function, and which control packets are to be processed externally.
In embodiments, the packet processing node control plane function may be configured to determine which control packets are to be processed by the control plane function, and which control packets are to be processed externally based on other factors such as the particular input that the control packet was received on.
In embodiments, the header and/or a field of the control packet may be analyzed to determine where the packets should be processed.
In embodiments, the control plane function may be configured to direct control packets which are to be processed externally to an output of the packet processing node.
In embodiments, the control plane function may be configured to direct control packets which are to be processed externally to an external processor.
In embodiments, the control plane function may be configured to analyze the content of control packets to determine an external processor to process the control packet.
In embodiments, the control plane function is configured to provide, for the control packets, an address of the determined external processor.
In embodiments, the determined external processor may include a service function to process the control packet according to any one or more of the following services:
a network route calculation service;
a telemetry service for the packet processing node; and
a virtual private network service.
In embodiments, the control plane function may comprise a plurality of service functions, and the control plane function is configured to analyze the content of control packets to determine a service function in the control plane function to process the control packet.
In embodiments, the control plane function may be configured to direct the control packets to the determined service function.
In embodiments, the plurality of service functions may comprise one or more of the following services:
a failure detection service;
a neighbour discovery service; and
a neighbour management service.
In embodiments, the control plane function may comprise a central processing unit.
In embodiments, the forwarding function may comprise a network processing unit.
According to another aspect of the invention, there is provided a data center comprising: the packet processing node according to the first aspect of the invention, and a plurality of servers; wherein the control plane function of the packet processing node is configured to direct the control packets to be processed externally to a server of the plurality of servers.
In embodiments, the server of the plurality of servers is configured to send data packets to the input of the packet processing node.
In embodiments, the server of the plurality of servers is configured to receive data packets from the output of the packet processing node.
According to another aspect of the invention, there is provided a method of processing packets in a packet processing node comprising: receiving data and control packets at an input of a packet processing node; forwarding received data packets to an output of the packet processing node; forwarding received control packets to a control plane function of the packet processing node; and determining which control packets are to be processed by the control plane function, and which control packets are to be processed externally.
According to another aspect of the invention, there is provided a method of processing control packets in a packet processing node comprising: receiving control packets at a control plane function of a packet processing node from a forwarding unit in the packet processing node; analyzing the control packets to determine which control packets are to be processed internally in the packet processing node, and which control packets are to be processed externally to the packet processing node; processing control packets in the control plane function of the packet processing node if the control packets are determined to be processed internally; and directing control packets to an output of the packet processing node if the control packets are determined to be processed externally.
According to another aspect of the invention, there is provided a non-transitory computer-readable storage medium comprising computer-executable instructions which, when executed by a processor, cause a computing device to perform a method for use in processing control packets in a packet processing node, the method comprising: receiving control packets from a forwarding unit in the packet processing node; analyzing the control packets to determine which control packets are to be processed internally in the packet processing node, and which control packets are to be processed externally to the packet processing node; processing control packets in the packet processing node if the control packets are determined to be processed internally; and directing control packets to an output of the packet processing node if the control packets are determined to be processed externally.
In embodiments according to any of the above aspects, the step of analyzing the control packet in the control plan function can be a step that is adaptive to the processing capacity of the packet processing node or the external processor, or other aspects of a network in which the node is operative.
The aspects of the invention described above have particular benefits in commodity network devices such as commodity router that tend to be single devices with a single simple CPU, which may not be able to adequately support high levels of control plane processing work in a performant manner
Further features of embodiments of the present disclosure will become apparent from the following description of preferred embodiments, given by way of example only, which is made with reference to the accompanying drawings.
The network architecture of the data center 300 comprises a series of interconnected network devices such as routers and switches that transport data traffic in the form of IP data packets between the servers and the outside world via the internet 350. These same routers and switches also enable the servers 332, 334, 336, and 338 to communicate and exchange data and control packets with each other. The final connection 360 between the data center 300 and the internet 350 may be via one or more internet service providers. The network devices of the data center network architecture may also comprise devices such as firewalls, VPN gateways, and monitoring systems.
The network architecture in the data center 300 of
Certain control packets are addressed to and intended for receipt by the routers 310, 320, and 325. These control packets are not forwarded by the routers but are instead processed by a control plane function of the routers.
However, as the complexity and scale of the data center network architecture and the internet domain increases so the processing demands on the control plane functions increases accordingly (for example the size of the tables that need to be maintained by the control plane elements). To alleviate the burden of the control plane function on the routers themselves and to manage the control plane functions centrally, router systems can make use of a centralized control plane function. The control plane function of the router 320, 325 is offloaded to a separate controller 340. Management and configuration of the router control plane is then the responsibility of the controller 340. In other words, the full control plane is centralized and all management interaction for the routers 320, 325 is directed through the controller 340. All configuration for the routers 320, 325 is stored within the controller and instructions are passed to the network element on what it should do (program a route, send a message etc.). Control packets received by the routers 320, 325 are forwarded to the controller for updating configuration functions such as router tables in the controller. OpenFlow is an example of a system and protocol that makes use of a centralized control plane function on a separate controller.
There are a number of drawbacks with offloading the full control plane to a centralized controller 340. Firstly, the centralized control plane introduces limitations on scale. As the number of routers in the network architecture increases so the processing burden on the controller 340 increases. Also, the controller 340 needs to be logically situated with the network architecture so that it can efficiently serve the routers, which makes deployment of additional servers a more complex task. For low latency control plane services, the additional distance and protocol overhead can make the centralized control plane function slower and less efficient than a standalone router. Secondly, the centralized control plane increases the potential failure domain of the network architecture. A failure of the centralized controller 340 or a failure of one or more of the transport connections between the controller 340 and the servers 320, 325 can destabilize the network even though there may be no failure in the servers 320, 325 themselves. Thirdly, the need for interoperability between the centralized controller and the routers means that the set of compatible routers may be restricted, which can lead to vendor lock-in and less flexibility when scaling up a network architecture.
Embodiments in this disclosure provide a router which includes a control plane function in addition to a forwarding function. Embodiments allow the control plane function to be managed within the router itself. However, embodiments also allow certain elements of the control plane function for the router to be distributed to a separate server or host which may have more available processing capacity. In embodiments, the separate server or host may be connected to the router via a network connection.
In an example, the control plane function of the router may be broken down into distinct control plane services (microservices). Some of these microservices might run on the CPU of the router in question. In an example, the router may be a commodity or whitebox router with limited processing power within the control plane function. This can occur when the router uses a lower powerful Central Processing Unit (CPU) for the control plane function. Other microservices may be run on a separate server such as an x86 server, which may have more CPU cores available and so more processing capacity. The use of commodity routers has the benefit of keeping the cost of the network architecture relatively low, and provides for a cost-effective upgrade path when needing to scale up—particularly in network architectures which are already deploying significant x86 capacity in the form of the various servers implemented as above.
With this model, routers can be managed individually, maintain their own configuration, and implement certain control plane functions themselves. In this way, even if there is failure of a server or host that is providing certain (less critical) control plane functions, or a failure of a connection to the server or host, the router may still operate and continue to manage and maintain control plane functionality.
The forwarding function (or forwarding engine/forwarding plane) 110 operates to receive data and control packets via an input of the router 100, and to forward those data and control packets to an output of the router 100. Received control packets can also be delivered or forwarded by the forwarding function to the control plane function 120 of the router 100.
Control packets generated or handled by the control plane function 120 of the router 100 can also be passed to the forwarding function 110 for forwarding to the output of the router 100.
According to embodiments, the input of the router 100 may comprise four ports over which data and control packets can flow (also known as ingress). According to embodiments, the output of the router 100 may also comprises four ports over which data and control packets can flow (also known as egress). According to the embodiment of
The port interfaces may support different connection technologies such as Ethernet or optical fiber, and may include suitable Ethernet and optical fiber adaptors that can convert Ethernet and optical signals into suitable streams of packets, or convert packets into suitable Ethernet or optical signals.
In embodiments, the forwarding function may further comprise a forwarding processor 130 which is capable of forwarding packets between the flows 142, 144, 146, and 148. The forwarding processor 130 may be provided by a network processing unit (NPU) which may be provided in the form of an integrated circuit (e.g. an Application Specific Integrated Circuit—ASIC) that may be optimized or dedicated to the processing of data or control packets. The integrated circuit may be formed on a single chip package. If the router is running in a virtualized context the forwarding processor may be provided by a general-purpose CPU. A further alternative is that the forwarding processor is provided by a smart Network Interface Card (NIC).
The forwarding processor 130 may determine which ports to forward received packets to by analyzing the content of each packet. For example, the packet datagram may contain a number of distinct fields that can be analyzed to determine, for example, a destination address for the packet such as a destination IP address.
A destination address may be used by the forwarding processor 130 to lookup a next hop or route for the packet. In embodiments, the forwarding function 110 may include one or more forwarding tables 135 to lookup a suitable next hop or route for the packet. The forwarding processor 130 may be configured to interact with the forwarding table 135 to perform the lookup operation for each packet based on, for example, the destination address of the packet. Once a next hop or route has been determined for a packet then the forwarding processor 130 can decide which port to forward the packet to. The forwarding processor 130 may also modify the forwarded packets to add or modify fields contained therein based on information retrieved from the forwarding table 135. The forwarded packets may include forwarded data packets and/or forwarded control packets. The forwarding table 135 may be a Forwarding Information Base (FIB) or a MAC table, for example.
The forwarding processor 130 may analyze a received packet and determine that it is a control packet intended for the router 100. This may result from a field in the control packet specifically addressing the router using, for example, the IP address of the router 100. Alternatively, there may be a field in the control packet that indicates that the packet is a control plane protocol packet that should be processed by all routers participating in that protocol. Once it is determined that the control packet is intended for the router 100, the forwarding processor 130 forwards or delivers the control packet to the control plane function 120 of the router 100 via the logical connection 150.
Referring also to
When the forwarding function 110 determines that a control packet should be passed to the control plane function 120, the procedure moves to the control plane function by delivery of the control packet from the forwarding function 110 to the control plane function 120 over the logical interface 150 as illustrated by arrow 280 in
Control packets received by the control plane function 120 of the router 100 are analyzed to determine whether they should be processed locally by the router 100 or externally from the router 100 as illustrated by decision block 240 in
The decision on whether to process the control packet internally or externally may depend on a number of factors as will be discussed in more detail below. For example, the factors may depend on the contents of the control packet or on other information related to the control packet such as the port on which the control packet was received (the arrival port).
Referring now to
The control plane function 530 operates as a software function under the control of a Central Processing Unit (CPU) 535. The router 500 also includes a network operating system (NOS) 520 also under the control of the CPU 535. The control plane function 530 runs on the network operating system under the control of the CPU. The determination of whether to process the control packet locally or remotely is made by a decision step in the software program running within the control plane function 530 under the control of the CPU 535, and is made by an analysis in software of the fields contained in the control packet (see step 650 in
The control packet is passed to the control plane function 530 via the network operating system (NOS) 520 (see step 640 in
Once a decision has been made in the control plane function 530 to process the control packet remotely, the control plane function 530 directs the packet to an output of the router 500. Specifically, the control packet is supplied with a destination address of the external processor, and is provided to the NOS 520 for output via the output port B (see step 660 in
The control unit 750 may decide for another control packet to process the control packet internally within the router 700. The router 700 includes three control service processors 722, 724, and 726 which may be configured to process control packets according to a particular control service or protocol. The router 700 may include more or less than three control service processors. If the control unit 750 decides to process the control packet internally, it will send the control packet to the appropriate control service processor 722, 724, or 726. The appropriate control service processor will then process the control packet in accordance with the control service or protocol.
In some cases, the processing of one or more control packets may result in a need to program the forwarding function 710 from the control plane of the router 700. For example, a change may have been made to a routing table in the control plane which may result in a need to update a forwarding table in the forwarding function 710. The logical interface 770 may be used to program the forwarding function from the control unit 750. Alternatively, a dedicated programming interface may be provided for programming a forwarding table as illustrated in
The decision step performed in control unit 750 is important for deciding which control services are handled locally and which control services are handled remotely. The router 700 may include a management function 732 for configuring the various control services in the router 700 and the external processor 780. The management function 732 may receive configuration settings from a network administrator 730 via a suitable interface 731. The configuration settings may include one or more configuration files for setting out which control services should reside where, and how to access them.
When a new configuration file is received from the network administrator 730, the management function 732 will check to see if a control service has already been created for that particular service in the relevant location. If the control service is to be created locally, then the management function 732 creates that function in the router and couples it to the control unit 750 like control services 722, 724, and 726. If the control service is to be created remotely then the management function 732 instructs, via the offload interface unit 760 and the control plane offload interface, the control interface unit 782 of the external processor 780 to create that control service. If the control service was already running in a different location than that specified in the configuration file, it may need to be restarted to allow the system to continue functioning without loss of data, whilst the service is “moved” to run on the new location.
The benefit of this configuration approach is that the division of control services and hence processor demand can be flexibly controlled between the router and the external processor. This is especially helpful when there are variations in the available processor capacity of the router versus the external processor, or when the likely control service load is in flux or hard to predict in advance.
If the router 700 is configured to form part of a data center network architecture then there can be even further benefits from the flexible division of processing effort between the router and the external processor 780. For example, with reference to
The decision on which control packets are processed locally, and which control packets are processed externally may depend on the characteristics of the control service. In general, processor intensive control services that do not present a high risk of causing failures are ideal for processing externally. These may include:
network route calculation services such as those that perform the Dijkstra algorithm as part of Open Shortest Path First (OSPF); or algorithms that calculate Loop Free Alternates (LFA).
telemetry service for the router; and
virtual private network services such as L2VPN, L3VPN, and EVPN.
A virtual private network service may be designed to service VPN control packets that require initial VPN processing followed by VPN network route calculation.
In general, control services that have strict latency requirements, are critical to the operation of the router, or which have relatively low processing requirements are ideal for processing internally on the router. These may include:
failure detection services;
neighbour discovery services; and
a neighbour management service.
Looking at specific examples of services:
Failure Detection
Bidirectional Failure Detection (BFD) is a time sensitive protocol used to detect link or node or interface failures. For use cases where fast (sub-50 ms) protection switching is required, failures must be detected and acted upon fast. Distributing that function to the remote processor may not be sensible—as it would add additional latency. For use cases where a large number of BFD sessions is used to monitor a large number of logical interfaces (e.g. service interfaces provided to customers) where the protection switching requirements are not as time-critical, distributing BFD function to the external processor may make much more sense—it allows far more BFD session to be run, and the additional latency may not be significant.
Neighbour Discovery/Detection
Link Layer Discovery Protocol (LLDP) is a simple protocol used to determine information about network peers, and relaying that information to management. This is therefore an example of a protocol that is important to the manageability of the network element, and offloading this control service could make debugging harder in the case of failure of the external processor or connectivity to the external processor.
Neighbour Management
Open Shortest Path First Neighbour Management (OSPF NM) covers the neighbour management aspects of OSPF (such as sending Hellos). This is a relatively lightweight control service and it is important it happens in a timely manner, so a microservice that implements this does not want to be contending with CPU intensive microservices which may command CPU resources that could unnecessarily delay Hellos from being originated or processing.—possibly risking timeouts and causing errors. Therefore, this service is likely to be configured locally.
Route Calculation
OSPF PM provides a route calculation that includes an implementation of the Dijkstra algorithm which runs over the network. Other microservices do something similar such as LFA (which determines loop free alternate paths) or BGP RM which runs over the set of BGP routes for a particular address family—for example, it may run over the received IPv4 prefixes from all BGP peers (potentially measured in the millions for internet scale). These components can be CPU intensive in scaled networks. Therefore they are more suitable to distribute to a more powerful external processor.
Other protocols such as Link Aggregation Control Protocol, are likely to not be CPU intensive, so there is little benefit in offloading them.
Although the above embodiments relate primarily to routers, it is apparent that the same principles can be applied to packet processing nodes in general such as firewalls, bridges, gateways, and switches.
It is to be understood that any feature described in relation to any one embodiment may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the embodiments, or any combination of any other of the embodiments. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of embodiments of the present disclosure, which is defined in the accompanying claims.
Number | Date | Country | Kind |
---|---|---|---|
GB1814625.8 | Sep 2018 | GB | national |