WO2021056945A1 - 一种在sr网络中转发报文的方法、设备和系统 - Google Patents

一种在sr网络中转发报文的方法、设备和系统 Download PDF

Info

Publication number
WO2021056945A1
WO2021056945A1 PCT/CN2020/073785 CN2020073785W WO2021056945A1 WO 2021056945 A1 WO2021056945 A1 WO 2021056945A1 CN 2020073785 W CN2020073785 W CN 2020073785W WO 2021056945 A1 WO2021056945 A1 WO 2021056945A1
Authority
WO
WIPO (PCT)
Prior art keywords
identifier
identifiers
pointer
segment
value
Prior art date
Application number
PCT/CN2020/073785
Other languages
English (en)
French (fr)
Inventor
李呈
李振斌
夏阳
田太徐
肖亚群
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to KR1020227010885A priority Critical patent/KR20220052371A/ko
Priority to CA3175941A priority patent/CA3175941A1/en
Priority to BR112022005853A priority patent/BR112022005853A2/pt
Priority to CN202080050898.7A priority patent/CN114365464B/zh
Priority to EP20867794.8A priority patent/EP4020909B1/en
Priority to EP23220203.6A priority patent/EP4373048A3/en
Priority to JP2022519200A priority patent/JP7481436B2/ja
Priority to CN202310212314.7A priority patent/CN116319524A/zh
Publication of WO2021056945A1 publication Critical patent/WO2021056945A1/zh
Priority to US17/703,614 priority patent/US20220217081A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/122Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/127Shortest path evaluation based on intermediate node capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/741Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/256Routing or path finding in ATM switching fabrics
    • H04L49/258Grouping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Definitions

  • This application relates to the field of communications, and in particular to a method, network equipment and system for forwarding messages in an SR network.
  • Segment routing is a protocol designed based on the concept of source routing to forward data packets on the network. It supports the explicit designation of the data packet forwarding path at the source node.
  • IPv6 Internet Protocol Version 6
  • SRv6 IPv6 segment routing
  • SRv6 extends the segment routing header (SRH) on the basis of IPv6.
  • the SRH includes a segment identification list (segment identification list, SID list).
  • the SID list includes a plurality of segment identifications (SIDs) arranged in sequence, each representing a plurality of segments, and each segment is an instruction or a set of instructions for processing a message.
  • the SRH is encapsulated in a message, and the SR network's processing process for the message is carried by the segment identifier list in it.
  • the length of each SID in the SRv6 network is 128 bits (bit), and every time an SID is added to the SID list, the length of the SRH will increase by 128 bits, and the length of the message will also increase by 128 bits.
  • the increase of the packet length will cause a large amount of network resources, such as bandwidth, to be occupied during the forwarding process.
  • the SRH needs to include 100 SIDs.
  • the length of the SID list is as high as 1600 bytes, and the length of the SID list is too long, which reduces the efficiency of message transmission in the SR network.
  • too long SRH length will increase the difficulty of message processing.
  • the length of the message window read by a node at one time is limited, such as 128 bytes, while the length of SRH is 1600 bytes, which is much longer than the length of the message window read at one time.
  • the entire SRH reading process needs to pass The read operation can be completed multiple times, which reduces the efficiency of message processing.
  • the present application provides a method, device, and system for forwarding messages, which are used to solve the technical problem that the length of the segment identifier list is too long, and the network transmission efficiency is reduced and the processing efficiency is reduced.
  • this application provides a method for processing messages.
  • the method is applied to a segmented routing SR network, and includes: receiving a message, the message header of the message includes a destination address field, a first pointer, a second pointer, and a list for processing the message, the list It includes multiple identifiers arranged in sequence, the multiple identifiers are mapped to multiple segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate that the multiple identifiers The position of the first identifier in the list; the first identifier is determined according to the value of the first pointer and the value of the second pointer; the first identifier is copied to the destination address field.
  • This method sets a newly added first pointer in the message header, and the segment left (SL) pointer, that is, the second pointer, together to form a two-dimensional pointer, indicating the compressed segment identifier (Compressed SID, C-SID) The position in the SID list.
  • the list includes multiple identifiers arranged in sequence, specifically: the list includes at least one element arranged in sequence, and the at least one element includes The first element, the first element includes at least two identifiers of the plurality of identifiers, the at least two identifiers are arranged in sequence, the first identifier is one of the at least two identifiers; the first The value of a pointer and the value of the second pointer together indicate the position of the first identifier of the plurality of identifiers in the list, specifically: the value of the second pointer is used to determine the first element In the position in the list, the value of the first pointer is used to determine the position of the first identifier in the first element.
  • This method uses C-SID instead of 128-bit SID to represent segments when generating the SID list, so for the same number of segments, the length of the SID list formed by C-SID is much smaller than the length of the SID list formed by SID . Thereby reducing the length of the message and improving the transmission efficiency and processing efficiency of the network.
  • the first pointer includes the first indicator in the at least two identifiers. IDs.
  • the value of the first pointer is used to determine that the first identifier is located at all
  • the position in the first element is specifically: the value of the first pointer indicates the position of the second identifier in the first element, and the second identifier is the first identifier in the plurality of identifiers The previous identifier of the; said determining the first identifier according to the value of the first pointer and the value of the second pointer includes: modifying the value of the first pointer in the header of the message to So that the value of the first pointer after the modification indicates the position of the first identifier in the first element; the first pointer is determined according to the value of the first pointer after the modification and the value of the second pointer One logo.
  • the value of the first pointer is used to determine that the first identifier is located at all
  • the position in the first element is specifically: the value of the first pointer indicates the position of the first identifier in the first element; the copying the first identifier into the destination address field
  • the method further includes: modifying the value of the first pointer in the header of the message, so that the modified value of the first pointer indicates the value of the second identifier in the first element Location, the second identifier is the latter identifier of the first identifier in the at least two identifiers.
  • the value of the second pointer is used to determine whether the first element is located at all
  • the position in the list is specifically: the value of the second pointer indicates the position of the second element in the at least one element in the list, and the second element is the position of the first element in the at least one element.
  • the previous element in an element; the value of the first pointer is used to determine the position of the first identifier in the first element, specifically: the value of the first pointer indicates that the second identifier is in the The position in the second element, the second identifier is the previous identifier of the first identifier in the plurality of identifiers, the second element includes at least one identifier of the plurality of identifiers, and the at least one identifier The identifiers are arranged in order, the second identifier is one of the at least one identifier, and the destination address field includes a second identifier; the determining the value of the first pointer and the value of the second pointer
  • the first identifier includes: determining that the second identifier is the last identifier in the at least one identifier; modifying the value of the second pointer in the header of the message so that the modified second identifier
  • the value of the pointer indicates the position of the first element in the list; the value of the first pointer in the header
  • the value of the second pointer is used to determine whether the first element is located at all
  • the position in the list is specifically: the value of the second pointer indicates the position of the first element in the list; the value of the first pointer is used to determine that the first identifier is in the first
  • the position in the element is specifically: the value of the first pointer indicates the position of the first identifier in the first element; after the first identifier is copied to the destination address field,
  • the method further includes: determining that the first identifier is the last of the at least two identifiers; modifying the value of the second pointer in the header of the message, so that the modified first identifier
  • the value of the second pointer indicates the position of the second element in the list, and the second element is the next element of the first element in the at least one element; modifying the position in the message header of the message The value of the first pointer, so that the modified value of
  • the multiple segments are mapped to multiple segment identifiers one by one, and the multiple Each identifier is mapped to the plurality of segment identifiers one by one, and each segment identifier of the plurality of segment identifiers includes a first part and a second part, and the first part is before the second part, and the plurality of The first part of all the segment identifiers in the identifier is the same, and each identifier in the plurality of identifiers includes the second part of the segment identifier to which each identifier is mapped.
  • the destination address field includes the first part.
  • the length of the element is 128 bits, 64 bits, or 32 bits.
  • the multiple segments are mapped to multiple segment identifiers one by one, and the multiple identifiers are mapped to the multiple segment identifiers one by one, so
  • Each segment identifier in the plurality of segment identifiers includes a first part, a second part, and a third part arranged in sequence, and the first part of all the segment identifiers in the plurality of segment identifiers is the same.
  • the third part of all segment identifiers is the same, and each identifier in the plurality of identifiers includes the second part of the segment identifier to which each identifier is mapped.
  • the total length of the first part, the second part, and the third part is 128 bits.
  • the method further includes: receiving structure information of the destination address field, where the structure information indicates that the first identifier is at the destination address Adding position in the field; the copying the first identifier to the destination address field includes: according to the structure information, copying the first identifier to the first identifier in the destination address field The added location in.
  • the receiving the structure information of the destination address field includes: receiving a control message, the control message including the structure information, and the The control message is an intermediate system-to-intermediate system IS-IS protocol message, an open shortest path first OSPF protocol message, or a border gateway protocol BGP protocol message.
  • the length of each of the multiple identifiers is 32 bits or 16 bits.
  • this application provides a method for forwarding messages.
  • the method is applied to a segmented routing SR network, and includes: receiving a message; generating a message header and encapsulating the message header into the message, the message header including a first pointer, a second pointer, and processing
  • the list of messages the list includes a plurality of identifiers arranged in sequence, the plurality of identifiers are mapped to a plurality of segments in the SR network one by one, the value of the first pointer and the second pointer
  • the value of collectively indicates the position of the first identifier in the plurality of identifiers in the list; the message encapsulated with the message header is sent.
  • This method sets a newly added first pointer in the message header, and the SL pointer, that is, the second pointer, together constitute a two-dimensional pointer, indicating the position of the C-SID in the SID list.
  • the multiple segments are mapped to multiple segment identifiers one by one, and the multiple identifiers are mapped to the multiple segment identifiers one by one, so Each segment identifier in the plurality of segment identifiers includes a first part and a second part, the first part is before the second part, the first part of all the segment identifiers in the plurality of segment identifiers is the same, and the multiple Each of the identifiers includes the second part of the segment identifier to which the each identifier is mapped.
  • this method uses compressed segment identifiers instead of 128-bit SIDs to represent segments, so that the 128-bit element pointed to by the SL pointer in the segment identifier list can accommodate multiple segments corresponding to multiple segments.
  • a compressed segment identifier Thereby reducing the length of the message and improving the transmission efficiency and processing efficiency of the network.
  • the generating the message header includes: the second part of the segment identifier to which each segment of the plurality of segments is mapped As the identifier to which each segment is mapped to generate the list; and generate the message header according to the list.
  • the generating the packet header includes: receiving the list, and Each identifier of the plurality of identifiers in the list includes the second part of the segment identifier to which the segment to which each identifier is mapped is mapped.
  • the length of the first part is X bits, X is an integer, and X is greater than or equal to 1 and less than 128, the length of each of the plurality of identifiers is 128-X bits.
  • the list does not include the first part.
  • the message header further includes a destination address field, and the message is generated.
  • the header and encapsulating the header into the message further include: adding the first part to the destination address field; and copying the first identification of the plurality of identifications into the destination address field.
  • the list includes multiple identifiers arranged in sequence, specifically: the list Includes at least one element arranged in sequence, the first element of the at least one element includes at least two identifiers of the plurality of identifiers, the at least two identifiers are arranged in sequence, and the first identifier is the at least One of two identifiers; the value of the first pointer and the value of the second pointer together indicate the position of the first identifier of the plurality of identifiers in the list, specifically: the second pointer The value of indicates the position of the first element in the list, and the value of the first pointer indicates the position of the first identifier in the first element.
  • the first pointer includes the first indicator in the at least two identifiers. IDs.
  • the list includes a first paragraph identifier, and the first paragraph identifier is located at all Before the first identifier of the plurality of identifiers, the first segment identifier is mapped to a segment in the SR network, and the length of the first segment identifier is 128 bits.
  • the first paragraph identifier and the first one of the multiple identifiers are adjacent, and the first segment identifier includes a start identifier, and the start identifier is used to indicate that the next identifier of the first segment identifier in the list is the first identifier of the plurality of identifiers.
  • the first segment identifier includes a function field and a parameter field, and the function The field includes the start flag, and the parameter field includes the first pointer and a number flag, and the number flag is used to indicate the number of the multiple flags.
  • the list includes a second paragraph identifier, and the second paragraph identifier is After the last identifier of the plurality of identifiers, the first segment identifier is mapped to a segment in the SR network, and the length of the first segment identifier is 128 bits.
  • the second paragraph identifier is the last one of the multiple identifiers
  • the identifiers are adjacent, and the second segment identifier includes an end identifier, and the end identifier is used to indicate that the previous identifier of the second segment identifier in the list is the last identifier of the plurality of identifiers.
  • the multiple segments are mapped to multiple segment identifiers one by one, and the multiple identifiers are mapped to the multiple segment identifiers one by one, so
  • Each segment identifier in the plurality of segment identifiers includes a first part, a second part, and a third part arranged in sequence, and the first part of all the segment identifiers in the plurality of segment identifiers is the same.
  • the third part of all segment identifiers is the same, and each identifier in the plurality of identifiers includes the second part of the segment identifier to which each identifier is mapped.
  • the total length of the first part, the second part, and the third part is 128 bits.
  • the message header further includes a destination address field
  • the message header is generated and encapsulated into the message
  • the method further includes: adding the first part and the third part to the destination address field; and copying the first identification of the plurality of identifications to the destination address field.
  • the method further includes: sending structure information to an intermediate network device, the structure information indicating that the first identifier is in the destination address field Where to add.
  • the length of each of the multiple identifiers is 32 bits or 16 bits.
  • this application provides a network device that executes the first aspect or any one of the possible implementation methods of the first aspect.
  • the network device includes a unit for executing the method in the first aspect or any one of the possible implementation manners of the first aspect.
  • this application provides a network device that executes the second aspect or any one of the possible implementation methods of the second aspect.
  • the network device includes a unit for executing the second aspect or the method in any one of the possible implementation manners of the second aspect.
  • this application provides a network device, which includes a processor, a network interface, and a memory.
  • the network interface can be a transceiver.
  • the memory may be used to store program code, and the processor is used to call the program code in the memory to enable the network device to execute the foregoing first aspect or any one of the possible implementation manners of the first aspect, which will not be repeated here.
  • this application provides a network device, which includes a processor, a network interface, and a memory.
  • the network interface can be a transceiver.
  • the memory may be used to store program code, and the processor is used to call the program code in the memory to make the network device execute the foregoing second aspect or any one of the possible implementation manners of the second aspect, which will not be repeated here.
  • this application provides a network system that includes the network device provided in the foregoing third aspect and the network device provided in the fourth aspect, or the network system includes the network device provided in the foregoing fifth aspect and the sixth aspect.
  • the network equipment provided by the above.
  • the present application provides a computer-readable storage medium having instructions stored in the computer-readable storage medium, which when run on a computer, cause the computer to execute the methods described in the foregoing aspects.
  • this application provides a computer program product including computer program instructions, when the computer program product is run on a network device, the network device can execute any of the first aspect, the second aspect, and the first aspect A possible implementation manner or a method provided in any one of the possible implementation manners of the second aspect.
  • the present application provides a chip including a memory and a processor, the memory is used to store a computer program, and the processor is used to call and run the computer program from the memory, so that the chip executes the first aspect and its On the one hand, the method in any possible implementation manner; or, the processor is used to call and run the computer program from the memory, so that the chip executes the second aspect or the method in any possible implementation manner of the second aspect.
  • the above-mentioned chip only includes a processor, and the processor is used to read and execute a computer program stored in the memory.
  • the chip executes the method in the first aspect or any possible implementation of the first aspect
  • the chip executes the second aspect or the method in any possible implementation manner of the second aspect.
  • FIG. 1 is a schematic diagram of an application scenario provided by an embodiment of the application
  • FIG. 2A is a schematic diagram of a format of a segment identifier provided by an embodiment of this application.
  • 2B is a schematic diagram of a message format provided by an embodiment of this application.
  • FIG. 3 is a schematic flowchart of a method for processing a message according to an embodiment of the application
  • FIG. 4A is a schematic diagram of a format of a compressed segment identifier provided by an embodiment of this application.
  • FIG. 4B is a schematic diagram of a message format provided by an embodiment of this application.
  • 4C is a schematic diagram of a format of a compressed segment identifier provided by an embodiment of the application.
  • 4D is a schematic diagram of the format of a compressed segment identifier provided by an embodiment of this application.
  • FIG. 5A is a schematic diagram of a message format provided by an embodiment of this application.
  • FIG. 5B is a schematic diagram of a format of a compressed segment identifier provided by an embodiment of this application.
  • FIG. 5C is a schematic diagram of a message format provided by an embodiment of this application.
  • FIG. 5D is a schematic diagram of a format of a compressed segment identifier provided by an embodiment of this application.
  • FIG. 6 is a schematic structural diagram of a network device provided by an embodiment of this application.
  • FIG. 7 is a schematic structural diagram of a network device provided by an embodiment of this application.
  • FIG. 8 is a schematic structural diagram of a network device provided by an embodiment of this application.
  • FIG. 9 is a schematic structural diagram of a network device provided by an embodiment of this application.
  • FIG. 10 is a schematic structural diagram of a network system provided by an embodiment of this application.
  • FIG. 1 shows a possible application scenario of an embodiment of the present application.
  • This scenario includes an SR network, and the SR network includes network equipment S, network equipment 1, network equipment 2, network equipment 3, network equipment 4, network equipment 5, network equipment 6, and network equipment 7.
  • These network devices can be switches, routers or repeaters.
  • These network devices can also be virtual machines.
  • the network device S may be an entrance device of the network.
  • the network may also include a controller, which is not shown in FIG. 1.
  • the controller can generate the SID list corresponding to the forwarding path of the packet and send it to the network entry device.
  • the controller can send control messages containing network configuration information to other network devices in the network.
  • the message processing process in the SR network consists of multiple segments, and each segment is an instruction or a set of instructions for processing the message.
  • Each segment has a corresponding segment identifier, namely SID.
  • the segment identifier includes two types: node segment identifier (node SID) and adjacent segment identifier (adjacent SID).
  • Fig. 2A shows the format of the SID in the SRv6 network. As shown in Fig. 2A, each SID may include a location (Locator) field and a function (Function) field.
  • the location field in the SID is used to locate the specific network device that executes the instruction or instruction set included in the segment.
  • the location field includes a prefix (Prefix) part and a sequence number (Node ID) part.
  • Prefix a prefix
  • Node ID a sequence number
  • the prefix part of the SID of all network devices is the same.
  • sequence number part of the SID of each network device is different, and each sequence number part is used to uniquely identify a network device in the domain.
  • the network device that is uniquely determined by the sequence number part of the SID is the network device that executes the segment indicated by the SID.
  • the function field in the SID is used to indicate the specific content of the instruction or instruction set included in the segment, that is, the function in the SRv6 network.
  • the functions in the SRv6 network may also involve parameters, which are represented by the Argument field in the SID (not shown in Figure 2). When the function does not involve parameters, the parameter field may not be included in the SID.
  • the total length of the SID in the SRv6 network is 128 bits.
  • the location field and the function field are respectively specific lengths, and these specific lengths can be changed through network settings.
  • the position field is 48 bits and the function field is 80 bits, or the position field is 64 bits and the function field is 64 bits, or the position field is 48 bits, the function field is 64 bits, and the parameter field is 16 bits.
  • FIG. 2B shows the format of the message in the SRv6 network.
  • the header of the message includes an IPv6 header and SRH.
  • the IPv6 header includes a destination address (DA) field.
  • the SRH includes a SID list, and the SID list includes multiple SIDs arranged in sequence.
  • the SRH also includes a segment left (segments left, SL) pointer, and the SL pointer is used to indicate the number of remaining segments to be processed.
  • each value of the SL pointer corresponds to a specific number of remaining segments to be processed. For example, the value of the SL pointer is 3, which means that the number of remaining segments to be processed is 4.
  • the SL pointer points to the SID currently to be processed, that is, the fourth SID from the bottom, and the value of the SL pointer is 0, then It means that the number of remaining segments to be processed is one, and it can also be understood that the SL pointer points to the SID currently to be processed, that is, the last SID.
  • the network device After determining the current SID to be processed according to the SL pointer, the network device copies the SID to the DA field in the IPv6 packet header, and processes the packet according to the content in the DA field, for example, forwards the packet.
  • the value of the SL pointer is updated every time a segment is executed.
  • the position of the SL pointer in the SID list is offset by the length of the SID, that is, 128 bits.
  • the multiple segments represented by multiple SIDs are executed sequentially, and the value of the SL pointer is constantly updated to ensure that the SL pointer always points to the currently pending SID.
  • the forwarding path of the message is from the network device S to the network device 1, passing through the network device 2 in turn.
  • Network equipment 3, network equipment 4, network equipment 5, network equipment 6, reach network equipment 7.
  • the forwarding path also includes network device 1 to network device 7, a total of 7 network devices.
  • Packets are forwarded at each network device.
  • the forwarding processing behavior at each network device corresponds to a segment, which means that the SID list of the entire packet forwarding process includes 7 SIDs.
  • the length of each SID is 128 bits, and the length of the SID list is 112 bytes, which leads to an increase in the length of the message and reduces the transmission efficiency and processing efficiency of the network.
  • the embodiment of the present application provides a method for processing a message, and a device and system based on the method. These methods, equipment and systems are based on the same inventive concept. The principles of the method, device and system for solving the problem are similar. Therefore, the embodiments of the method, device and system can be referred to each other, and the same or similar parts will not be repeated.
  • the embodiment of the present invention provides a method for processing a message.
  • This method is applied to an SR network and involves network equipment 301 and network equipment 302.
  • the network device 301 may be a network entry device, which is used to encapsulate the SID list in a message, for example, the network device S shown in FIG. 1.
  • the network device 302 may be a forwarding device in the network for processing packets according to the SID list, for example, the network device 1, the network device 2, the network device 3, the network device 4, the network device 5, and the network device 6 shown in FIG. 1 Or network equipment 7.
  • the compressed segment identifier (Compressed SID, C-SID) is used instead of the 128-bit SID to represent the segment, and the CL pointer is set in the message header, and the SL pointer forms two
  • the dimension pointer indicates the position of the C-SID in the SID list, so for the same number of segments, the length of the SID list formed by the C-SID is much smaller than the length of the SID list formed by the SID. Thereby reducing the length of the message and improving the transmission efficiency and processing efficiency of the network.
  • Fig. 3 shows the flow of the method, and the method includes:
  • S310 The network device 301 receives the message.
  • the network device 301 may receive a message sent by the host, and the message may be a service message.
  • the host can be a terminal device such as a personal computer, a mobile phone or a tablet computer.
  • the network device 301 generates a message header and encapsulates the message header into the message.
  • the message header includes a first pointer, a second pointer, and a list for processing the message, and the list includes a sequential arrangement
  • the multiple identifiers are mapped to multiple segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate that the first identifier of the multiple identifiers is The position in the list.
  • the message header includes an IPv6 message header and SRH, and the list is the SID list in the SRH.
  • the network device 301 For the received message, the network device 301 generates a message header including the SID list and encapsulates the message header into the received message, so as to facilitate processing of the message.
  • each segment used to process a message has a specific segment identifier, that is, an SID, that is, the multiple segments used to process the message are mapped to multiple SIDs one by one.
  • each SID may include a location field and a function field, and the location field includes a prefix part and a serial number part. The sum of the length of the location field and the function field may be 128 bits.
  • the prefix part of the SID of all network devices is the same, and the sequence number part of the SID of each network device is different, and each sequence number part is used to uniquely identify a network device in the domain.
  • each SID can be divided into two parts, the first part includes a prefix part, and the second part includes a serial number part and a function field.
  • the first part of all SIDs is the same, while the second part of each SID is different.
  • the sum of the length of the first part and the second part is 128 bits. Therefore, in order to reduce the length of the SID list, you can omit the first part above, that is, omit the prefix part of the position field of the SID, and use the second part, the sequence number part and the function field, as the compressed segment identifier, that is, the C-SID, as shown in Fig. Shown in 4A. Therefore, the SID list includes multiple C-SIDs arranged in sequence, and each C-SID is mapped to a segment in the SR network.
  • the SID of the network device 1 may be A1::0001:1111, the length of the SID is 128 bits, and "::" represents all 0 bytes.
  • A1::0001 is the position field
  • the length is 112 bits
  • A1/96 is the prefix part
  • "/96” represents the 96-bit mask
  • 0001 is the serial number part
  • the length is 16 bits.
  • 1111 is a function field with a length of 16 bits.
  • the first part of the SID is A1, and the second part is 0001:1111.
  • the second part is taken as the C-SID, that is, the C-SID is 0001:1111 and the length is 32 bits.
  • the SIDs of network device 2, network device 3, network device 4, network device 5, network device 6, or network device 7 can be A1::0002:2222, A1::0003:3333, A1::0004, respectively: 4444,A1::0005:5555,A1::0006:6666,A1::0007:7777.
  • the C-SID of these network devices can be 0002:2222,0003:3333,0004:4444,0005:5555,0006:6666,0007:7777, and the length is 32 bits.
  • the C-SID includes the serial number part and function field of the SID, and the length of the C-SID is determined by the sum of the serial number part and the length of the function field of the SID.
  • the length of the C-SID is the same as the sum of the sequence number part of the SID and the length of the function field.
  • the length of the C-SID may be 32 bits, or the length of the C-SID may be 16 bits.
  • each SID can also be divided into three parts, where the first part includes the prefix part, the second part includes the serial number part and the function field, and the third part is padding.
  • Content (padding).
  • the third part of all SIDs is the same, filled with the same content, such as all 0s.
  • the sum of the length of the first part, the second part and the third part is 128 bits, and the sum of the length of the first part and the second part is less than 128 bits.
  • the SID of the network device 1 may be A1::0001:1111::, the length of the SID is 128 bits, and "::" represents all 0 bytes.
  • A1::0001 is the position field and the length is 64 bits
  • A1/48 is the prefix part
  • "/48” represents the 48-bit mask
  • 0001 is the serial number part
  • the length is 16 bits.
  • 1111 is a function field with a length of 16 bits. That is, the first part of the SID includes A1 with a length of 48 bits, the second part includes 0001:1111 with a length of 32 bits, and the third part includes a part of all 0s with a length of 48 bits.
  • the second part is taken as the C-SID, that is, the C-SID is 0001:1111 and the length is 32 bits.
  • some devices may not be able to process 128-bit data at a time.
  • some ASIC chips can only process 80-bit data at a time.
  • each SID is set to include the filling content in the third part.
  • the third part in the DA field may not be processed, but only the first part and the second part are processed. Therefore, the data length that needs to be processed expands the adaptation range of network equipment.
  • FIG. 4B shows a structure of a message encapsulated with a message header, where the message header includes an IPv6 message header and an SRH, and the SRH includes an SID list.
  • the SID list corresponding to the forwarding path may include 7 C-SIDs as shown in FIG. 4B.
  • the length of each C-SID is 32 bits, and the length of 7 C-SIDs is 224 bits.
  • the length of the SID list is greatly reduced, which improves the transmission efficiency and processing efficiency of the network.
  • the C-SID of each network device can be released through the extended control plane protocol.
  • the prefix part of the SID in the SRv6 network domain can also be advertised through the extended control plane protocol.
  • Control plane protocols that can be used such as Interior Gateway Protocol (IGP), Border Gateway Protocol (Border Gateway Protocol, BGP), Border Gateway Protocol link state (Border Gateway Protocol link state, BGP-LS) or path calculation communication Protocol (Path Computation Element Communication Protocol, PCEP) and so on.
  • the SID list including the C-SID can be generated by the controller or by the network portal device.
  • the controller calculates the forwarding path of the message, generates an SID list corresponding to the forwarding path, the SID list includes the C-SID, and the controller sends the SID list to the network entrance device.
  • the network entry device calculates the forwarding path of the message, and generates an SID list corresponding to the forwarding path, and the SID list includes the C-SID.
  • the controller calculates the forwarding path of the message and generates an SID list corresponding to the forwarding path.
  • the SID list includes the SID but not the C-SID, and the controller sends the SID list to the network entrance device, and the network entrance device A new SID list is generated according to the received SID list, and the new SID list includes the C-SID.
  • the control plane protocol for sending the SID list may be Border Gateway Protocol (BGP) or Path Computation Element Communication Protocol (PCEP) and so on.
  • BGP Border Gateway Protocol
  • PCEP Path Computation Element Communication Protocol
  • the above-mentioned control plane protocol can be extended to send an SID list including C-SID.
  • the above-mentioned control plane protocol can also be extended with a new attribute to identify that the SID list including SIDs can be converted to a SID list including C-SIDs, or to identify that the SID list including SIDs should be converted to a SID list including C-SIDs. For example, after the controller calculates the forwarding path of the message, it generates an SID list corresponding to the forwarding path.
  • the SID list includes the SID but not the C-SID, and the controller sends the SID list to the network entry device, and
  • the new attribute identifiers extended by the control plane protocol can be converted into a SID list including C-SID.
  • the network portal device generates a new SID list according to the received SID list of the attribute, and the new SID list includes the C-SID.
  • the network device 301 can advertise its own capability attributes to other network devices through a control plane protocol.
  • the capability attributes are used to identify that the network device 301 has the capability to be compatible with C-SIDs, for example, to publish the C-SID mapped to the segment, Generate an SID list including C-SID, encapsulate the SID list including C-SID into a message, process the message according to the C-SID, and so on.
  • the foregoing control plane protocol may be, for example, Interior Gateway Protocol (IGP), Border Gateway Protocol (Border Gateway Protocol, BGP), Path Computation Element Communication Protocol (PCEP), and so on.
  • the network device 301 adds the first part of the omitted SID to the DA field.
  • multiple C-SIDs in the SID list are mapped to multiple segments one by one. Further, the multiple segments are mapped to multiple SIDs one by one.
  • the first part of the SID is omitted. That is, the prefix part of the location field of the SID is omitted, and only the second part of the SID, that is, the serial number part and the function field, are stored in the SID list as the C-SID.
  • the C-SID may be included in the SID list, and the prefix part corresponding to the C-SID may not be included.
  • the network device 301 adds the first part of the SID in the destination address field, that is, the prefix part of the location field, and the network device 301 copies the currently pending C-SID among the multiple C-SIDs in the SID list to DA field.
  • the first part in the DA field and the C-SID currently to be processed constitute the SID currently to be processed, so that the network device can still process the message according to the content of the DA field.
  • the network device 301 copies the first C-SID of the plurality of C-SIDs, that is, C-SID1, into the DA field.
  • the prefix part in the DA field and the C-SID1 form a multiple
  • the network device 301 processes the message according to the first SID, for example, forwards the message.
  • the network device 301 When the SID in the network includes the aforementioned third part containing padding content, the network device 301 also adds the third part of the omitted SID to the DA field.
  • the above-mentioned first part, second part and third part are arranged in order in the DA field according to their positions in the SID. Therefore, the network device 301 adds the first part to the front of the DA field, and the first bit of the first part is aligned with the first bit of the DA field; the network device 301 adds the third part At the end of the DA field, the last bit of the third part is aligned with the last bit of the DA field.
  • the first part, the current C-SID to be processed, and the third part in the DA field constitute the current SID to be processed, so that subsequent network devices on the message forwarding path can still receive the message according to The content of the DA field processes the message.
  • the network device 301 or the controller in the network can advertise the structure information of the DA field to other network devices through the control plane protocol, so that other network devices Able to correctly parse the contents of the DA field.
  • the structure information indicates the addition position of the C-SID in the DA field, that is, the structure information indicates the addition position of the second part of the SID in the DA field.
  • the first part, the second part and the third part are sequentially arranged in the DA field according to their positions in the SID, and the structure information indicates the position of the second part in the SID in the SID.
  • the structure information may include the length of the first part and the length of the second part, that is, the length of the prefix part and the length of the C-SID are advertised.
  • the structure information may also include the length of the first part and the length of the third part, or the structure information may also include the length of the first part, the length of the second part, and the length of the third part, and so on.
  • the control plane protocol for notifying the structural information may be an Intermediate System to Intermediate System (IS-IS) protocol, an Open Shortest Path First (OSPF) protocol or a Border Gateway Protocol (Border Gateway). Protocol, BGP) protocol and so on.
  • IS-IS Intermediate System to Intermediate System
  • OSPF Open Shortest Path First
  • Border Gateway Border Gateway Protocol
  • BGP Border Gateway Protocol
  • the SL pointer is included in the SRH, which is used to indicate the number of remaining segments to be processed.
  • the position pointed to in the SID list is offset by the length of one SID, that is, 128 bits.
  • the original space for storing one SID can store multiple C-SIDs. Therefore, after each update of the SL, the position pointed to in the SID list will be offset by the length of multiple C-SIDs, and it is impossible to accurately locate each C-SID.
  • the space in the SID list is divided into multiple elements, and the SL points to different elements after each update. Furthermore, a new pointer can be set to determine the C-SID currently to be processed in each element. This new pointer may be called a CL pointer, and the CL pointer and the SL pointer form a two-dimensional pointer.
  • the value of the SL pointer is used to determine the position of the element currently to be processed in the SID list
  • the value of the CL pointer is used to determine the position of the current C-SID to be processed in the element, thus, according to the value of the SL pointer and
  • the value of the CL pointer can determine the position of the C-SID currently to be processed in the SID list, that is, the value of the SL pointer and the value of the CL pointer together indicate the position of the C-SID in the SID list.
  • each SID can be divided into one element, that is, the length of each element is 128 bits, and the position pointed to by the SL pointer in the SID list is still offset by 128 bits after each update.
  • the first element in the SID list includes 4 C-SIDs, and the second element includes 3 C-SIDs. Therefore, 7 C-SIDs occupy two elements in the SID list.
  • the value of the CL pointer also needs to be updated to ensure that the value of the CL pointer is always used to determine the current pending C-SID in the element. position.
  • the update method of the CL pointer is associated with the initial value of the CL pointer.
  • the initial value of the CL pointer can be 0, which is used to indicate the first C-SID in the element.
  • the value of the CL pointer is increased by 1, that is, the value of the CL pointer is updated to 1, 2, and 3 in sequence, which are used to indicate the second, third, and fourth C-SIDs in the element in turn.
  • the value of the CL pointer will be subtracted by one each time it is updated, that is, the value of the CL pointer will be updated to 2, 1 in turn And 0 are used to indicate the second, third, and fourth C-SIDs in the element in turn.
  • the CL pointer has a specific position in the message header.
  • the CL pointer may be included in the C-SID.
  • Fig. 4C shows a structure of C-SID. Referring to FIG. 4C, the last part of the fields in the C-SID can be divided out as candidate fields for the CL pointer.
  • the candidate field can be set to a specific length, for example, 3 bits.
  • the value of the candidate field may be set to a specific initial value, for example, set to all zeros.
  • a specific candidate field in the C-SID can be selected as the CL pointer in each element in the SID list, and the candidate field in the specific C-SID The value of is used to determine the position of the current C-SID to be processed in this element.
  • the candidate fields of other C-SIDs in this element remain the initial values.
  • the specific C-SID is the C-SID located at the edge of each element.
  • the specific C-SID may be the first C-SID in the element, such as C-SID1 as shown in FIG. 4B, which includes the CL pointer, and the italic font indicates that this is an optional implementation.
  • the candidate field of the first C-SID is used as the CL pointer, and the value of the CL pointer is modified according to the position of the current C-SID to be processed in the element.
  • the value of the candidate field of other C-SIDs in this element remains the initial value, for example, it is still all 0s.
  • the specific C-SID may also be the last C-SID in the element.
  • the CL pointer may be a field divided from SRH, which is not shown in FIG. 4B. For example, a part divided from the flag (Flags) field, the last entry (Last Entry) field, or the tag (Tag) field.
  • the CL pointer can be set to a specific length, for example, 3 bits.
  • the CL pointer may be a part of the DA field in the IPv6 packet header. Specifically, the CL pointer is located in the last part of the DA field, that is, the last part of the C-SID in the DA field, as shown in the figure As shown in 4B, the italic font indicates that this is an optional implementation.
  • the CL pointer can be set to a specific length, for example, 3 bits. Modify the value of the CL pointer in the DA field according to the position of the current C-SID to be processed in the element. At this time, the format of the C-SID still includes the aforementioned candidate field, and the length of the candidate field is the same as the length of the CL pointer, but the initial value of all the candidate fields of the C-SID in the SID list remains unchanged.
  • the network device 301 can notify other network devices that it has the ability to process C-SID.
  • the network device When a network device that does not have the ability to be compatible with C-SID is located in the forwarding path of the message, the network device will also process the message according to the segment.
  • the network device does not have the ability to be compatible with C-SID, and does not publish the C-SID mapped to the segment, but only publishes the SID mapped to the segment. Therefore, the SID mapped to the segment will be included in the corresponding forwarding path SID list.
  • the SID list corresponding to the forwarding path will include both C-SID and SID.
  • FIG. 5A shows a structure of a message encapsulated with a message header.
  • the message header includes an IPv6 message header and an SRH.
  • the SRH includes an SID list, and the SID list includes both C-SID and SID.
  • the SID list may include the SID before the C-SID, may also include the SID after the C-SID, or may include both before the C-SID and after the C-SID.
  • the C-SID may refer to multiple C-SIDs, and the SIDs before or after the C-SID may refer to multiple SIDs.
  • the corresponding actual network situation is that the forwarding path of the message can pass through the incompatible C-SID network domain before the C-SID compatible network domain, or it can pass through the incompatible C-SID network domain after the C-SID compatible network domain.
  • the SID network domain can also pass through the C-SID compatible network domain before the C-SID compatible network domain, and pass the C-SID compatible network domain after the C-SID compatible network domain.
  • the C-SID compatible network domain may include multiple network devices, and the C-SID incompatible network domain may also include multiple network devices.
  • the forwarding path of the message can also pass through other network devices that are not compatible with C-SID. These devices are not compatible with C-SID.
  • the capable network device may be located between the network device S and the network device 1, and located behind the network device 7, both of which are not shown in FIG. 1.
  • the SID list can still be sent through the aforementioned extended control plane protocol.
  • a start flag can be set in the message header to indicate the start of the C-SID.
  • the segments executed by all network devices with compatible C-SID capabilities are represented by C-SID in the SID list, and the start flag may be included in the last SID before the first C-SID.
  • the start flag may be a specific function in SRv6, which is stored in the function field of the last SID.
  • the first segment is still represented by a 128-bit SID in the SID list, and the remaining segments are represented by C-SID.
  • the start flag may be included in the SID mapped in the first segment, and this SID may also be called a special SID.
  • Figure 5B shows the format of the special SID.
  • the SID includes location field, function field and parameter field, namely Locator, Function and Argument.
  • the location field includes a prefix part and a sequence number part, namely Prefix-1 and NodeID.
  • the Prefix-1 and the Prefix in the SID to which the C-SID is mapped are different.
  • the parameter field includes a quantity flag and a CL pointer, and the quantity flag is represented by L.
  • FIG. 5C shows a message including the above-mentioned special SID in the SID list, where the SPECIAL SID is the characteristic SID.
  • the space occupied by the C-SID can be divided into one element, the length of the element may be greater than 128 bits, and the space occupied by each of the remaining SIDs is divided into one element, and the length of these elements is 128 bits . Therefore, the length of all spaces is not necessarily the same, and the length of the offset of the position pointed to in the SID list after each update of the SL pointer is not necessarily the same.
  • the elements of the SID list including all C-SIDs include 7 C-SIDs, and the length is greater than 128 bits.
  • the CL pointer in the special SID is used to determine the currently to-be-processed C-SID among the elements including the C-SID.
  • the value of the CL pointer is updated to ensure that the value of the CL pointer is always used to determine the position of the currently pending C-SID in the element .
  • the value of the CL pointer in the special SID can be 7 different values, such as 0-6.
  • the value of the quantity flag is used to indicate the quantity of all C-SIDs.
  • the value of the quantity flag is used to determine the offset position when the SL pointer is updated when multiple C-SIDs are over. With reference to the message shown in FIG. 5C, when multiple C-SIDs are over, the offset position of the SL pointer can be 224 bits, thereby pointing to the first SID after the multiple C-SIDs.
  • the value of the function field in the special SID is used to indicate a specific function in the SRv6 network, and the quantity flag and the CL pointer are used as parameters of the specific function.
  • the specific function is used to copy the prefix part of the SID mapped by the C-SID, that is, the above-mentioned Prefix, into the DA field when the value of the CL pointer is the initial value, that is, when multiple C-SIDs in the SID list start, And copy the first C-SID of the plurality of C-SIDs into the DA field.
  • the network device 301 can obtain the SID and C-SID about the same segment, including the above-mentioned special SID. These SIDs and C-SIDs can be issued by the network equipment that executes the segment. When generating the SID list, among the multiple segments that can be represented by C-SID, the first segment should use the above-mentioned special SID instead of C-SID.
  • an end flag can also be set in the message header to indicate the end of the C-SID.
  • the network device can determine the last C-SID of the multiple C-SIDs according to the end flag, and copy the 128 bits after the last C-SID to the DA field, that is, copy the SID after the last C-SID to the DA Field.
  • an end flag is set after the multiple C-SIDs to indicate the end of the multiple C-SIDs.
  • the end flag may be a type field with the same length as the C-SID, and the value of the end flag is a specific value, for example, all 0s.
  • the end mark can be represented by EOC, and the italic font indicates that this is an optional implementation.
  • an end flag is set in the last C-SID of the multiple C-SIDs to indicate the end of the multiple C-SIDs. As shown in FIG. 5A, the end flag can be included in C-SID7.
  • the end flag may be a specific function in SRv6, which is stored in the function field of the last C-SID.
  • the end flag may be a specific field in the C-SID.
  • the last part of the fields in the C-SID can be divided and used as candidate fields for the CL pointer.
  • a part of the fields before the candidate field of the CL pointer can be divided and used as the candidate field of the end flag.
  • FIG. 5D shows the format of the C-SID including the candidate field of the end flag and the candidate field of the CL pointer.
  • the candidate field of the end flag is represented by S.
  • the candidate field of the end flag can be set to a specific length, for example, 1 bit.
  • the value of the candidate field of the end flag can be set to a specific initial value, for example, set to 0.
  • the value of the candidate field of the end flag in the last C-SID in the SID list is set to 1, indicating the end of the C-SID.
  • the value of the candidate field of the end flag in the remaining C-SID remains the initial value.
  • the update method of the CL pointer is the same as the previously introduced method, and will not be repeated here.
  • the network device 301 can obtain C-SIDs of different formats for the same segment, including the above-mentioned C-SID format of the candidate field including the end flag and the candidate field of the CL pointer. These C-SIDs in different formats can be issued by the network equipment that executes the segment.
  • the last C-SID in each element of the SID list can select the format of the above-mentioned C-SID including the candidate field of the end flag and the candidate field of the CL pointer.
  • the candidate field of the CL pointer can be used as the CL pointer to determine the C-SID currently to be processed in the element, when the last C-SID in the element is the last C-SID in all C-SIDs.
  • the end flag can be used to indicate the end of the C-SID.
  • S320 The network device 301 sends the message encapsulated with the message header.
  • the network device 301 copies the first C-SID in the SID list to the DA field.
  • the first part of the SID in the DA field and the first C-SID reconstitute the SID, and the network device 301 sends the package with the The message in the message header.
  • the network device 301 processes the message according to the SRv6 network function indicated by the function field in the SID, and the processing process is determined by a specific instruction in the SRv6 network function.
  • the processing procedure may include sending the message, for example, the network device 301 sends the message to the network device 302.
  • the network device 302 receives the message.
  • the message header of the message includes a destination address field, a first pointer, a second pointer, and a list for processing the message.
  • the list includes a plurality of identifiers arranged in sequence, and the plurality of identifiers are mapped one by one. To multiple segments in the SR network, the value of the first pointer and the value of the second pointer together indicate the position of the first identifier of the multiple identifiers in the list.
  • the network device 302 determines the first identifier according to the value of the first pointer and the value of the second pointer.
  • the network device 302 copies the first identifier into the destination address field.
  • the network device 302 receives the SID list containing the C-SID, determines the C-SID currently to be processed according to the SL pointer and the CL pointer, and copies the C-SID into the DA field.
  • the C-SID can cover the original C-SID in the DA field, and combine with the prefix part in the DA field to form an SID. Subsequent network devices on the message forwarding path can process the message according to the SID.
  • the network device 302 learns the specific position of the second part in the DA field according to the structure information of the SID advertised by the network device 301 or the controller in the network . Therefore, the network device 302 can copy the currently to-be-processed C-SID to the corresponding position of the second part in the DA field according to the specific position of the second part in the DA field, so that the C-SID covers the DA field.
  • the original C-SID in the middle That is, the network device 302 updates the second part in the DA field, but does not update the first part and the third part in the DA field.
  • the updated second part is combined with the first and third parts to form an SID.
  • Subsequent network devices on the message forwarding path can process the message according to the SID.
  • the current waiting sequence is determined according to the SL pointer and the CL pointer.
  • the space including the C-SID in the SID list can be divided into multiple elements or one element.
  • the current to-be-processed is determined according to the SL pointer and the CL pointer.
  • C-SID also has different implementation methods.
  • the network device 302 may be the network device 1 in FIG. 1.
  • the network device 1 receives the message sent by the network device S.
  • the message header of the message is shown in FIG. 4.
  • the message header includes the DA field, the SL pointer, the CL pointer, and SID list, SID list includes multiple C-SIDs.
  • the DA field includes the prefix part and C-SID 1, where the prefix part is A1, C-SID 1 is 0001:1111, and the combination of the prefix part and C-SID 1 is A1:0001:1111, that is, the network device 1’s SID.
  • the value of the SL pointer in the message header is 1, indicating the position of the first element in the SID list. See Figure 4.
  • the first element includes 4 C-SIDs, namely C-SID 1, C- SID 2, C-SID 3, C-SID 4.
  • the value of the CL pointer in the message header is 1, indicating the position of the first C-SID in the line in the element, that is, C-SID 1.
  • the network device 1 first updates the value of the CL pointer, for example, changes the value of the CL pointer to 2, indicating the position of the second C-SID in the row in the element.
  • the network device 1 obtains the second C-SID in the first element, namely C-SID 2, according to the indication of the SL pointer and the CL pointer, and copies the C-SID 2 to the DA field in the message header, instead of the DA field
  • the DA field includes a combination of the prefix part and C-SID2, that is, A1:0002:2222, which is the SID of network device 2.
  • the network device 1 queries the forwarding entry according to the SID of the network device 2 in the DA field, and sends the message to the network device 2 according to the query result.
  • the network device 302 may also be the network device 2 in FIG. 1.
  • the network device 2 receives the message sent by the network device 1.
  • the DA field in the message header of the message includes the prefix part and the C-SID 2, namely A1 :0002:2222, which is the SID of network device 2.
  • the value of the SL pointer in the message header is 1, and the value of the CL pointer is 2, indicating the position of the second C-SID in the element in the first element, that is, C-SID 2.
  • the network device 2 first updates the value of the CL pointer, for example, changes the value of the CL pointer to 3, indicating the position of the third C-SID in the row in the element.
  • the network device 2 obtains the third C-SID in the first element, namely C-SID 3, according to the indication of the SL pointer and the CL pointer, and copies the C-SID 3 to the DA field in the message header, instead of the DA field
  • the DA field includes the combination of the prefix part and the C-SID 3, that is, A1:0003:3333, which is the SID of the network device 3.
  • the network device 2 queries the forwarding entry according to the SID of the network device 3 in the DA field, and sends the message to the network device 3 according to the query result.
  • the network device 302 may also be the network device 3 in FIG.
  • the execution sequence is to first copy the C-SID and then update the value of the CL pointer, and the space including the C-SID in the SID list can be divided into multiple elements, then in the message received by the network device 1, the CL pointer The value of is already 2, indicating the position of the second C-SID in the element.
  • the network device 1 obtains the second C-SID in the first element, namely C-SID 2, according to the indication of the SL pointer and the CL pointer, and copies the C-SID 2 to the DA field in the message header, instead of the DA field
  • the network device 1 updates the value of the CL pointer, for example, changes the value of the CL pointer to 3, indicating the position of the third C-SID in the row in the element.
  • the DA field includes the combination of the prefix part and the C-SID 2, namely A1:0002:2222, which is the SID of the network device 2.
  • the network device 1 queries the forwarding entry according to the SID of the network device 2 in the DA field, and sends the message to the network device 2 according to the query result.
  • Other execution processes can be derived by analogy from the above description, and will not be repeated here.
  • the network device 302 judges whether the C-SID in the current DA field is the last C-SID in the elements of the SID list, and if the C-SID in the current DA field is the last C in the elements of the SID list -SID, the network device 302 needs to update the value of the SL pointer and the value of the CL pointer.
  • Multiple network devices on the message forwarding path sequentially process multiple C-SIDs in the SID list. When the C-SID in one element of the SID list is processed, continue to process the C-SID in the next element.
  • both the value of the CL pointer and the value of the SL pointer need to be modified to ensure that the current to-be-processed C-SID can still be determined according to the value of the CL pointer and the value of the SL pointer.
  • the execution sequence is still to update the value of the SL pointer and the value of the CL pointer and then copy the C-SID as an example for description.
  • the network device 302 may be the network device 4 in FIG. 1, and the network device 4 receives a message sent by the network device 3.
  • the DA field in the header of the message includes the prefix part and C-SID 4, namely A1:0004:4444, which is the SID of the network device 4.
  • the value of the SL pointer in the message header is 1, and the value of the CL pointer is 4, indicating the position of the fourth C-SID in the element in the first element, that is, C-SID 4.
  • the network device 4 determines that the C-SID 4 in the current DA field is the last C-SID in the elements of the SID list, and the network device 4 needs to update the value of the SL pointer and the value of the CL pointer. Specifically, the network device 4 first updates the value of the SL pointer, for example, changes the value of the SL pointer to 0 to indicate the second element in the SID list. The second element includes three C-SIDs, which are C-SIDs. 5. C-SID 6, C-SID 7. The network device 4 then updates the value of the CL pointer, for example, changes the value of the CL pointer to 1, indicating the position of the first C-SID in the element, that is, the position of the C-SID 5 in the element.
  • the network device 4 obtains the first C-SID in the second element, namely C-SID 5, according to the indication of the SL pointer and the CL pointer, and copies the C-SID 5 to the DA field in the message header, instead of the DA field
  • the DA field includes the combination of the prefix part and the C-SID 5, that is, A1:0005:5555, which is the SID of the network device 5.
  • the network device 4 queries the forwarding entry according to the SID of the network device 5 in the DA field, and sends the message to the network device 5 according to the query result.
  • the execution process can be derived by analogy based on the above description, and will not be repeated here.
  • the network device 302 may also be the network device 5, the network device 6, or the network device 7 in FIG. 1.
  • the packet processing process of these network devices is similar to the above description, and will not be repeated here.
  • each forwarding process corresponds to a segment, thus representing the overall message forwarding process.
  • the SID list includes 7 SIDs.
  • those skilled in the art can easily anticipate that in the process of processing the message, the message may also be processed multiple times at some network equipment. These processing include forwarding processing and non-forwarding processing.
  • the behavior corresponds to one segment, so in the application scenario shown in FIG. 1, the SID list representing the entire message forwarding process may include more than 7 SIDs, for example, 10 SIDs.
  • FIG. 6 shows a schematic diagram of a possible structure of the network device involved in the foregoing embodiment.
  • the network device 600 can implement the function of the network device 301 in the embodiment shown in FIG. 3.
  • the network device 600 includes: a receiving unit 601 and a processing unit 602. These units can perform the corresponding functions of the network device in the above method. for example,
  • the receiving unit 601 is configured to receive messages
  • the processing unit 602 is configured to generate a message header and encapsulate the message header into the message, the message header including a first pointer, a second pointer, and a list for processing the message, the list It includes multiple identifiers arranged in sequence, the multiple identifiers are mapped to multiple segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate that the multiple identifiers The position of the first identifier in the list, and the message encapsulated with the message header is processed according to the list.
  • FIG. 7 shows another possible structural schematic diagram of the network device 301 involved in the foregoing embodiment.
  • the network device 700 includes a processor 702, a network interface 703, and a memory 701. among them,
  • the memory 701 is used to store instructions; in the case of implementing the embodiment shown in FIG. 6 and each unit described in the embodiment of FIG. 6 is realized by software, it is required to perform the functions of the processing unit 602 in FIG. 6
  • the software or program code of the software is stored in the memory 701.
  • the processor 702 is configured to execute instructions in the memory 701, and execute the foregoing method for processing packets in the embodiment shown in FIG. 3.
  • the network interface 703 is used to communicate with other network devices.
  • the network interface 703, the processor 702, and the memory 701 are connected to each other.
  • the network interface 703, the processor 702, and the memory 701 are connected to each other via a bus; the bus may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus Wait.
  • PCI peripheral component interconnect
  • EISA extended industry standard architecture
  • the bus can be divided into an address bus, a data bus, a control bus, and so on. For ease of representation, only one thick line is used in FIG. 7, but it does not mean that there is only one bus or one type of bus.
  • the processor 702 is configured to receive a message through the network interface 703, generate a message header, and encapsulate the message header into the message, and the message header includes a first pointer, a second pointer, and A list for processing the message, the list includes a plurality of identifiers arranged in sequence, the plurality of identifiers are mapped to a plurality of segments in the SR network one by one, the value of the first pointer and the The value of the second pointer collectively indicates the position of the first identifier of the plurality of identifiers in the list, and the message encapsulated with the message header is processed according to the list.
  • the processor 702 please refer to the detailed description of the processes S310, S315, and S320 in the embodiment shown in FIG. 3, which will not be repeated here.
  • the network interface 703 is used for the network device 700 to receive and send messages through the network system.
  • S310 in the embodiment shown in FIG. 3, which will not be repeated here.
  • FIG. 8 shows a schematic diagram of a possible structure of the network device involved in the foregoing embodiment.
  • the network device 800 can implement the function of the network device 302 in the embodiment shown in FIG. 3.
  • the network device 800 includes: a receiving unit 801 and a processing unit 802. This unit can perform the corresponding functions of the network device in the above method. for example,
  • the receiving unit 801 is configured to receive a message.
  • the message header of the message includes a destination address field, a first pointer, a second pointer, and a list for processing the message, and the list includes a plurality of
  • the multiple identifiers are mapped to multiple segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate that the first identifier of the multiple identifiers is in all the segments.
  • the processing unit 802 is configured to determine the first identifier according to the value of the first pointer and the value of the second pointer, and copy the first identifier to the destination address field.
  • FIG. 9 shows a schematic diagram of a possible structure of the network device involved in the foregoing embodiment.
  • the network device 900 includes a processor 902, a network interface 903, and a memory 901. among them,
  • the memory 901 is used to store instructions; in the case of implementing the embodiment shown in FIG. 8 and the units described in the embodiment in FIG. 8 are realized by software, it is required to execute the function of the 8 sending unit 801 in FIG. 8
  • the software or program code of the software is stored in the memory 901.
  • the processor 902 is configured to execute instructions in the memory 901, and execute the foregoing method for processing packets in the embodiment shown in FIG. 3.
  • the network interface 903 is used to communicate with other network devices.
  • the network interface 903, the processor 902, and the memory 901 are connected to each other.
  • the network interface 903, the processor 902, and the memory 901 are connected to each other through a bus; the bus may be a PCI bus or an EISA bus.
  • the bus can be divided into an address bus, a data bus, a control bus, and so on. For ease of presentation, only one thick line is used in FIG. 9, but it does not mean that there is only one bus or one type of bus.
  • the processor 902 is configured to receive a message through the network interface 903, and the message header of the message includes a destination address field, a first pointer, a second pointer, and a list for processing the message,
  • the list includes a plurality of identifiers arranged in sequence, and the plurality of identifiers are mapped to a plurality of segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate the plurality of segments.
  • the position of the first identifier in the two identifiers in the list, the first identifier is determined according to the value of the first pointer and the value of the second pointer, and the first identifier is copied to the destination address Field.
  • the processes S325, S330, and S335 in the embodiment shown in FIG. 3, which will not be repeated here.
  • the network interface 903 is used for the network device 900 to send and receive messages through the network system.
  • the network interface 903 is used for the network device 900 to send and receive messages through the network system.
  • S325 for the specific process, please refer to the detailed description of S325 in the embodiment shown in FIG. 3, which will not be repeated here.
  • the aforementioned memory 701 and memory 901 may be random-access memory (RAM), flash memory (flash), read only memory (ROM), erasable programmable read-only memory (erasable programmable read only memory). memory, EPROM), electrically erasable programmable read-only memory (electrically erasable programmable read only memory, EEPROM), register, hard disk, mobile hard disk, CD-ROM or any other form of storage known to those skilled in the art medium.
  • RAM random-access memory
  • flash flash
  • ROM read only memory
  • ROM erasable programmable read-only memory
  • EPROM electrically erasable programmable read-only memory
  • register hard disk, mobile hard disk, CD-ROM or any other form of storage known to those skilled in the art medium.
  • the aforementioned processor 702 and processor 902 may be, for example, a central processing unit (CPU), a general-purpose processor, a digital signal processor (digital signal processor, DSP), a field programmable gate array (FPGA). ) Or other programmable logic devices, transistor logic devices, hardware components, or any combination thereof. It can implement or execute various exemplary logical blocks, modules, and circuits described in conjunction with the disclosure of this application.
  • the processor may also be a combination of computing functions, for example, a combination of one or more microprocessors, a combination of a DSP and a microprocessor, and so on.
  • the above-mentioned network interface 703 and network interface 903 may be, for example, an interface card, etc., and may be an ethernet interface or an asynchronous transfer mode (ATM) interface.
  • the aforementioned network interface 703 and network interface 903 may be wired interfaces or wireless interfaces.
  • the aforementioned processor 702 and processor 902 may be, for example, an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • the processor 702 and the processor 902 execute the above-mentioned method applied to the message processing in the embodiment shown in FIG. 3 according to their own circuits. That is, at this time, the memory 701 and the memory 901 do not need to store the instructions executed by the processor 702 and the processor 902, and the processor 702 and the processor 902 no longer execute the instructions in the memory 701 and the memory 901.
  • the network device may not include the memory 701 or the memory 901 at this time.
  • FIG. 10 shows a schematic diagram of a possible structure of a network system provided by an embodiment of the present invention.
  • the network system 1000 includes a first network device 1001 and a second network device 1002.
  • the first network device 1001 in the network system can execute the processing steps of the network device 301 in the embodiment shown in FIG. 3, and the second network device 1002 in the network system can execute the network device 302 in the embodiment shown in FIG. 3 ⁇ Processing steps.
  • the first network device 1001 in the network system may be the network device 600 in the embodiment shown in FIG. 6, and the second network device 1002 may be the network device 800 in the embodiment shown in FIG. 8, or corresponding
  • the first network device 1001 in the network system may be the network device 700 in the embodiment shown in FIG. 7, and the second network device 1002 may be the network device 900 in the embodiment shown in FIG. 9.
  • the first network device is configured to receive a message, generate a message header, and encapsulate the message header into the message, and the message header includes a first pointer, a second pointer, and processing
  • the list of messages the list includes a plurality of identifiers arranged in sequence, the plurality of identifiers are mapped to a plurality of segments in the SR network one by one, the value of the first pointer and the second pointer
  • the value of collectively indicates the position of the first identifier of the plurality of identifiers in the list, and the message encapsulated with the message header is processed according to the list.
  • the second network device is configured to receive a message, and the message header of the message includes a destination address field, a first pointer, a second pointer, and a list for processing the message, and the list includes the sequence
  • the multiple identifiers are mapped to multiple segments in the SR network one by one, and the value of the first pointer and the value of the second pointer together indicate the first of the multiple identifiers
  • the position of the identifier in the list is determined, the first identifier is determined according to the value of the first pointer and the value of the second pointer, and the first identifier is copied into the destination address field.
  • the embodiment of the present invention also provides a non-transitory storage medium for storing the software instructions used in the foregoing embodiment, which includes a program for executing the method shown in the foregoing embodiment, when it is on a computer or network device When executed, the computer or network device shown is caused to execute the method in the foregoing method embodiment.
  • the embodiment of the present invention also provides a computer program product including computer program instructions, which when the computer program product runs on a computer, causes a network node to execute the method in the foregoing method embodiment.
  • the disclosed system, device, and method may be implemented in other ways.
  • the device embodiments described above are merely illustrative, for example, the division of units is only a logical business division, and there may be other divisions in actual implementation, for example, multiple units or components can be combined or integrated. To another system, or some features can be ignored, or not implemented.
  • the displayed or discussed mutual coupling or direct coupling or communication connection may be indirect coupling or communication connection through some interfaces, devices or units, and may be in electrical, mechanical or other forms.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, they may be located in one place, or they may be distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.
  • service units in the various embodiments of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units may be integrated into one unit.
  • the above-mentioned integrated unit can be implemented in the form of hardware or software business unit.
  • the integrated unit is implemented in the form of a software business unit and sold or used as an independent product, it can be stored in a computer readable storage medium.
  • the technical solution of the present application essentially or the part that contributes to the existing technology or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium , Including several instructions to make a computer device (which can be a personal computer, a server, or a network device, etc.) execute all or part of the steps of the methods in the various embodiments of the present application.
  • the aforementioned storage media include: U disk, mobile hard disk, read-only memory (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), magnetic disks or optical disks and other media that can store program codes. .
  • the services described in the present invention can be implemented by hardware, software, firmware, or any combination thereof.
  • these services can be stored in a computer-readable medium or transmitted as one or more instructions or codes on the computer-readable medium.
  • the computer-readable medium includes a computer storage medium and a communication medium, where the communication medium includes any medium that facilitates the transfer of a computer program from one place to another.
  • the storage medium may be any available medium that can be accessed by a general-purpose or special-purpose computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

一种在SR网络中处理报文的方法,包括:接收报文,报文的报文头包括目的地址字段、第一指针、第二指针和用于处理报文的列表,列表包括依次排列的多个标识,多个标识一一映射到SR网络中的多个段,第一指针的值和第二指针的值共同指示多个标识中的第一标识在列表中的位置;根据第一指针的值和第二指针的值确定第一标识;将第一标识拷贝至目的地址字段中。该方法在报文头中设置CL指针,与SL指针共同构成二维指针,指示C-SID在SID list中的位置。从而减少报文长度,提高网络的传输效率和处理效率。

Description

一种在SR网络中转发报文的方法、设备和系统
本申请要求于2019年9月27日提交中国国家知识产权局、申请号201910925974.3、申请名称为“一种在SR网络中转发报文的方法、设备和系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信领域,尤其涉及一种在SR网络中转发报文的方法、网络设备和系统。
背景技术
段路由(segment routing,SR)是一种基于源路由理念设计的、在网络上转发数据包的协议,支持在源节点显式指定数据包转发路径。当SR部署在第六版本的互联网协议6(Internet Protocol Version 6,IPv6)数据平面上时,称为IPv6 segment routing(SRv6)。SRv6在IPv6的基础上扩展了段路由头(segment routing header,SRH)。
SRH包括段标识列表(segment identification list,SID list),SID list包括依次排列的多个段标识(SID),分别表示多个段,每个段为处理报文的指令或指令集合。SRH被封装在报文中,通过其中的段标识列表承载SR网络对该报文的处理过程。SRv6网络中的每个SID的长度为128比特(bit),则SID list中每增加一个SID,SRH的长度就会增加128bit,报文的长度也会增加128bit。一方面,报文长度增加将导致转发过程中占用大量的网络资源,如:带宽。举例来说,当报文处理过程包括100个段时,SRH需要包括100个SID,SID list长度高达1600字节,SID list长度过长,降低SR网络中报文传输的效率。另一方面,SRH长度过长将增加报文处理上的难度。举例来说,节点一次读取的报文窗长度是有限的,例如128字节,而SRH的长度为1600字节,远超一次读取的报文窗长度,整个SRH的读取过程需要通过多次读取操作才能完成,降低报文处理效率。
发明内容
本申请提供了一种转发报文的方法、设备和系统,用于解决段标识列表长度过长导致网络传输效率降低和处理效率降低的技术问题。
第一方面,本申请提供了一种处理报文的方法。该方法应用于分段路由SR网络,包括:接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;根据所述第一指针的值和所述第二指针的值确定所述第一标识;将所述第一标识拷贝至所述目的地址字段中。
该方法在报文头中设置新增的第一指针,与段剩余(segment left,SL)指针,即第二指针,共同构成二维指针,指示压缩的段标识(Compressed SID,C-SID)在SID list中的位置。从而减少报文长度,提高网络的传输效率和处理效率。
结合第一方面,在第一方面的第一种可能的实现方式中,所述列表包括依次排列的多个标识,具体为:所述列表包括依次排列的至少一个元素,所述至少一个元素包括第一元素,所述第一元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:所述第二指针的值用于确定所述第一元素在所述列表中的位置,所述第一指针的值用于确定所述第一标识在所述第一元素中的位置。
该方法在生成SID list时,采用C-SID代替长度为128比特的SID来表示段,从而对于相同数量的段来说,C-SID构成的SID list长度远远小于SID构成的SID list的长度。从而减少报文长度,提高网络的传输效率和处理效率。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一指针包括在所述至少两个标识中的第一个标识中。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识;所述根据所述第一指针的值和所述第二指针的值确定所述第一标识包括:修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置;根据修改后的所述第一指针的值和所述第二指针的值确定所述第一标识。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:所述第一指针的值指示所述第一标识在所述第一元素中的位置;所述将所述第一标识拷贝至所述目的地址字段中之后,所述方法还包括:修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述至少两个标识中的后一个标识。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:所述第二指针的值指示所述至少一个元素中的第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的前一个元素;所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:所述第一指针的值指示第二标识在所述第二元素中位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识,所述第二元素包括所述多个标识中的至少一个标识,所述至少一个标识依次排列,所述第二标识是所述至少一个标识中的一个,所述目的地址字段包括第二标识;所述根据所述第一指针的值和所述第二指针的值确定所述第一标识包括:确定所述第二标识是所述至少一个标识中的最后一个标识;修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示所述第一元素在所述列表中的位置;修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置;根据修改后的所述第一指针的值和修改后的所述第二指针的值确定所述第一标识。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第六种可 能的实现方式中,所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:所述第二指针的值指示所述第一元素在所述列表中的位置;所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:所述第一指针的值指示所述第一标识在所述第一元素中位置;在所述将所述第一标识拷贝至所述目的地址字段中之后,所述方法还包括:确定所述第一标识是所述至少两个标识中的最后一个标识;修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的后一个元素;修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第二元素中的位置,所述第二标识是所述第一标识在所述多个标识中的后一个标识,所述第二元素包括所述第二标识。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述目的地址字段中包括所述第一部分。
结合第一方面,或者第一方面的上述任一种可能的实现方式,在第一方面的第九种可能的实现方式中,所述元素的长度为128比特、64比特或32比特。
结合第一方面,或者第一方面的上述任一种可能的实现方式,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括依次排列的第一部分、第二部分和第三部分,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
结合第一方面,或者第一方面的上述任一种可能的实现方式,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
结合第一方面,或者第一方面的上述任一种可能的实现方式,所述方法还包括:接收所述目的地址字段的结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置;所述将所述第一标识拷贝至所述目的地址字段中,包括:根据所述结构信息,将所述第一标识拷贝至所述第一标识在所述目的地址字段中的所述添加位置。
结合第一方面,或者第一方面的上述任一种可能的实现方式,所述接收所述目的地址字段的结构信息包括:接收控制报文,所述控制报文包括所述结构信息,所述控制报文是中间系统到中间系统IS-IS协议报文、开放式最短路径优先OSPF协议报文或者边界网关协议BGP协议报文。
结合第一方面,或者第一方面的上述任一种可能的实现方式,所述多个标识中的每个标识的长度为32比特或16比特。
第二方面,本申请提供一种转发报文的方法。该方法应用于分段路由SR网络,包括:接收报文;生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映 射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;发送封装有所述报文头的所述报文。
该方法在报文头中设置新增的第一指针,与SL指针,即第二指针,共同构成二维指针,指示C-SID在SID list中的位置。从而减少报文长度,提高网络的传输效率和处理效率。
结合第二方面,在第二方面的第一种可能的实现方式中,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
该方法在生成段标识列表时,采用压缩的段标识代替长度为128比特的SID来表示段,从而段标识列表中SL指针指向的长度为128比特的元素中能够容纳对应于多个段的多个压缩的段标识。从而减少报文长度,提高网络的传输效率和处理效率。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述生成所述报文头包括:将所述多个段中的每个段所映射到的段标识的第二部分作为所述每个段所映射到的标识以生成所述列表;根据所述列表生成所述报文头。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述生成所述报文头包括:接收所述列表,所述列表中的所述多个标识中的每个标识包括所述每个标识所映射到的段所映射到的段标识的第二部分。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一部分的长度为X比特,X为整数,X大于等于1且小于128,所述多个标识中的每个标识的长度为128-X比特。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述列表不包括所述第一部分。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述报文头还包括目的地址字段,所述生成所述报文头并封装所述报文头至所述报文还包括:在所述目的地址字段添加所述第一部分;将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第七种可能的实现方式中,所述列表包括依次排列的多个标识,具体为:所述列表包括依次排列的至少一个元素,所述至少一个元素中的第一个元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:所述第二指针的值指示所述第一个元素在所述列表中的位置,所述第一指针的值指示所述第一标识在所述第一元素中的位置。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第八种可能的实现方式中,所述第一指针包括在所述至少两个标识中的第一个标识中。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第九种可能的实现方式中,所述列表包括第一段标识,所述第一段标识在所述多个标识中的第一个 标识之前,所述第一段标识映射到所述SR网络中的段,所述第一段标识的长度为128比特。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第十种可能的实现方式中,所述第一段标识与所述多个标识中的第一个标识相邻,所述第一段标识包括开始标志,所述开始标志用于指示所述第一段标识在所述列表中的后一个标识是所述多个标识中的第一个标识。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第十一种可能的实现方式中,所述第一段标识包括功能字段和参数字段,所述功能字段包括所述开始标志,所述参数字段包括所述第一指针和数量标志,所述数量标志用于指示所述多个标识的数量。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第十二种可能的实现方式中,所述列表包括第二段标识,所述第二段标识在所述多个标识中的最后一个标识之后,所述第一段标识映射到所述SR网络中的段,所述第一段标识的长度为128比特。
结合第二方面,或者第二方面的上述任一种可能的实现方式,在第二方面的第十三种可能的实现方式中,所述第二段标识与所述多个标识中的最后一个标识相邻,所述第二段标识包括结束标志,所述结束标志用于指示所述第二段标识在所述列表中的前一个标识是所述多个标识中的最后一个标识。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括依次排列的第一部分、第二部分和第三部分,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述报文头还包括目的地址字段,所述生成所述报文头并封装所述报文头至所述报文还包括:在所述目的地址字段添加所述第一部分和所述第三部分;将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述方法还包括:向中间网络设备发送结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置。
结合第二方面,或者第二方面的上述任一种可能的实现方式,所述多个标识中的每个标识的长度为32比特或16比特。
第三方面,本申请提供了一种网络设备,执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,该网络设备包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第四方面,本申请提供了一种网络设备,执行第二方面或第二方面的任意一种可能的实现方式中的方法。具体地,该网络设备包括用于执行第二方面或第二方面的任意一种可 能的实现方式中的方法的单元。
第五方面,本申请提供了一种网络设备,该网络设备包括:处理器、网络接口和存储器。网络接口可以是收发器。存储器可以用于存储程序代码,处理器用于调用存储器中的程序代码使得该网络设备执行前述第一方面或第一方面的任意一种可能的实现方式,此处不再赘述。
第六方面,本申请提供了一种网络设备,该网络设备包括:处理器、网络接口和存储器。网络接口可以是收发器。存储器可以用于存储程序代码,处理器用于调用存储器中的程序代码使得该网络设备执行前述第二方面或第二方面的任意一种可能的实现方式,此处不再赘述。
第七方面,本申请提供了一种网络系统,该网络系统包括前述第三方面提供的网络设备和第四方面提供的网络设备,或者该网络系统包括前述第五方面提供的网络设备和第六面提供的网络设备。
第八方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第九方面,本申请提供了一种包括计算机程序指令的计算机程序产品,当该计算机程序产品在网络设备上运行时,使得网络设备执行第一方面、第二方面、第一方面的任意一种可能的实现方式或第二方面的任意一种可能的实现方式中提供的方法。
第九方面,本申请提供了一种芯片,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,以使得该芯片执行上述第一方面及其第一方面任意可能的实现方式中的方法;或者,处理器用于从存储器中调用并运行该计算机程序,以使得该芯片执行第二方面或第二方面任意可能的实现方式中的方法。
可选地,上述芯片仅包括处理器,处理器用于读取并执行存储器中存储的计算机程序,当计算机程序被执行时,该芯片执行第一方面或第一方面任意可能的实现方式中的方法,或者,该芯片执行第二方面或第二方面任意可能的实现方式中的方法。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中使用的附图作简单地介绍。显而易见地,下面附图只是本申请的一些实施例的附图,对于本领域普通技术人员来说,在不付出创造性劳动性的前提下,还可以根据这些附图获得同样能实现本申请的其他技术方案和附图。
图1为本申请实施例提供的一种应用场景示意图;
图2A为本申请实施例提供的一种段标识的格式示意图;
图2B为本申请实施例提供的一种报文的格式示意图;
图3为本申请实施例提供的一种报文处理的方法流程示意图;
图4A为本申请实施例提供的一种压缩段标识的格式示意图;
图4B为本申请实施例提供的一种报文的格式示意图;
图4C为本申请实施例提供的一种压缩段标识的格式示意图;
图4D为本申请实施例提供的一种压缩段标识的格式示意图;
图5A为本申请实施例提供的一种报文的格式示意图;
图5B为本申请实施例提供的一种压缩段标识的格式示意图;
图5C为本申请实施例提供的一种报文的格式示意图;
图5D为本申请实施例提供的一种压缩段标识的格式示意图;
图6为本申请实施例提供的一种网络设备的结构示意图;
图7为本申请实施例提供的一种网络设备的结构示意图;
图8为本申请实施例提供的一种网络设备的结构示意图;
图9为本申请实施例提供的一种网络设备的结构示意图;
图10为本申请实施例提供的一种网络系统的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
图1示出了本申请实施例的一种可能的应用场景。该场景包括SR网络,该SR网络包括网络设备S、网络设备1、网络设备2、网络设备3、网络设备4、网络设备5、网络设备6、网络设备7。这些网络设备可以是交换机、路由器或转发器。这些网络设备也可以是虚拟机。其中,网络设备S可以是网络的入口设备。该网络还可以包括控制器,图1中未示出。控制器可以生成对应报文的转发路径的SID list,发送至网络入口设备。控制器可以向网络中的其他网络设备发送包含网络配置信息的控制报文。
在SR网络中对报文的处理过程由多个段组成,每个段为处理报文的指令或指令集合。每个段具有相应的段标识,即SID。段标识包括节点段标识(node SID)和邻接段标识(adjacent SID)两种类型。图2A示出了SRv6网络中SID的格式,如图2A所示,每个SID可以包括位置(Locator)字段和功能(Function)字段。
SID中的位置字段用于定位到执行段所包括的指令或指令集合的具体网络设备。位置字段包括前缀(Prefix)部分和序号(Node ID)部分。在一个SRv6网络域(domain)内,所有网络设备的SID的前缀部分是相同的。在一个SRv6网络域(domain)内,每个网络设备的SID的序号部分是不同的,每个序号部分用于唯一确定该域内的一个网络设备。对于一个特定的SID来说,该SID的序号部分所唯一确定的网络设备就是执行该SID所表示的段的网络设备。
SID中的功能字段用于表示段所包括的指令或指令集合的具体内容,也就是SRv6网络中的功能(Function)。SRv6网络中的功能还可能涉及到参数,用SID中的参数(Argument)字段表示(图2中未示出)。当功能不涉及参数时,则SID中可以不包括参数字段。
通常来说,SRv6网络中SID的总长度为128比特。其中位置字段和功能字段分别为特定长度,且这些特定长度是可以通过网络设置进行改变的。例如,位置字段为48比特,功能字段为80比特,或者位置字段为64比特,功能字段为64比特,或者位置字段为48比特,功能字段为64比特,参数字段为16比特。
多个SID组成SID list。图2B示出了SRv6网络中报文的格式。如图2B所示,该报 文的报文头包括IPv6报文头和SRH,IPv6报文头包括目的地址(destination address,DA)字段,SRH包括SID list,SID list包括依次排列的多个SID。SRH中还包括段剩余(segments left,SL)指针,该SL指针用于指示剩余待处理的段的数量。具体的,SL指针的每个取值对应于剩余待处理的段的特定数量。例如,SL指针的值为3,则表示剩余待处理的段的数量为4个,也可以理解为SL指针指向当前待处理的SID,即倒数第4个SID,SL指针的值为0,则表示剩余待处理的段的数量为1个,也可以理解为SL指针指向当前待处理的SID,即最后一个SID。网络设备根据SL指针确定当前待处理的SID以后,将该SID拷贝至IPv6报文头中的DA字段,根据DA字段中的内容处理报文,例如,转发报文。在报文的处理过程中,每执行一个段就更新一次SL指针的值,SL指针每次更新后在SID list中指向的位置偏移一个SID的长度,即128比特,随着对SID list中多个SID所表示的多个段的依次执行,不断更新SL指针的值,以确保SL指针始终指向当前待处理的SID。
结合图1所示的应用场景进行举例说明,当报文可以通过图1所示的SR网络进行转发时,报文的转发路径为由网络设备S发送至网络设备1,依次经过网络设备2、网络设备3、网络设备4、网络设备5、网络设备6,到达网络设备7。除了头节点网络设备S以外,该转发路径还包括网络设备1至网络设备7,共7个网络设备。在每个网络设备处都对报文进行转发处理,例如,每个网络设备处的转发处理行为分别对应一个段,则表示整个报文转发过程的SID list包括7个SID。每个SID的长度为128比特,SID list的长度为112字节,导致报文长度增加,降低网络的传输效率和处理效率。
本申请实施例提供了处理报文的方法以及基于该方法的设备和系统。这些方法、设备和系统基于同一发明构思。方法、设备和系统解决问题的原理相似,因此,方法、设备和系统的实施例可以相互参见,相同或类似之处不再赘述。
本发明实施例提供了一种处理报文的方法。该方法应用于SR网络,涉及网络设备301和网络设备302。其中网络设备301可以是网络入口设备,用于在报文中封装SID list,例如,图1所示的网络设备S。网络设备302可以是网络中的转发设备,用于根据SID list处理报文,例如,图1所示的网络设备1、网络设备2、网络设备3、网络设备4、网络设备5、网络设备6或网络设备7。在该方法中,生成SID list时,采用压缩的段标识(Compressed SID,C-SID)代替长度为128比特的SID来表示段,并且在报文头中设置CL指针,与SL指针共同构成二维指针,指示C-SID在SID list中的位置,从而对于相同数量的段来说,C-SID构成的SID list长度远远小于SID构成的SID list的长度。从而减少报文长度,提高网络的传输效率和处理效率。图3示出了所述方法的流程,该方法包括具体:
S310,网络设备301接收报文。
作为网络入口设备,网络设备301可以接收主机发送的报文,所述报文可以是业务报文。主机可以是个人计算机、手机或平板电脑等终端设备。
S315,网络设备301生成报文头并将报文头封装至所述报文中,报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置。
在SRv6网络中,所述报文头包括IPv6报文头和SRH,所述列表为SRH中的SID list。 针对接收到的报文,网络设备301生成包括SID list的报文头并将报文头封装至接收到的报文中,以便于对该报文进行处理。
在SR网络中,用于处理报文的每个段都具有特定的段标识,即SID,也就是说,用于处理报文的所述多个段一一映射到多个SID。结合以上描述,每个SID可以包括位置字段和功能字段,位置字段包括前缀部分和序号部分。位置字段和功能字段的长度之和可以是128比特。在一个SRv6网络域内,所有网络设备的SID的前缀部分是相同的,而每个网络设备的SID的序号部分是不同的,每个序号部分用于唯一确定该域内的一个网络设备。也就是说,每个SID可以划分为两部分,第一部分包括前缀部分,第二部分包括序号部分和功能字段。所有SID的第一部分是相同的,而每个SID的第二部分是不同的。第一部分和第二部分的长度之和为128比特。因而,为了减少SID list的长度,可以在省略上述第一部分,即省略SID的位置字段的前缀部分,将第二部分,即序号部分和功能字段,作为压缩的段标识,即C-SID,图4A所示。从而,SID list中包括依次排列的多个C-SID,每个C-SID映射到SR网络中的一个段。
结合图1所示的应用场景,网络设备1的SID可以是A1::0001:1111,该SID的长度为128比特,“::”表示全0字节。其中,A1::0001为位置字段,长度为112比特,A1/96为前缀部分,“/96”表示96比特的掩码,0001为序号部分,长度为16比特。1111为功能字段,长度为16比特。该SID的第一部分为A1,第二部分为0001:1111。将第二部分作为C-SID,即C-SID为0001:1111,长度为32比特。
类似地,网络设备2、网络设备3、网络设备4、网络设备5、网络设备6或网络设备7的SID可以分别是A1::0002:2222,A1::0003:3333,A1::0004:4444,A1::0005:5555,A1::0006:6666,A1::0007:7777。这些网络设备的C-SID可以是0002:2222,0003:3333,0004:4444,0005:5555,0006:6666,0007:7777,长度均为32比特。
结合以上描述,C-SID包括SID的序号部分和功能字段,则C-SID的长度由SID的序号部分和功能字段的长度之和决定。具体的,C-SID的长度与SID的序号部分和功能字段的长度之和相同。例如,C-SID的长度可以是32比特,或者C-SID的长度可以是16比特。
可选的,在网络规划过程中,也可以将每个SID划分为三部分,其中,第一部分包括所述前缀部分,第二部分包括所述序号部分和所述功能字段,第三部分为填充内容(padding)。所有SID的第三部分是相同的,均填充相同的内容,例如全0。第一部分、第二部分和第三部分的长度之和为128比特,则第一部分和第二部分的长度之和小于128比特。在由SID生成C-SID时,省略第一部分和第三部分,仍然将第二部分作为C-SID,如图4D所示。结合图1所示的应用场景,网络设备1的SID可以是A1::0001:1111::,该SID的长度为128比特,“::”表示全0字节。其中,A1::0001为位置字段,长度为64比特,A1/48为前缀部分,“/48”表示48比特的掩码,0001为序号部分,长度为16比特。1111为功能字段,长度为16比特。也就是说,该SID的第一部分包括长度为48比特的A1,第二部分包括长度为32比特的0001:1111,第三部分包括长度为48比特的全0部分。将第二部分作为C-SID,即C-SID为0001:1111,长度为32比特。在实际网络应用中,部分设备可能无法一次处理128比特的数据,例如,部分ASIC芯片一次只能处理80比特的数据。此时,在网络规划过程中将每个SID设置为包括上述第三部分中的填充内容,在网络处理过程中可以不对DA字段中的第三部分进行处理,而只处理第一部分和第二部分, 从而需要处理的数据长度,扩展网络设备的适配范围。
图4B示出了封装有报文头的报文的一种结构,其中报文头包括IPv6报文头和SRH,SRH中包括SID list。结合图1所示的应用场景,当报文的转发路径为由网络设备S发送至网络设备1,依次经过网络设备2、网络设备3、网络设备4、网络设备5、网络设备6,到达网络设备7时,该转发路径对应的SID list可以如图4B所示,包括7个C-SID。每个C-SID的长度为32比特,7个C-SID的长度为224比特,SID list的长度大大降低,提高网络的传输效率和处理效率。
每个网络设备的C-SID可以通过扩展控制平面协议进行发布。SRv6网络域内的SID的前缀部分也可以通过扩展控制平面协议进行发布。可以采用的控制平面协议例如内部网关协议(Interior Gateway Protocol,IGP),边界网关协议(Border Gateway Protocol,BGP),边界网关协议链路状态(Border Gateway Protocol link state,BGP-LS)或路径计算通信协议(Path Computation Element Communication Protocol,PCEP)等等。
包括C-SID的SID list可以由控制器生成,也可以由网络入口设备生成。例如,控制器计算报文的转发路径,生成对应于该转发路径的SID list,所述SID list包括C-SID,并且控制器将所述SID list发送至网络入口设备。或者,网络入口设备计算报文的转发路径,并生成对应于该转发路径的SID list,所述SID list包括C-SID。或者,控制器计算报文的转发路径,生成对应于该转发路径的SID list,所述SID list包括SID而不包括C-SID,控制器将所述SID list发送至网络入口设备,网络入口设备根据接收到的SID list生成新的SID list,所述新的SID list包括C-SID。
发送SID list的控制平面协议,例如可以是边界网关协议(Border Gateway Protocol,BGP)或路径计算通信协议(Path Computation Element Communication Protocol,PCEP)等等。上述控制平面协议可以进行扩展,以发送包括C-SID的SID list。上述控制平面协议也可以扩展一个新的属性,以标识包括SID的SID list可以被转换为包括C-SID的SID list,或者标识包括SID的SID list应当被转换为包括C-SID的SID list。例如,当控制器计算报文的转发路径后,生成对应于该转发路径的SID list,所述SID list包括SID而不包括C-SID,控制器将所述SID list发送至网络入口设备,并通过控制平面协议扩展的新的属性标识该如如如如如如如如可以被转换为包括C-SID的SID list。网络入口设备根据所述属性的指收到的SID list生成新的SID list,所述新的SID list包括C-SID。
可选的,网络设备301可以通过控制平面协议向其他网络设备通告自身的能力属性,该能力属性用于标识网络设备301具备兼容C-SID的能力,例如,发布映射至段的C-SID,生成包括C-SID的SID list,将包括C-SID的SID list封装至报文中,根据C-SID处理报文等等。上述控制平面协议例如可以是内部网关协议(Interior Gateway Protocol,IGP),边界网关协议(Border Gateway Protocol,BGP)或路径计算通信协议(Path Computation Element Communication Protocol,PCEP)等等。在一个示例中,网络设备301将被省略的SID中的第一部分添加至DA字段中。结合以上分析,SID list中的多个C-SID一一映射到多个段,进一步地,所述多个段一一映射到多个SID,为了减少SID list的长度,省略SID的第一部分,即省略SID的位置字段的前缀部分,而只将SID的第二部分,即序号部分和功能字段,作为C-SID,存放在SID list中。可选地,SID list中可以只包括C-SID,而不包括C-SID对应的前缀部分。网络设备301在目的地址字段中添加所述SID的第一部 分,即位置字段的前缀部分,并且,网络设备301将所述SID list中多个C-SID中的当前待处理的C-SID拷贝至DA字段中。DA字段中的所述第一部分和当前待处理的C-SID构成当前待处理的SID,从而,网络设备仍然可以根据DA字段的内容处理报文。例如,参见图4B所示,网络设备301将所述多个C-SID中的第一个C-SID,即C-SID1拷贝至DA字段中,DA字段中的前缀部分和C-SID1构成多个SID中的第一个SID,网络设备301根据第一个SID处理报文,例如,转发报文。
当网络中的SID包括上述含有填充内容的第三部分时,网络设备301还将被省略的SID中的第三部分添加至DA字段中。并且,上述第一部分、第二部分和第三部分按照它们在SID中的位置,在DA字段中依次排列。因此,网络设备301将所述第一部分添加在DA字段中的最前面,所述第一部分的第1个比特与所述DA字段的第1个比特对齐;网络设备301将所述第三部分添加在DA字段中的最后面,所述第三部分的最后1个比特与所述DA字段的最后1个比特对齐。DA字段中的所述第一部分、当前待处理的C-SID以及所述第三部分构成当前待处理的SID,从而,报文转发路径上后续的网络设备在接收到报文时,仍然可以根据DA字段的内容处理报文。可选的,当网络中的SID包括上述含有填充内容的第三部分时,网络设备301或者网络中的控制器可以通过控制平面协议向其他网络设备通告DA字段的结构信息,从而使得其他网络设备能够正确解析DA字段的内容。所述结构信息指示C-SID在DA字段中的添加位置,即所述结构信息指示SID中的第二部分在DA字段中的添加位置。结合以上描述,上述第一部分、第二部分和第三部分按照它们在SID中的位置,在DA字段中依次排列,则所述结构信息指示的就是SID中的第二部分在SID中的位置。例如,所述结构信息可以包括上述第一部分的长度和第二部分的长度,即通告上述前缀部分的长度以及C-SID的长度。所述结构信息也可以包括上述第一部分的长度和第三部分的长度,或者,所述结构信息也可以包括上述第一部分的长度、第二部分的长度和第三部分的长度,等等。通知所述结构信息的控制平面协议可以是中间系统到中间系统(Intermediate system to intermediate system,IS-IS)协议、开放式最短路径优先(Open Shortest Path First,OSPF)协议或者边界网关协议(Border Gateway Protocol,BGP)协议等等。其他网络设备解析DA字段内容的具体过程参见下文描述。
结合以上描述,SRH中包括SL指针,用于指示剩余待处理的段的数量。SL每次更新后在SID list中指向的位置偏移一个SID的长度,即128比特。在采用C-SID时,由于C-SID的长度小于SID的长度,原来存放一个SID的空间可以存放多个C-SID。从而SL每次更新后在SID list中指向的位置将偏移多个C-SID的长度,无法准确定位至每个C-SID。
在本申请实施例中,将SID list中的空间划分为多个元素,SL每次更新后指向不同的元素。进而可以设置新的指针,用于确定每个元素中当前待处理的C-SID。该新的指针可以称为CL指针,CL指针与SL指针构成二维指针。其中,SL指针的值用于确定当前待处理的元素在SID list中的位置,CL指针的值用于确定当前待处理的C-SID在该元素中的位置,从而,根据SL指针的值和CL指针的值可以确定当前待处理的C-SID在SID list中的位置,即SL指针的值和CL指针的值共同指示C-SID在SID list中的位置。
在一个示例中,可以将每个SID占据的空间划分为一个元素,即每个元素的长度为128比特,SL指针每次更新后在SID list中指向的位置仍然偏移128比特。参见图4B所 示的报文的报文头中的SID list,SID list中的第一个元素包括4个C-SID,第二个元素包括3个C-SID。从而,7个C-SID共占用SID list中的两个元素。
伴随着网络设备将SID list中的C-SID拷贝至DA字段中的行为,CL指针的值也需要进行更新,以确保CL指针的值始终用于确定当前待处理的C-SID在元素中的位置。
CL指针的更新方式与CL指针的初始值相关联。参见图4B所示,当SID list中第一个元素包括4个C-SID时,CL指针的初始值可以为0,用于指示元素中第一个C-SID,在每次更新时,将CL指针的值加1,即CL指针的值依次更新为1、2和3,依次用于指示元素中第二、三和四个C-SID。类似地,如果CL指针的初始值为3,用于指示元素中第一个C-SID,则在每次更新时,将CL指针的值减1,即CL指针的值依次更新为2、1和0,依次用于指示元素中第二、三和四个C-SID。
更新CL指针的值以及拷贝C-SID至DA字段两个动作之间的执行顺序有两种,第一种是先更新CL指针的值再拷贝C-SID,第二种是先拷贝C-SID再更新CL指针的值。上述两种执行顺序可以通过网络设置进行选择,在选定某一种执行顺序以后,网络中的所有网络设备均按照这一种执行顺序执行上述两个动作,以确保CL指针的值始终用于确定当前待处理的C-SID在元素中的位置。
CL指针在报文头中具有特定的位置。在一个示例中,该CL指针可以包括在C-SID中。图4C示出了C-SID的一种结构。参见图4C,C-SID中最后一部分字段可以被划分出来,作为CL指针的备选字段。该备选字段可以设置为特定长度,例如,3比特。该备选字段的值可以设置为特定的初始值,例如,设置为全0。当SID list中有多个C-SID依次排列时,可以在SID list中每个元素中选择一个特定的C-SID中的备选字段作为CL指针,该特定的C-SID中的备选字段的取值用于确定当前待处理的C-SID在该元素中的位置。而该元素中其他C-SID的备选字段的保持为初始值。优选的,所述特定的C-SID是每个元素中位置处于边缘的C-SID。例如,所述特定的C-SID可以是该元素中的第一个C-SID,如图4B所示的C-SID1,其中包括CL指针,倾斜字体表示这是一种可选的实现方式。将该第一个C-SID的备选字段作为CL指针,并根据当前待处理的C-SID在该元素中的位置修改该CL指针的值。该元素中其他C-SID的备选字段的值保持为初始值,例如,仍然为全0。例如,所述特定的C-SID也可以是该元素中的最后一个C-SID。
在一个示例中,该CL指针可以是从SRH中划分出的字段,图4B中未示出。例如,从标记(Flags)字段、最末条目(Last Entry)字段或者标签(Tag)字段中划分出的一部分。该CL指针可以设置为特定长度,例如,3比特。
在一个示例中,该CL指针可以是IPv6报文头中DA字段中划分出的一部分,具体的,该CL指针位于DA字段的最后一部分,也就是DA字段中C-SID的最后一部分,如图4B所示,倾斜字体表示这是一种可选的实现方式。该CL指针可以设置为特定长度,例如,3比特。根据当前待处理的C-SID在元素中的位置修改DA字段中该CL指针的值。此时,C-SID的格式仍然包括上述备选字段,且备选字段的长度与CL指针的长度相同,但SID list中所有C-SID的备选字段均保持初始值不变。
结合以上描述,网络设备301可以向其他网络设备通告自身具备处理C-SID的能力。在网络中,也可能存在部分网络设备不具备兼容C-SID的能力。当不具备兼容C-SID的能力的网络设备位于报文的转发路径中时,该网络设备也将根据段对报文进行处理。所述网 络设备不具备兼容C-SID的能力,不发布映射至段的C-SID,而只发布映射至段的SID,因而,对应该转发路径SID list中将包括映射至该段的SID。当该转发路径还经过兼容C-SID的网络设备时,对应该转发路径的SID list中将同时包括C-SID和SID。
图5A示出了封装有报文头的报文的一种结构,其中报文头包括IPv6报文头和SRH,SRH中包括SID list,该SID list中同时包括C-SID和SID。具体的,所述SID list可以在C-SID之前包括SID,也可以在C-SID之后包括SID,也可以同时在C-SID之前和C-SID之后均包括SID。所述C-SID可以是指多个C-SID,所述C-SID之前或所述C-SID之后的SID都可以是指多个SID。对应的实际网络情况是,报文的转发路径可以在兼容C-SID的网络域之前先经过不兼容C-SID的网络域,也可以是在兼容C-SID的网络域之后再经过不兼容C-SID的网络域,也可以是在兼容C-SID的网络域之前先经过不兼容C-SID的网络域,并且在兼容C-SID的网络域之后再经过不兼容C-SID的网络域。所述兼容C-SID的网络域可以包括多个网络设备,所述不兼容C-SID的网络域也可以包括多个网络设备。
结合图1所示的应用场景,除了网络设备1至网络设备7以外,所述报文的转发路径还可以经过其他不具备兼容C-SID的能力的网络设备,这些不具备兼容C-SID的能力的网络设备可以位于网络设备S至网络设备1之间,并且位于网络设备7之后,图1中均未示出。
当SID list中同时包括C-SID和SID时,该SID list仍然可以通过上述扩展的控制平面协议进行发送。
当SID list中同时包括C-SID和SID时,可以在报文头中设置开始标志,用于指示C-SID的开始。
在一个示例中,所有具备兼容C-SID能力的网络设备所执行的段在SID list中都采用C-SID表示,所述开始标志可以包括在第一个C-SID前的最后一个SID中。例如,所述开始标志可以是SRv6中的一个特定功能,存放在所述最后一个SID的功能字段中。
在一个示例中,所有具备兼容C-SID能力的网络设备所执行的段中,第一个段在SID list中仍然采用长度为128比特的SID表示,其余段都采用C-SID表示,所述开始标志可以包括在所述第一个段映射的SID中,该SID也可以被称为特殊SID。图5B示出了所述特殊SID的格式。该SID包括位置字段、功能字段和参数字段,即Locator,Function和Argument。其中,位置字段包括前缀部分和序号部分,即Prefix-1和NodeID。并且,Prefix-1与C-SID映射到的SID中的Prefix是不同的。参数字段包括数量标志和CL指针,数量标志用L表示。图5C示出了SID list中包括上述特殊SID的报文,其中SPECIAL SID即所述特征SID。
在采用特殊SID时,可以将所述C-SID占据的空间划分为一个元素,该元素的长度有可能大于128比特,其余每个SID占据的空间划分为一个元素,这些元素的长度为128比特。从而,所有空间的长度不一定相同,SL指针每次更新后在SID list中指向的位置所偏移的长度也不一定相同。参见图5A所示的报文的报文头中的SID list,SID list中包括所有C-SID的元素中包括7个C-SID,长度大于128比特。
所述特殊SID中的CL指针用于在包括C-SID的元素中确定当前待处理的C-SID。伴随着网络设备将SID list中的C-SID拷贝至DA字段中的行为,该CL指针的值进行更新,以确保CL指针的值始终用于确定当前待处理的C-SID在元素中的位置。结合图5C所示 的报文,特殊SID中的CL指针的值可以为7个不同的值,例如0-6。
所述数量标志的值用于表示所有C-SID的数量。所述数量标志的值用于在多个C-SID结束时,确定SL指针更新时偏移的位置。结合图5C所示的报文,当多个C-SID结束时,SL指针偏移的位置可以为224比特,从而指向多个C-SID后的第一个SID。
在一个示例中,所述特殊SID中的功能字段的值用于表示SRv6网络中的一个特定的功能,所述数量标志和所述CL指针作为该特定的功能的参数。所述特定的功能用于在CL指针的值为初始值时,即SID list中多个C-SID开始时,将C-SID映射的SID的前缀部分,即上述Prefix,拷贝至DA字段中,并且将所述多个C-SID中的第一个C-SID拷贝至DA字段中。
在一个示例中,网络设备301可以获得关于相同段的SID和C-SID,其中包括上述特殊SID。这些SID和C-SID可以由执行所述段的网络设备进行发布。当生成SID list时,在能够用C-SID表示的多个段中,第一个段应当采用上述特殊SID,而不采用C-SID。
当SID list中同时包括C-SID和SID时,还可以在报文头中设置结束标志,用于指示C-SID的结束。网络设备可以根据结束标志确定出多个C-SID中的最后一个C-SID,并将最后一个C-SID之后的128比特拷贝至DA字段中,即将最后一个C-SID之后的SID拷贝至DA字段中。
在一个示例中,在SID list中,在多个C-SID之后设置一个结束标志,用于指示多个C-SID的结束。该结束标志可以是与C-SID长度相同的类型字段,该结束标志的取值为特定数值,例如全0。如图5A所示,该结束标志可以用EOC表示,倾斜字体表示这是一种可选的实现方式。
在一个示例中,在SID list中,在多个C-SID中的最后一个C-SID中设置一个结束标志,用于指示多个C-SID的结束。如图5A所示,该结束标志可以包括在C-SID7中。
可选的,该结束标志可以是SRv6中的一个特定功能,存放在最后一个C-SID的功能字段中。
可选的,该结束标志可以是C-SID中的特定字段。结合以上描述,C-SID中最后一部分字段可以被划分出来,作为CL指针的备选字段。在此基础上,CL指针的备选字段之前的一部分字段可以被划分出来,作为结束标志的备选字段。图5D示出了包括结束标志的备选字段和CL指针的备选字段的C-SID的格式。其中结束标志的备选字段用S表示。该结束标志的备选字段可以设置为特定长度,例如,1比特。该结束标志的备选字段的值可以设置为特定的初始值,例如,设置为0。SID list中最后一个C-SID中的结束标志的备选字段的值设置为1,表示C-SID的结束。其余C-SID中的结束标志的备选字段的值保持为初始值。其中,CL指针的更新方式与先前介绍的方式相同,在此不再赘述。
在一个示例中,网络设备301可以获得关于相同段的不同格式的C-SID,其中包括上述包括结束标志的备选字段和CL指针的备选字段的C-SID的格式。这些不同的格式的C-SID可以由执行所述段的网络设备进行发布。SID list中每个元素中的最后一个C-SID可以选择上述包括结束标志的备选字段和CL指针的备选字段的C-SID的格式。其中的CL指针的备选字段可以用作CL指针,用于确定该元素中当前待处理的C-SID,当该元素中的最后一个C-SID同时是所有C-SID中的最后一个C-SID时,其中的结束标志可以用于指示C-SID的结束。
S320,网络设备301发送封装有所述报文头的所述报文。
结合以上描述,网络设备301将SID list中的第一个C-SID拷贝至DA字段中,DA字段中SID的第一部分和第一个C-SID重新组成SID,网络设备301发送封装有所述报文头的所述报文。可选地,网络设备301根据SID中功能字段所表示的SRv6网络功能对报文进行处理,处理过程由SRv6网络功能中的具体指令决定。可选地,处理过程可以包括将所述报文发送出去,例如,网络设备301将所述报文发送至网络设备302。
S325,网络设备302接收所述报文。所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置。
S330,网络设备302根据所述第一指针的值和所述第二指针的值确定所述第一标识。
S335,网络设备302将所述第一标识拷贝至所述目的地址字段中。
网络设备302接收到包含C-SID的SID list,根据SL指针和CL指针确定当前待处理的C-SID,将该C-SID拷贝至DA字段中。该C-SID可以覆盖DA字段中原有的C-SID,与DA字段中的前缀部分组合成SID。报文转发路径上后续的网络设备可以根据该SID处理报文。
当网络中的SID包括上述含有填充内容的第三部分时,网络设备302根据来自网络设备301或者网络中的控制器通告的SID的结构信息,获知所述第二部分在DA字段中的具体位置。从而网络设备302根据所述第二部分在DA字段中的具体位置,可以将当前待处理的C-SID拷贝至DA字段中的第二部分的对应的位置,从而使得该C-SID覆盖DA字段中原有的C-SID。也就是说,网络设备302对DA字段中的第二部分进行更新,而不对DA字段中的第一部分和第三部分进行更新。更新后的第二部分与第一部分和第三部分共同组合成SID。报文转发路径上后续的网络设备可以根据该SID处理报文。结合以上描述,更新CL指针的值以及拷贝C-SID至DA字段两个动作之间的执行顺序有两种,与此相关联的,在网络设备302处,根据SL指针和CL指针确定当前待处理的C-SID也有两种执行方式。并且,SID list中包括C-SID的空间可以被划分为多个元素,也可以被划分为一个元素,与此相关联的,在网络设备302处,根据SL指针和CL指针确定当前待处理的C-SID也有不同的执行方式。
当执行顺序为先更新CL指针的值再拷贝C-SID,并且SID list中包括C-SID的空间可以被划分为多个元素时,结合图1所示的应用场景进行举例说明。网络设备302可以是图1中的网络设备1,网络设备1接收网络设备S发送的报文,报文的报文头如图4所示,报文头包括DA字段、SL指针、CL指针和SID list,SID list中包括多个C-SID。此时,DA字段包括前缀部分和C-SID 1,其中,前缀部分为A1,C-SID 1为0001:1111,前缀部分和C-SID 1组合为A1:0001:1111,即网络设备1的SID。此时,报文头中SL指针的值为1,指示第一个元素在SID list中的位置,参见图4,第一个元素包括4个C-SID,分别为C-SID 1,C-SID 2,C-SID 3,C-SID 4。报文头中CL指针的值为1,指示行中第一个C-SID在元素中的位置,即C-SID 1。网络设备1先更新CL指针的值,例如,将CL指针的值修改为2,指示行中第二个C-SID在元素中的位置。网络设备1根据SL指针和CL指针的指示,获得第一个元素中第二个C-SID,即C-SID 2,将C-SID 2拷贝至报文头中 的DA字段中,代替DA字段中原有的C-SID 1。此时,DA字段中包括前缀部分和C-SID2的组合,即A1:0002:2222,也就是网络设备2的SID。网络设备1根据DA字段中的网络设备2的SID查询转发表项,根据查询结果向网络设备2发送所述报文。
网络设备302也可以是图1中的网络设备2,网络设备2接收网络设备1发送的报文,此时,报文的报文头中的DA字段包括前缀部分和C-SID 2,即A1:0002:2222,也即网络设备2的SID。报文头中SL指针的值为1,CL指针的值为2,指示第一个元素中第二个C-SID在元素中的位置,即C-SID 2。网络设备2先更新CL指针的值,例如,将CL指针的值修改为3,指示行中第三个C-SID在元素中的位置。网络设备2根据SL指针和CL指针的指示,获得第一个元素中第三个C-SID,即C-SID 3,将C-SID 3拷贝至报文头中的DA字段中,代替DA字段中原有的C-SID 2。此时,DA字段中包括前缀部分和C-SID 3的组合,即A1:0003:3333,也就是网络设备3的SID。网络设备2根据DA字段中的网络设备3的SID查询转发表项,根据查询结果向网络设备3发送所述报文。
网络设备302也可以是图1中的网络设备3,网络设备3处理报文的过程与以上描述类似,在此不再赘述。
当执行顺序为先拷贝C-SID再更新CL指针的值时,并且SID list中包括C-SID的空间可以被划分为多个元素时,则在网络设备1接收到的报文中,CL指针的值已经为2,指示元素中第二个C-SID在元素中的位置。网络设备1根据SL指针和CL指针的指示,获得第一个元素中第二个C-SID,即C-SID 2,将C-SID 2拷贝至报文头中的DA字段中,代替DA字段中原有的C-SID 1。然后,网络设备1更新CL指针的值,例如,将CL指针的值修改为3,指示行中第三个C-SID在元素中的位置。此时,DA字段中包括前缀部分和C-SID 2的组合,即A1:0002:2222,也就是网络设备2的SID。网络设备1根据DA字段中的网络设备2的SID查询转发表项,根据查询结果向网络设备2发送所述报文。其他执行过程可以根据以上描述类推得出,在此不再赘述。
在一个示例中,网络设备302判断当前DA字段中的C-SID是否为SID list的元素中的最后一个C-SID,如果当前DA字段中的C-SID为SID list的元素中的最后一个C-SID,网络设备302需要更新SL指针的值和CL指针的值。报文转发路径上的多个网络设备依次处理SID list中的多个C-SID,当SID list中的一个元素中的C-SID处理完毕以后,继续处理后一个元素中的C-SID。此时,即需要修改CL指针的值又需要修改SL指针的值,以确保根据CL指针的值和SL指针的值仍然能够确定当前待处理的C-SID。
结合图1所示的应用场景和图4B所示的报文中的SID list,仍然以执行顺序为先更新SL指针的值和CL指针的值再拷贝C-SID为例进行说明。网络设备302可以是图1中的网络设备4,网络设备4接收网络设备3发送的报文。此时,报文的报文头中的DA字段包括前缀部分和C-SID 4,即A1:0004:4444,也即网络设备4的SID。报文头中SL指针的值为1,CL指针的值为4,指示第一个元素中第四个C-SID在元素中的位置,即C-SID 4。网络设备4确定当前DA字段中的C-SID 4是SID list的元素中的最后一个C-SID,则网络设备4需要更新SL指针的值和CL指针的值。具体的,网络设备4先更新SL指针的值,例如,将SL指针的值修改为0,指示SID list中的第二个元素,第二个元素包括3个C-SID,分别为C-SID 5,C-SID 6,C-SID 7。网络设备4再更新CL指针的值,例如,将CL指针的值修改为1,指示元素中第一个C-SID在元素中的位置,即C-SID 5在元素中的位置。 网络设备4根据SL指针和CL指针的指示,获得第二个元素中第一个C-SID,即C-SID 5,将C-SID 5拷贝至报文头中的DA字段中,代替DA字段中原有的C-SID 4。此时,DA字段中包括前缀部分和C-SID 5的组合,即A1:0005:5555,也就是网络设备5的SID。网络设备4根据DA字段中的网络设备5的SID查询转发表项,根据查询结果向网络设备5发送所述报文。
当执行顺序为先拷贝C-SID再更新SL指针的值和CL指针的值,执行过程可以根据以上描述类推得出,在此不再赘述。
并且,网络设备302也可以是图1中的网络设备5、网络设备6或网络设备7,这些网络设备处理报文的过程与以上描述类似,在此不再赘述。
当SID list中包括C-SID的空间被划分为一个元素时,执行过程可以根据以上描述类推得出,在此不再赘述。
虽然,在以上对图1所示的应用场景的举例说明中,在每个网络设备处都对报文进行一次转发处理,每次转发处理行为分别对应一个段,从而表示整个报文转发过程的SID list包括7个SID。但是,本领域技术人员容易预期到,在处理报文的过程中,也可能在某些网络设备处对报文进行多次处理,这些处理中包括转发处理,也包括非转发处理,每次处理行为对应一个段,从而在图1所示的应用场景中,表示整个报文转发过程的SID list可以包括7个以上的SID,例如,10个SID。
图6示出了上述实施例中所涉及的网络设备的一种可能的结构示意图,网络设备600可以实现图3所示实施例中网络设备301的功能。参阅图6,该网络设备600包括:接收单元601和处理单元602。这些单元可以执行上述方法中网络设备的相应功能。举例来说,
接收单元601,用于接收报文;
处理单元602,用于生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,根据所述列表处理封装有所述报文头的所述报文。
图7示出上述实施例中所涉及的网络设备301的另一种可能的结构示意图。网络设备700包括:处理器702、网络接口703以及存储器701。其中,
存储器701,用于存储指令;在实现图6所示实施例的情况下,且图6实施例中所描述的各单元为通过软件实现的情况下,执行图6中的处理单元602功能所需的软件或程序代码存储在存储器701中。
处理器702,用于执行存储器701中的指令,执行上述应用于图3所示实施例中处理报文的方法。
网络接口703,用于与其他网络设备通信。
网络接口703、处理器702以及存储器701相互连接。例如,网络接口703、处理器702以及存储器701通过总线相互连接;总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在具体实施例中,处理器702用于通过网络接口703接收报文,生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,根据所述列表处理封装有所述报文头的所述报文。该处理器702的详细处理过程请参考上述图3所示实施例中的过程S310,S315,S320的详细描述,这里不再赘述。
网络接口703用于网络设备700通过网络系统接收和发送报文。具体的过程请参考上述图3所示实施例中S310的详细描述,这里不再赘述。
图8示出了上述实施例中所涉及的网络设备的一种可能的结构示意图,该网络设备800可以实现图3所示实施例中网络设备302的功能。参阅图8,网络设备800包括:接收单元801和处理单元802。该单元可以执行上述方法中网络设备的相应功能。举例来说,
接收单元801,用于接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;
处理单元802,用于根据所述第一指针的值和所述第二指针的值确定所述第一标识,将所述第一标识拷贝至所述目的地址字段中。
图9示出了上述实施例中所涉及的网络设备的一种可能的结构示意图,网络设备900包括:处理器902、网络接口903以及存储器901。其中,
存储器901,用于存储指令;在实现图8所示实施例的情况下,且图8实施例中所描述的各单元为通过软件实现的情况下,执行图8中8发送单元801功能所需的软件或程序代码存储在存储器901中。
处理器902,用于执行存储器901中的指令,执行上述应用于图3所示实施例中处理报文的方法。
网络接口903,用于与其他网络设备通信。
网络接口903、处理器902以及存储器901相互连接。例如,网络接口903、处理器902以及存储器901通过总线相互连接;总线可以是PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在具体实施例中,处理器902用于通过网络接口903接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,根据所述第一指针的值和所述第二指针的值确定所述第一标识,将所述第一标识拷贝至所述目的地址字段中。该处理器902的详细处理过程请参考上述图3所示实施例中的过程S325,S330,S335的详细描述,这里不再赘述。
网络接口903用于网络设备900通过网络系统收发报文。具体的过程请参考上述图3所示实施例中S325的详细描述,这里不再赘述。
上述存储器701和存储器901可以是随机存取存储器(random-access memory,RAM)、 闪存(flash)、只读存储器(read only memory,ROM)、可擦写可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read only memory,EEPROM)、寄存器(register)、硬盘、移动硬盘、CD-ROM或者本领域技术人员知晓的任何其他形式的存储介质。
上述处理器702和处理器902例如可以是中央处理器(central processing unit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。
上述网络接口703和网络接口903例如可以是接口卡等,可以为以太(ethernet)接口或异步传输模式(asynchronous transfer mode,ATM)接口。上述网络接口703和网络接口903可以为有线接口或无线接口。
上述处理器702和处理器902例如可以是专用集成电路(application-specific integrated circuit,ASIC)。此时,处理器702和处理器902根据自身电路,执行上述应用于图3所示实施例中处理报文的方法。也就是说,此时存储器701和存储器901无需存储处理器702和处理器902所执行的指令,处理器702和处理器902不再执行存储器701和存储器901中的指令。可选的,此时网络设备可以不包括存储器701或存储器901。
参阅图10所示,图10示出本发明实施例提供的一种网络系统的可能的结构示意图。网络系统1000包括第一网络设备1001和第二网络设备1002。所述网络系统中的第一网络设备1001可以执行图3所示实施例中网络设备301的处理步骤,所述网络系统中的第二网络设备1002可以执行图3所示实施例中网络设备302的处理步骤。相应的,所述网络系统中的第一网络设备1001可以为图6所示实施例的网络设备600,所述第二网络设备1002可以为图8所示实施例的网络设备800,或者相应的,所述网络系统中的第一网络设备1001可以为图7所示实施例的网络设备700,所述第二网络设备1002可以为图9所示实施例的网络设备900。
具体的,所述第一网络设备,用于接收报文,生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,根据所述列表处理封装有所述报文头的所述报文。
所述第二网络设备,用于接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,根据所述第一指针的值和所述第二指针的值确定所述第一标识,将所述第一标识拷贝至所述目的地址字段中。
本发明实施例还提供了一种非瞬态存储介质,用于储存前述实施例中所用的软件指令,其包括用于执行前述实施例所示的方法的程序,当其在计算机或网络设备上执行时,使得所示计算机或网络设备执行前述方法实施例中的方法。
本发明实施例还提供了一种包括计算机程序指令的计算机程序产品,当该计算机程序 产品在计算机上运行时,使得网络节点执行前述方法实施例中的方法。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑业务划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各业务单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件业务单元的形式实现。
集成的单元如果以软件业务单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的业务可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些业务存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (71)

  1. 一种处理报文的方法,所述方法应用于分段路由SR网络,其特征在于,所述方法包括:
    接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;
    根据所述第一指针的值和所述第二指针的值确定所述第一标识;
    将所述第一标识拷贝至所述目的地址字段中。
  2. 根据权利要求1所述的方法,其特征在于,
    所述列表包括依次排列的多个标识,具体为:
    所述列表包括依次排列的至少一个元素,所述至少一个元素包括第一元素,所述第一元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;
    所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,所述第一指针的值用于确定所述第一标识在所述第一元素中的位置。
  3. 根据权利要求2所述的方法,其特征在于,所述第一指针包括在所述至少两个标识中的第一个标识中。
  4. 根据权利要求2或3所述的方法,其特征在于,
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识;
    所述根据所述第一指针的值和所述第二指针的值确定所述第一标识包括:
    修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置;
    根据修改后的所述第一指针的值和所述第二指针的值确定所述第一标识。
  5. 根据权利要求2或3所述的方法,其特征在于,
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示所述第一标识在所述第一元素中的位置;
    所述将所述第一标识拷贝至所述目的地址字段中之后,所述方法还包括:
    修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述至少两个标识中 的后一个标识。
  6. 根据权利要求2或3所述的方法,其特征在于,
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:
    所述第二指针的值指示所述至少一个元素中的第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的前一个元素;
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示第二标识在所述第二元素中位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识,所述第二元素包括所述多个标识中的至少一个标识,所述至少一个标识依次排列,所述第二标识是所述至少一个标识中的一个,所述目的地址字段包括第二标识;
    所述根据所述第一指针的值和所述第二指针的值确定所述第一标识包括:
    确定所述第二标识是所述至少一个标识中的最后一个标识;
    修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示所述第一元素在所述列表中的位置;
    修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置;
    根据修改后的所述第一指针的值和修改后的所述第二指针的值确定所述第一标识。
  7. 根据权利要求2或3所述的方法,其特征在于,
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:
    所述第二指针的值指示所述第一元素在所述列表中的位置;
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示所述第一标识在所述第一元素中位置;
    在所述将所述第一标识拷贝至所述目的地址字段中之后,所述方法还包括:
    确定所述第一标识是所述至少两个标识中的最后一个标识;
    修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的后一个元素;
    修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第二元素中的位置,所述第二标识是所述第一标识在所述多个标识中的后一个标识,所述第二元素包括所述第二标识。
  8. 根据权利要求1-7任一项所述的方法,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  9. 根据权利要求8所述的方法,其特征在于,所述目的地址字段中包括所述第一部分。
  10. 根据权利要求1-9任一项所述的方法,其特征在于,所述元素的长度为(N*32)比特,其中N为大于等于1的整数。
  11. 根据权利要求1-7任一项所述的方法,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括依次排列的第一部分、第二部分和第三部分,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  12. 根据权利要求11所述的方法,其特征在于,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
  13. 根据权利要求1或11所述的方法,其特征在于,所述方法还包括:
    接收所述目的地址字段的结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置;
    所述将所述第一标识拷贝至所述目的地址字段中,包括:
    根据所述结构信息,将所述第一标识拷贝至所述第一标识在所述目的地址字段中的所述添加位置。
  14. 根据权利要求13所述的方法,其特征在于,所述接收所述目的地址字段的结构信息包括:
    接收控制报文,所述控制报文包括所述结构信息,所述控制报文是中间系统到中间系统IS-IS协议报文、开放式最短路径优先OSPF协议报文或者边界网关协议BGP协议报文。
  15. 根据权利要求1至14任一项所述的方法,其特征在于,所述多个标识中的每个标识的长度为32比特或16比特。
  16. 一种转发报文的方法,所述方法应用于分段路由SR网络,其特征在于,所述方法包括:
    接收报文;
    生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;
    发送封装有所述报文头的所述报文。
  17. 根据权利要求16所述的方法,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  18. 根据权利要求17所述的方法,其特征在于,所述生成所述报文头包括:
    将所述多个段中的每个段所映射到的段标识的第二部分作为所述每个段所映射到的标识以生成所述列表;
    根据所述列表生成所述报文头。
  19. 根据权利要求17所述的方法,其特征在于,所述生成所述报文头包括:
    接收所述列表,所述列表中的所述多个标识中的每个标识包括所述每个标识所映射到的段所映射到的段标识的第二部分。
  20. 根据权利要求17所述的方法,其特征在于,所述第一部分的长度为X比特,X为整数,X大于等于1且小于128,所述多个标识中的每个标识的长度为128-X比特。
  21. 根据权利要求17所述的方法,其特征在于,所述列表不包括所述第一部分。
  22. 根据权利要求17-21任一项所述的方法,其特征在于,所述报文头还包括目的地址字段,所述生成所述报文头并封装所述报文头至所述报文还包括:
    在所述目的地址字段添加所述第一部分;
    将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
  23. 根据权利要求16或17所述的方法,其特征在于,
    所述列表包括依次排列的多个标识,具体为:
    所述列表包括依次排列的至少一个元素,所述至少一个元素中的第一个元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;
    所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:
    所述第二指针的值指示所述第一个元素在所述列表中的位置,所述第一指针的值指示所述第一标识在所述第一元素中的位置。
  24. 根据权利要求23所述的方法,其特征在于,所述第一指针包括在所述至少两个标识中的第一个标识中。
  25. 根据权利要求16或17所述的方法,其特征在于,所述列表包括第一段标识,所述第一段标识在所述多个标识中的第一个标识之前,所述第一段标识映射到所述SR网络 中的段,所述第一段标识的长度为128比特。
  26. 根据权利要求25所述的方法,其特征在于,所述第一段标识与所述多个标识中的第一个标识相邻,所述第一段标识包括开始标志,所述开始标志用于指示所述第一段标识在所述列表中的后一个标识是所述多个标识中的第一个标识。
  27. 根据权利要求26所述的方法,其特征在于,所述第一段标识包括功能字段和参数字段,所述功能字段包括所述开始标志,所述参数字段包括所述第一指针和数量标志,所述数量标志用于指示所述多个标识的数量。
  28. 根据权利要求16或17所述的方法,其特征在于,所述列表包括第二段标识,所述第二段标识在所述多个标识中的最后一个标识之后,所述第一段标识映射到所述SR网络中的段,所述第一段标识的长度为128比特。
  29. 根据权利要求28所述的方法,其特征在于,所述第二段标识与所述多个标识中的最后一个标识相邻,所述第二段标识包括结束标志,所述结束标志用于指示所述第二段标识在所述列表中的前一个标识是所述多个标识中的最后一个标识。
  30. 根据权利要求16所述的方法,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括依次排列的第一部分、第二部分和第三部分,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  31. 根据权利要求30所述的方法,其特征在于,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
  32. 根据权利要求30或31所述的方法,其特征在于,所述报文头还包括目的地址字段,所述生成所述报文头并封装所述报文头至所述报文还包括:
    在所述目的地址字段添加所述第一部分和所述第三部分;
    将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
  33. 根据权利要求30-32任一项所述的方法,其特征在于,所述方法还包括:
    向中间网络设备发送结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置。
  34. 根据权利要求16-33任一项所述的方法,其特征在于,所述多个标识中的每个标识的长度为32比特或16比特。
  35. 一种网络设备,所述网络设备位于分段路由SR网络,其特征在于,所述网络设备包括:
    接收单元,用于接收报文,所述报文的报文头包括目的地址字段、第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;
    处理单元,用于根据所述第一指针的值和所述第二指针的值确定所述第一标识,将所述第一标识拷贝至所述目的地址字段中。
  36. 根据权利要求35所述的网络设备,其特征在于,
    所述列表包括依次排列的多个标识,具体为:
    所述列表包括依次排列的至少一个元素,所述至少一个元素包括第一元素,所述第一元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;
    所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,所述第一指针的值用于确定所述第一标识在所述第一元素中的位置。
  37. 根据权利要求36所述的网络设备,其特征在于,所述第一指针包括在所述至少两个标识中的第一个标识中。
  38. 根据权利要求36或37所述的网络设备,其特征在于,
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识;
    所述处理单元,还用于修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置,根据修改后的所述第一指针的值和所述第二指针的值确定所述第一标识。
  39. 根据权利要求36或37所述的网络设备,其特征在于,
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示所述第一标识在所述第一元素中的位置;
    所述处理单元,还用于修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第一元素中的位置,所述第二标识是所述第一标识在所述至少两个标识中的后一个标识。
  40. 根据权利要求36或37所述的网络设备,其特征在于,
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:
    所述第二指针的值指示所述至少一个元素中的第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的前一个元素;
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示第二标识在所述第二元素中位置,所述第二标识是所述第一标识在所述多个标识中的前一个标识,所述第二元素包括所述多个标识中的至少一个标识,所述至少一个标识依次排列,所述第二标识是所述至少一个标识中的一个,所述目的地址字段包括第二标识;
    所述处理单元,还用于确定所述第二标识是所述至少一个标识中的最后一个标识,修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示所述第一元素在所述列表中的位置,修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示所述第一标识在所述第一元素中的位置,根据修改后的所述第一指针的值和修改后的所述第二指针的值确定所述第一标识。
  41. 根据权利要求36或37所述的网络设备,其特征在于,
    所述第二指针的值用于确定所述第一元素在所述列表中的位置,具体为:
    所述第二指针的值指示所述第一元素在所述列表中的位置;
    所述第一指针的值用于确定所述第一标识在所述第一元素中的位置,具体为:
    所述第一指针的值指示所述第一标识在所述第一元素中位置;
    所述处理单元,还用于确定所述第一标识是所述至少两个标识中的最后一个标识,修改所述报文的报文头中所述第二指针的值,以使得修改后的所述第二指针的值指示第二元素在所述列表中的位置,所述第二元素是所述第一元素在所述至少一个元素中的后一个元素,修改所述报文的报文头中所述第一指针的值,以使得修改后的所述第一指针的值指示第二标识在所述第二元素中的位置,所述第二标识是所述第一标识在所述多个标识中的后一个标识,所述第二元素包括所述第二标识。
  42. 根据权利要求35-41任一项所述的网络设备,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  43. 根据权利要求42所述的网络设备,其特征在于,所述目的地址字段中包括所述第一部分。
  44. 根据权利要求35-43任一项所述的方法,其特征在于,所述元素的长度为(N*32)比特,其中N为大于等于1的整数。
  45. 根据权利要求35-41任一项所述的网络设备,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标 识包括依次排列的第一部分、第二部分和第三部分,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  46. 根据权利要求45所述的网络设备,其特征在于,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
  47. 根据权利要求35或45所述的网络设备,其特征在于,
    所述处理单元,还用于接收所述目的地址字段的结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置;根据所述结构信息,将所述第一标识拷贝至所述第一标识在所述目的地址字段中的所述添加位置。
  48. 根据权利要求47所述的网络设备,其特征在于,
    所述处理单元,还用于接收控制报文,所述控制报文包括所述结构信息,所述控制报文是中间系统到中间系统IS-IS协议报文、开放式最短路径优先OSPF协议报文或者边界网关协议BGP协议报文。
  49. 根据权利要求35-48任一项所述的网络设备,其特征在于,所述多个标识中的每个标识的长度为32比特或16比特。
  50. 一种网络设备,所述网络设备位于分段路由SR网络,其特征在于,所述网络设备包括:
    接收单元,用于接收报文;
    处理单元,用于生成报文头并封装所述报文头至所述报文,所述报文头包括第一指针、第二指针和用于处理所述报文的列表,所述列表包括依次排列的多个标识,所述多个标识一一映射到所述SR网络中的多个段,所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置;发送封装有所述报文头的所述报文。
  51. 根据权利要求50所述的网络设备,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括第一部分和第二部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  52. 根据权利要求51所述的网络设备,其特征在于,
    所述处理单元,还用于将所述多个段中的每个段所映射到的段标识的第二部分作为所述每个段所映射到的标识以生成所述列表,根据所述列表生成所述报文头。
  53. 根据权利要求51所述的网络设备,其特征在于,
    所述处理单元,还用于接收所述列表,所述列表中的所述多个标识中的每个标识包括所述每个标识所映射到的段所映射到的段标识的第二部分。
  54. 根据权利要求51所述的网络设备,其特征在于,所述第一部分的长度为X比特,X为整数,X大于等于1且小于128,所述多个标识中的每个标识的长度为128-X比特。
  55. 根据权利要求51所述的网络设备,其特征在于,所述列表不包括所述第一部分。
  56. 根据权利要求51-55任一项所述的网络设备,其特征在于,所述报文头还包括目的地址字段,
    所述处理单元,还用于在所述目的地址字段添加所述第一部分,将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
  57. 根据权利要求50或51所述的网络设备,其特征在于,
    所述列表包括依次排列的多个标识,具体为:
    所述列表包括依次排列的至少一个元素,所述至少一个元素中的第一个元素包括所述多个标识中的至少两个标识,所述至少两个标识依次排列,所述第一标识是所述至少两个标识中的一个;
    所述第一指针的值和所述第二指针的值共同指示所述多个标识中的第一标识在所述列表中的位置,具体为:
    所述第二指针的值指示所述第一个元素在所述列表中的位置,所述第一指针的值指示所述第一标识在所述第一元素中的位置。
  58. 根据权利要求57所述的网络设备,其特征在于,所述第一指针包括在所述至少两个标识中的第一个标识中。
  59. 根据权利要求50或51所述的网络设备,其特征在于,所述列表包括第一段标识,所述第一段标识在所述多个标识中的第一个标识之前,所述第一段标识映射到所述SR网络中的段,所述第一段标识的长度为128比特。
  60. 根据权利要求59所述的网络设备,其特征在于,所述第一段标识与所述多个标识中的第一个标识相邻,所述第一段标识包括开始标志,所述开始标志用于指示所述第一段标识在所述列表中的后一个标识是所述多个标识中的第一个标识。
  61. 根据权利要求60所述的网络设备,其特征在于,所述第一段标识包括功能字段和参数字段,所述功能字段包括所述开始标志,所述参数字段包括所述第一指针和数量标志,所述数量标志用于指示所述多个标识的数量。
  62. 根据权利要求50或51所述的网络设备,其特征在于,所述列表包括第二段标识, 所述第二段标识在所述多个标识中的最后一个标识之后,所述第一段标识映射到所述SR网络中的段,所述第一段标识的长度为128比特。
  63. 根据权利要求62所述的网络设备,其特征在于,所述第二段标识与所述多个标识中的最后一个标识相邻,所述第二段标识包括结束标志,所述结束标志用于指示所述第二段标识在所述列表中的前一个标识是所述多个标识中的最后一个标识。
  64. 根据权利要求50所述的网络设备,其特征在于,所述多个段一一映射到多个段标识,所述多个标识一一映射到所述多个段标识,所述多个段标识中的每个段标识包括依次排列的第一部分、第二部分和第三部分,所述第一部分在所述第二部分之前,所述多个段标识中的所有段标识的第一部分相同,所述多个段标识中的所有段标识的第三部分相同,所述多个标识中的每个标识包括所述每个标识所映射到的段标识的第二部分。
  65. 根据权利要求64所述的网络设备,其特征在于,所述第一部分、所述第二部分和所述第三部分的总长度为128比特。
  66. 根据权利要求64或65所述的网络设备,其特征在于,所述报文头还包括目的地址字段,
    所述处理单元,还用于在所述目的地址字段添加所述第一部分和所述第三部分,将所述多个标识中的第一个标识拷贝至所述目的地址字段中。
  67. 根据权利要求64-66任一项所述的网络设备,其特征在于,所述处理单元,还用于向中间网络设备发送结构信息,所述结构信息指示所述第一标识在所述目的地址字段中的添加位置。
  68. 根据权利要求19至23任一项所述的网络设备,其特征在于,所述多个标识中的每个标识的长度为32比特或16比特。
  69. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在处理器上运行时,实现权利要求1-34任一项所述的方法。
  70. 一种计算机程序产品,其特征在于,所述计算机程序产品存储在存储器上,当所述计算机程序产品在处理器上运行时,实现权利要求1-34任一项所述的方法。
  71. 一种网络系统,其特征在于,包括第一网络设备和第二网络设备,所述第一网络设备包括权利要求35-49任一项所述的网络设备,所述第二网络设备包括权利要求50-68任一项所述的网络设备。
PCT/CN2020/073785 2019-09-27 2020-01-22 一种在sr网络中转发报文的方法、设备和系统 WO2021056945A1 (zh)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020227010885A KR20220052371A (ko) 2019-09-27 2020-01-22 Sr 네트워크에서 패킷을 전달하는 방법, 장치 및 시스템
CA3175941A CA3175941A1 (en) 2019-09-27 2020-01-22 Method for forwarding packet on sr network, device, and system
BR112022005853A BR112022005853A2 (pt) 2019-09-27 2020-01-22 Método para encaminhar pacote em rede de sr, dispositivo, e sistema
CN202080050898.7A CN114365464B (zh) 2019-09-27 2020-01-22 一种在sr网络中转发报文的方法、设备和系统
EP20867794.8A EP4020909B1 (en) 2019-09-27 2020-01-22 Method for forwarding message in sr network, device, and system
EP23220203.6A EP4373048A3 (en) 2019-09-27 2020-01-22 Method for forwarding packet on sr network, device, and system
JP2022519200A JP7481436B2 (ja) 2019-09-27 2020-01-22 Srネットワークでパケットを転送する方法、デバイス、及びシステム
CN202310212314.7A CN116319524A (zh) 2019-09-27 2020-01-22 一种在sr网络中转发报文的方法、设备和系统
US17/703,614 US20220217081A1 (en) 2019-09-27 2022-03-24 Method for forwarding packet on sr network, device, and system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910925974.3 2019-09-27
CN201910925974.3A CN112583745A (zh) 2019-09-27 2019-09-27 一种在sr网络中转发报文的方法、设备和系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/703,614 Continuation US20220217081A1 (en) 2019-09-27 2022-03-24 Method for forwarding packet on sr network, device, and system

Publications (1)

Publication Number Publication Date
WO2021056945A1 true WO2021056945A1 (zh) 2021-04-01

Family

ID=75110553

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/073785 WO2021056945A1 (zh) 2019-09-27 2020-01-22 一种在sr网络中转发报文的方法、设备和系统

Country Status (8)

Country Link
US (1) US20220217081A1 (zh)
EP (2) EP4020909B1 (zh)
JP (1) JP7481436B2 (zh)
KR (1) KR20220052371A (zh)
CN (3) CN112583745A (zh)
BR (1) BR112022005853A2 (zh)
CA (1) CA3175941A1 (zh)
WO (1) WO2021056945A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113347092A (zh) * 2021-05-27 2021-09-03 大连理工大学 一种基于IPv6的SRv6数据处理方法
WO2023143585A1 (zh) * 2022-01-30 2023-08-03 华为技术有限公司 路由通告的方法、网络设备和系统
AU2021261819B2 (en) * 2020-04-24 2024-04-18 China Mobile Communication Co., Ltd Research Institute Data packet processing method and device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259239A (zh) 2020-02-10 2021-08-13 华为技术有限公司 一种在混合网络中转发报文的方法、设备和系统
CN114531386B (zh) * 2020-11-23 2023-05-09 中国移动通信有限公司研究院 报文转发的方法、装置、设备及可读存储介质
CN113242180B (zh) * 2021-07-12 2021-12-14 广东省新一代通信与网络创新研究院 报文转发方法、装置、设备、可读存储介质及程序产品
CN114285907B (zh) * 2021-12-03 2023-05-26 中国联合网络通信集团有限公司 数据传输方法、装置、电子设备及存储介质
WO2023216622A1 (zh) * 2022-05-11 2023-11-16 华为技术有限公司 报文处理方法、设备、系统及计算机可读存储介质
CN115499358B (zh) * 2022-09-14 2024-05-14 中国电信股份有限公司 SRv6-TE报文转发方法和转发设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105282028A (zh) * 2014-06-05 2016-01-27 中兴通讯股份有限公司 一种报文传输方法、节点及路径管理服务器
CN105471737A (zh) * 2014-09-05 2016-04-06 华为技术有限公司 一种标签栈的压缩方法及装置、标签栈的解压缩方法及装置
CN108429685A (zh) * 2018-04-28 2018-08-21 电子科技大学 一种基于分段路由技术的服务功能链寻路方法
US20180375766A1 (en) * 2017-06-27 2018-12-27 Cisco Technology, Inc. Enhanced Segment Routing Processing of Packets
CN109981457A (zh) * 2017-12-27 2019-07-05 华为技术有限公司 一种报文处理的方法、网络节点和系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5699939B2 (ja) 2010-01-08 2015-04-15 日本電気株式会社 通信システム、転送ノード、経路管理サーバおよび通信方法
KR20140034951A (ko) * 2012-08-28 2014-03-21 한국전자통신연구원 무선 메쉬 네트워크에서 컨텍스트 기반의 IPv6 헤더 압축을 위한 컨텍스트 테이블 관리 방법
US9049233B2 (en) * 2012-10-05 2015-06-02 Cisco Technology, Inc. MPLS segment-routing
US9559954B2 (en) 2013-03-11 2017-01-31 Cisco Technology, Inc. Indexed segment ID
US9537718B2 (en) * 2013-03-15 2017-01-03 Cisco Technology, Inc. Segment routing over label distribution protocol
US9537769B2 (en) * 2013-03-15 2017-01-03 Cisco Technology, Inc. Opportunistic compression of routing segment identifier stacks
US9762488B2 (en) * 2014-03-06 2017-09-12 Cisco Technology, Inc. Segment routing extension headers
CN106411738A (zh) * 2015-07-30 2017-02-15 中兴通讯股份有限公司 Ipv6报文封装的处理方法和装置
CN109218189B (zh) * 2017-07-03 2022-04-29 中兴通讯股份有限公司 跨域的路径的标识信息的确定方法、装置及存储介质
US10404600B2 (en) * 2017-09-12 2019-09-03 Google Llc Mechanism and apparatus for path protection when using compressed segment routing label stacks
US11245617B1 (en) * 2018-12-28 2022-02-08 Juniper Networks, Inc. Compressed routing header
US11412071B2 (en) * 2019-05-13 2022-08-09 Juniper Networks, Inc. Compressed routing header information for networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105282028A (zh) * 2014-06-05 2016-01-27 中兴通讯股份有限公司 一种报文传输方法、节点及路径管理服务器
CN105471737A (zh) * 2014-09-05 2016-04-06 华为技术有限公司 一种标签栈的压缩方法及装置、标签栈的解压缩方法及装置
US20180375766A1 (en) * 2017-06-27 2018-12-27 Cisco Technology, Inc. Enhanced Segment Routing Processing of Packets
CN109981457A (zh) * 2017-12-27 2019-07-05 华为技术有限公司 一种报文处理的方法、网络节点和系统
CN108429685A (zh) * 2018-04-28 2018-08-21 电子科技大学 一种基于分段路由技术的服务功能链寻路方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
R BONICA , JUNIPER NETWORKS , N SO , F XU , RELIANCE JIO , G CHEN BAIDU , Y ZHU , G YANG , CHINA TELECOM , Y ZHOU , BYTEDANCE: "The IPv6 Compressed Routing Header (CRH) draft-bonica-6man-comp-rtg-hdr-03", INTERNET-DRAFT, 23 March 2019 (2019-03-23), pages 1 - 16, XP015132053, DOI: 20200517143412A *
Z LI , C LI , S PENG , Z WANG , B LIU , HUAWEI TECHNOLOGIES: "Compressed SRv6 Network Programming draft-li-spring-compressed-srv6-np-00", INTERNET DRAFT, 22 July 2019 (2019-07-22), pages 1 - 15, XP015134411 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2021261819B2 (en) * 2020-04-24 2024-04-18 China Mobile Communication Co., Ltd Research Institute Data packet processing method and device
CN113347092A (zh) * 2021-05-27 2021-09-03 大连理工大学 一种基于IPv6的SRv6数据处理方法
WO2023143585A1 (zh) * 2022-01-30 2023-08-03 华为技术有限公司 路由通告的方法、网络设备和系统

Also Published As

Publication number Publication date
JP7481436B2 (ja) 2024-05-10
EP4020909A1 (en) 2022-06-29
EP4373048A2 (en) 2024-05-22
EP4020909A4 (en) 2022-10-12
CA3175941A1 (en) 2021-04-01
CN114365464B (zh) 2023-03-24
EP4020909B1 (en) 2024-01-03
EP4373048A3 (en) 2024-07-17
KR20220052371A (ko) 2022-04-27
US20220217081A1 (en) 2022-07-07
CN116319524A (zh) 2023-06-23
CN112583745A (zh) 2021-03-30
BR112022005853A2 (pt) 2022-06-21
JP2022550343A (ja) 2022-12-01
CN114365464A (zh) 2022-04-15

Similar Documents

Publication Publication Date Title
WO2021056945A1 (zh) 一种在sr网络中转发报文的方法、设备和系统
WO2020164473A1 (zh) 一种路径计算方法、装置及设备
WO2020224503A1 (zh) SRv6网络生成段列表、报文转发的方法、设备和系统
US20240250906A1 (en) Method for Forwarding Packet in Hybrid Network, Device, and System
CN112787927B (zh) 一种分段路由报文转发方法、装置及预设逻辑电路单元
EP3944569A1 (en) Data processing method based on srv6, and related network device
EP3742685B1 (en) Packet processing method and device
WO2021036328A1 (zh) 一种在sr网络中转发报文的方法、设备和系统
WO2021043232A1 (zh) 主机网络性能需求可编程化的方法、设备和系统
CN112448888A (zh) 一种在sr网络中转发报文的方法、设备和系统
WO2021227746A1 (zh) 发送和转发报文的方法、头节点、转发节点、存储介质
WO2021088629A1 (zh) DetNet数据包处理方法及装置
CN113141338B (zh) 一种消息生成方法、处理方法及装置
WO2023088226A1 (zh) 转发报文的方法以及相关设备
CN114978986A (zh) 一种数据传输方法、装置及存储介质
CN111147379A (zh) 数据传输方法、系统和相关设备
CN112019417B (zh) 传输报文的方法与设备
CN113765794B (zh) 数据发送的方法、装置、电子设备及介质
CN113055268A (zh) 隧道流量负载均衡的方法、装置、设备及介质
WO2023216622A1 (zh) 报文处理方法、设备、系统及计算机可读存储介质
CN116827860A (zh) 一种SRv6报文传输方法、装置、节点以及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20867794

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022519200

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 122023001093

Country of ref document: BR

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20227010885

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020867794

Country of ref document: EP

Effective date: 20220325

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112022005853

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 112022005853

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20220328

ENP Entry into the national phase

Ref document number: 3175941

Country of ref document: CA