TUNNEL PROVISIONING WITH LINK AGGREGATION
20230124803 · 2023-04-20
Inventors
Cpc classification
H04L47/724
ELECTRICITY
H04L45/00
ELECTRICITY
Y02D30/50
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
H04L45/50
ELECTRICITY
International classification
H04L45/50
ELECTRICITY
H04L45/00
ELECTRICITY
H04L47/724
ELECTRICITY
Abstract
A method for processing data packets in a communication network includes establishing a path for a flow of the data packets through the communication network. At a node along the path having a plurality of aggregated ports, a port is selected from among the plurality to serve as part of the path. A label is chosen responsively to the selected port. The label is attached to the data packets in the flow at a point on the path upstream from the node. Upon receiving the data packets at the node, the data packets are switched through the selected port responsively to the label.
Claims
1. A method for assigning and utilizing an Ethernet data port in an Ethernet Link Aggregation Group (LAG) in a Multi-Protocol Label Switching (MPLS) network, the method comprising the steps of: assigning, by a first MPLS/LAG switch, a single port of a LAG to a network tunnel, wherein the single port of the LAG meets a bandwidth requirement of the network tunnel, and wherein the single port of the LAG has a port serial number; dedicating a sub-set of bits in a data packet label prepared by the first MPLS/LAG switch to encode the port serial number of the single port of the LAG into the data packet label; sending, by the first MPLS/LAG switch, the data packet label, in which the port serial number of the single port is encoded, to a node; receiving from the preceding node, by the first MPLS/LAG switch, a data packet comprising the data packet label, in which the port serial number of the single port is encoded; and sending the data packet from the first MPLS/LAG switch to a second MSPLS/LAG switch via the single port having the port serial number encoded in the data packet label.
2. The method of claim 1, further comprising the step of receiving from a node located upstream from the first MPLS/LAG switch, by the first MPLS/LAG switch, a message requesting configuration of the network tunnel, the message further requesting the data packet label associated with the network tunnel.
3. The method of claim 2, wherein the message comprises an RSVP-TE PATH message augmented with a LABEL_REQUEST object.
4. The method according to claim 3, wherein the request comprises an indication of a service property, and wherein the selecting comprises identifying a port in compliance with the service property.
5. The method according to claim 4, wherein the service property comprises at least one of: a guaranteed bandwidth; a peak bandwidth; and a class of service.
6. The method according to claim 1, wherein the selecting comprises selecting a single port having a maximum available bandwidth of the plurality of data ports.
7. The method according to claim 1, wherein the selecting comprises selecting a port having a minimum available bandwidth of the plurality of data ports which is not less than the bandwidth requirement of the network tunnel.
8. The method according to claim 1, wherein the switching the data packet is according to a mapping function.
9. The method according to claim 1, wherein the preparing comprises inserting into the data packet label a set of bits that identify the single port; and wherein the switching the data packet comprises extracting the set of bits to determine an identity of the single port.
10. The method according to claim 1, wherein the preparing comprises storing the data packet label along with an identifier of the single port in a memory, and wherein the switching the data packet comprises retrieving the identifier from the memory responsively to the data packet label.
11. The method according to claim 1, further comprising the steps of: selecting a backup port from among the plurality of data ports, different from the single port; and responsively to a service interruption of the single port, switching the data packet to the backup port and sending the data packet to the second MPLS/LAG switch via the backup port.
12. The method according to claim 11, further comprising the step of responsive to a restoral of the service interruption of the single port, reverting switching of the data packet from the backup port and sending the data packet to the second MPLS/LAG switch via the single port.
13. The method according to claim 1, wherein the first MPLS/LAG switch comprises a Label Switched Router (LSR).
14. The method of claim 1, further comprising the step of designating by the first MPLS/LAG switch, the plurality of data ports in the first MPLS/LAG switch as a single logical port.
15. An apparatus for assigning and utilizing an Ethernet data port in an Ethernet Link Aggregation Group (LAG), the apparatus comprising a processor, which is configurable to: assign a single port of a LAG to a network tunnel, wherein the single port meets a bandwidth requirement of the network tunnel, and wherein the single port has a port serial number; dedicate a sub-set of bits in a data packet label to encode the port serial number of the single port of the LAG into the data packet label; publish the packet label upstream; and a mapper, which is configured to: receive a data packet from an upstream node; detect the data packet label in the data packet; and if the data packet contains the data packet label, send the data packet to a MPLS/LAG switch via the single port.
16. The apparatus according to claim 15, wherein the processor is configured to make the selection in compliance with a service property.
17. The apparatus according to claim 16, wherein the service property comprises at least one of a group consisting of a guaranteed bandwidth, a peak bandwidth, and a class of service.
18. The apparatus according to claim 17, wherein the processor is configured to make the selection of a port having a maximum available bandwidth of the plurality of ports.
19. The apparatus according to claim 17, wherein the processor is configured to make the selection of a port having a minimum available bandwidth of the plurality of ports which is not less than the bandwidth requirement of the network tunnel.
20. The apparatus according to claim 15, wherein the processor is configured to insert into the data packet label a set of bits which identify the single port; and wherein the mapper is configured to extract the set of bits to determine an identity of the single port.
21. The apparatus according to claim 15, further comprising a memory, and wherein the processor is configured to store the data packet label along with an identifier of the single port in the memory, and wherein the mapper is configured to retrieve the identifier from the memory responsively to the data packet label.
22. The apparatus according to claim 15, wherein the processor is further configured to select a backup port from among the plurality of data ports, different from the single port, and wherein the mapper is further configured, responsively to a service interruption of the single port, to direct the first MPLS/LAG switch to switch the data packet to the backup port, and send the data packet to the second MPLS/LAG switch via the backup port.
23. The apparatus according to claim 15, wherein the first MPLS/LAG switch comprises a Label Switched Router (LSR).
24. The apparatus according to claim 15, wherein the processor comprises a network processor.
25. The apparatus according to claim 15, wherein the plurality of data ports are selected from a single logical port.
26. A method for assigning and utilizing an Ethernet data port in an Ethernet Link Aggregation Group (LAG) in a Multi-Protocol Label Switching (MPLS) network, the method comprising the steps of: receiving from a preceding node located upstream from a first MPLS/LAG switch, at the first MPLS/LAG switch, a message requesting configuration of a network tunnel, the message further requesting a data packet label associated with the network tunnel, the message specifying a bandwidth requirement; assigning, at the first MPLS/LAG switch, a single port of a LAG to the network tunnel wherein the single port of the LAG, which meets the specified bandwidth requirement, wherein the single port of the LAG has a port serial number; dedicating a sub-set of bits in a data packet label prepared by the first MPLS/LAG switch to encode the port serial number of the single port of the LAG into the data packet label; sending, by the first MPLS/LAG switch, the data packet label, in which the port serial number of the single port is encoded, to anode; receiving from a node located upstream, at the first MPLS/LAG switch, a data packet that includes the data packet label, in which the port serial number of the single port is encoded; and sending the data packet from the first MPLS/LAG switch to a second MSPLS/LAG switch via the single port having the port serial number encoded in the data packet label.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0015]
[0016]
[0017]
[0018]
[0019]
DETAILED DESCRIPTION OF EMBODIMENTS
[0020]
[0021] An MPLS tunnel 28 (a label switched path, or LSP, according to the MPLS specification cited above) is established from an ingress node in MPLS network A, through the two switches and the LAG group, to an egress node in MPLS network B. (The ingress and egress nodes are not shown in the figure.) The tunnel forms a path over which data frames traverse from the ingress node to the egress node. In the exemplary configuration of
[0022] As part of the MPLS tunnel provisioning process (which is described in RFC 3031) each LSR along tunnel 28 attaches an MPLS label to the packets it transmits downstream to the next LSR, identifying the packets that belong to tunnel 28. Thus, in the example shown in
[0023] The exemplary network configuration shown in
[0024]
[0025] Switch 26 has an RSVP-TE processor 30 and a CAC (Connection Admission Control) processor 32, which handle MPLS tunnel provisioning and the associated signaling. Although processors 30 and 32 are shown, for the sake of conceptual clarity, as separate functional units, in practice these two functions are typically implemented as software processes on the same processor. Practically speaking, they may generally be regarded as a single processor, regardless of implementation. Switch 26 also has a mapper 34, which maps each MPLS payload to a specific physical Ethernet port 24 (following the payload encapsulation into an Ethernet frame), according to methods which will be described below.
[0026] The methods described herein typically address a unidirectional packet flow, i.e., packets flowing from MPLS network A to MPLS network B. The methods are presented in this way because MPLS tunnels are unidirectional by definition. This fact does not limit the disclosed methods in any way to unidirectional message flows. Bidirectional packet flow is typically implemented by setting up two separate, independent MPLS tunnels.
[0027] MPLS/LAG switch 26 may be implemented using a network processor, which is programmed in software to carry out the functions described herein and is coupled to suitable hardware for interfacing with the MPLS network and Ethernet ports. Switch 26 may either include a standalone unit or may alternatively be integrated with other computing functions of the network processor. Some or all of the functions of switch 26 can also be implemented using a suitable general-purpose computer, a programmable logic device, an application-specific integrated circuit (ASIC) or a combination of such elements.
[0028]
[0029] Mapper 34 of switch 26 performs a mapping function that uses information carried in one or more fields of the encapsulated MPLS packet to select the physical Ethernet port for mapping the packet. The IEEE 802.3ad standard cited above does not dictate any particular mapping method for link aggregation, other than forbidding frame duplication and requiring that frame ordering be maintained over all frames in a given flow. In practice, to meet these requirements, the mapper typically maps all frames in a given MPLS tunnel to the same physical port.
[0030] The mapping function typically uses MPLS label 52 for mapping, since the MPLS label uniquely identifies MPLS tunnel 28, and it is required that all MPLS packets belonging to the same tunnel be switched through the same physical port 24. Additionally or alternatively, the mapping function uses a “PW” label (pseudo wire label, formerly known as a virtual connection, or VC label), which is optionally added to MPLS header 50. The PW label includes information that the egress node requires for delivering the packet to its destination, and is optionally added during the encapsulation of MPLS packets. Additional details regarding the VC label can be found in an IETF draft by Martini et al. entitled “Encapsulation Methods for Transport of Ethernet Frames Over IP/MPLS Networks” (IETF draft-ietf-pwe3-ethernet-encap-07.txt, May, 2004), which is incorporated herein by reference. In some embodiments, mapper 34 applies a hashing function to the MPLS and/or PW label, as will be described below.
Port Coding
[0031]
[0032] The method of
[0033] CAC processor 32 of switch A receives the PATH message and extracts the requested service properties. The CAC processor examines the available bandwidth of all ports 24 in LAG group 25 and selects a single physical port (“the selected physical port”) on which to allocate bandwidth for MPLS tunnel 28, responsively to the requested service properties, at a port selection step 62. The selected physical port should be capable of providing sufficient peak and average bandwidths, as requested by the preceding node (and, originally, by the ingress node).
[0034] In one embodiment the CAC processor selects the physical port having a maximum available bandwidth out of the ports of LAG group 25. This approach attempts to distribute the packet flows evenly among the physical ports. In an alternative embodiment, the CAC processor may follow a “first-to-fill” strategy, i.e., select a physical port that will reach the highest utilization after allocating the requested bandwidth to tunnel 28. Any other suitable selection criteria may be applied by CAC processor 32. In the event that none of physical ports 24 has sufficient available bandwidth to comply with the requested service properties, the CAC processor returns an error message to the preceding node and denies the provisioning of tunnel 28. After successfully selecting the physical port, the CAC processor allocates and reserves the requested bandwidth for tunnel 28.
[0035] Regardless of the selection criterion used, the results of step 62 are that (1) a single physical port is explicitly selected and assigned to MPLS tunnel 28, and (2) sufficient bandwidth is allocated to tunnel 28, considering only the available bandwidth of the selected physical port, rather than the total available bandwidth of LAG group 25. All packets belonging to tunnel 28 will be switched through the same selected physical port, using the port coding technique described herein below.
[0036] Having selected a physical port, RSVP-TE processor 30 of switch A now generates a suitable MPLS label, at a label generation step 64. The preceding node upstream of switch A will subsequently attach this MPLS label to all MPLS packets transmitted through tunnel 28 to switch A. The label is assigned, in conjunction with the mapping function of mapper 34, so as to ensure that all MPLS packets carrying this label are switched through the physical port that was selected for this tunnel at step 62. For this purpose, RSVP-TE processor 30 of switch A dedicates a sub-set of the bits of MPLS label 52 to encode the serial number of the selected physical port. For example, the four least-significant bits of MPLS label 52 may be used for encoding the selected port number. This configuration is suitable for representing LAG groups having up to 16 physical ports (N<16). The remaining bits of MPLS label 52 may be chosen at random or using any suitable method known in the art.
[0037] RSVP-TE processor of switch 26 sends the generated MPLS label upstream to the preceding node, using an RSVP-TE RESV message augmented with a LABEL object, at a label sending step 66. At this stage, the part of tunnel 28 between the preceding node and switch A is provisioned and ready for use. The preceding node attaches the aforementioned MPLS label to all subsequent MPLS packets that it sends downstream through tunnel 28 to MPLS/LAG switch A, at a packet sending step 68.
[0038] Mapper 34 of switch A maps the received packets belonging to tunnel 28 to the selected physical Ethernet port at a mapping step 70. For this purpose, mapper 34 extracts the MPLS label from each received packet and decodes the selected physical port number from the dedicated sub-set of bits, such as the four LSB, as described in step 64 above. The decoded value is used for mapping the packet to the selected physical port, which was allocated by the CAC processor at step 62 above. In the four-bit example described above, the mapping function may be written explicitly as: Selected port number=((MPLS label) and (0x0000F)), wherein “and” denotes the “bitwise and” operator.
[0039] In an alternative embodiment, RSVP-TE processor 30 generates an arbitrary MPLS label at step 64 and stores this label together with the corresponding serial number of the selected physical port in a lookup table or other data structure. At step 70, the mapper extracts the MPLS label from each received MPLS packet and queries the lookup table with the MPLS label value to determine the physical port through which to switch the packet.
Inverse Hashing
[0040]
[0041] In this method, the mapping function used by mapper 34 of switch A A is a hashing function. Various hashing functions are known in the art, and any suitable hashing function may be used in mapper 34. Since the hashing operation is performed for each packet, it is desirable to have a hashing function that is computationally simple.
[0042] As mentioned above, the hashing function typically hashes the value of MPLS label 52 to determine the selected physical port, as the MPLS label uniquely identifies tunnel 28. For example, the following hashing function may be used by mapper 34: Selected port number=1+((MPLS label) mod N), wherein N denotes the number of physical Ethernet ports in LAG group 25, and “mod” denotes the modulus operator. Assuming the values of MPLS labels are distributed uniformly over a certain range, this function achieves a uniform distribution of port allocations for the different MPLS labels. It can also be seen that all packets carrying the same MPLS label (in other words— belonging to the same MPLS tunnel) will be mapped to the same physical port.
[0043] Returning to the description of
[0046] Having generated the MPLS label, RSVP-TE processor of switch A sends the MPLS label upstream to the preceding node, at a label sending step 86, which is identical to label sending step 66 of
[0047] Mapper 34 of switch A maps each received packet to the selected physical port of LAG group 25 using the hashing function, at a hashing step 90. Mapper 34 extracts the MPLS label from each received packet and uses the hashing function to calculate the serial number of the selected physical port, which was selected by the CAC processor at step 82. Following the numerical example given above, the mapper extracts MPLS label=65647 from the packet. Substituting this value and N=3 into the hashing function gives: Selected port number=1+(65647 mod 3=2, which is indeed the port number selected in the example above.
Lag Protection
[0048] The IEEE 802.3ad standard cited above describes a protection mechanism for cases in which one of ports 24 fails or is intentionally taken out of service for any reason. In this case, the mapping function should distribute the data packets among the remaining ports. When using link aggregation in conjunction with tunneling methods such as MPLS, all packets belonging to a given tunnel should be switched through a single port 24. This property should be maintained in case of failure or port reconfiguration.
[0049] In an embodiment of the present invention, one of the N ports 24 of LAG group 25 is not used under normal network conditions and is maintained as a backup port. In the event that one of the active N-1ports 24 fails or is taken out of service, switch A replaces the failed port with the backup port. As all ports 24 typically have equal bandwidths, the service properties required by tunnel 28 can be maintained.
[0050] In one embodiment, switch A may revert to the original port as soon as it recovers or returned into service. In an alternative embodiment, once the backup port has replaced a failed port, it continues to function as an ordinary port. The failed port, once recovered, begins to function as a backup port.
[0051] Although the methods and systems described hereinabove address mainly MPLS and Ethernet link aggregation, the principles of the present invention may also be used in conjunction with other communication protocols. For example, the methods described above may be adapted for use with other types of labeled traffic flows, such as flows labeled in accordance with other tunneling methods, and other link aggregation methods.
[0052] It will thus be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art.