Background
The goal of Deterministic network (DIP) technology is to provide Deterministic delay and jitter guarantees based on the existing Internet Protocol (IP) forwarding mechanism, and its technical core is a periodic scheduling mechanism. A stable period mapping relation is maintained between any two adjacent nodes on a data forwarding path in the deterministic network, and the period mapping relation indicates the mapping relation between the period sequence number sent by the data packet from the upstream node and the period sequence number sent again by the downstream node. For example, as shown in FIG. 1, each device periodically cycles its own time axis, which may range from 0-3. The upstream node starts to send a data packet at a cycle numbered x (for example, x equals 1), after transmission through the data forwarding path, the time when the first bit of the data packet reaches the downstream node is a cycle numbered y (for example, y equals 3) of the downstream node, and the time when the last bit of the data packet reaches the downstream node at the latest is a cycle numbered y +2 (for example, y equals 1) of the downstream node, so that the time when the downstream node sends the data packet out again is the next cycle after receiving all the data packets, and the cycle numbered y +3 (for example, y equals 2). This establishes a periodic mapping of x → y +3 between the upstream and downstream nodes. Thus, DIP can implement periodic scheduling through a periodic mapping relationship.
At present, a Segment Routing (SR) network performs data forwarding based on Segment Identifiers (SIDs), but the SIDs can only be used for marking specific network nodes or neighboring nodes, so that the SR network cannot implement periodic scheduling such as the above-mentioned DIP, and further cannot provide deterministic delay and jitter guarantees.
Disclosure of Invention
The application provides a data forwarding method and a data forwarding device, so as to realize periodic scheduling and further provide deterministic time delay and jitter guarantee.
In a first aspect, the present application provides a data forwarding method, including:
receiving a first data packet, wherein the first data packet comprises at least one first label, and each first label is respectively used for identifying a downstream node on a data forwarding path; determining the number of a sending queue of the first data packet; acquiring a second label according to the number of the sending queue, wherein the second label corresponds to the number of the sending queue and is used for identifying a first downstream node, and the first downstream node is any downstream node on the data forwarding path; adjusting the first label used for identifying the first downstream node in the first data packet to be the second label to obtain a second data packet; and sending the second data packet.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
In a possible implementation manner, the obtaining the second tag according to the number of the transmission queue includes: and calculating to obtain the second label by taking the number of the sending queue as an offset based on the first label for identifying the first downstream node.
In a possible implementation manner, the obtaining the second tag according to the number of the transmission queue includes: and inquiring a preset corresponding relation list according to the number of the sending queue to determine the second label, wherein the corresponding relation list comprises the number of the sending queue and the corresponding relation of the label for identifying the first downstream node.
In a possible implementation manner, the determining a number of a transmission queue of the first data packet includes: and querying a preset queue mapping relation according to a first number to determine the number of the transmission queue of the first data packet, wherein the first number is the number of the transmission queue of the first data packet on an adjacent upstream node, and the queue mapping relation comprises the mapping relation between the number of the transmission queue of the first data packet on the adjacent upstream node and the number of the transmission queue.
In a possible implementation manner, the total number of the sending queues is N, N node tags are used for identifying the first downstream node, the N node tags correspond to the numbers of the N sending queues, and N is an integer greater than 1.
In a possible implementation manner, the total number of the sending queues is N, N neighboring node tags are used to identify the first downstream node, the N neighboring node tags correspond to the numbers of the N sending queues, and N is an integer greater than 1.
In a second aspect, the present application provides a data forwarding method, including:
receiving a third data packet; adding at least one first label in the third data packet according to the sequence of the downstream node on the data forwarding path, wherein each first label is used for identifying one downstream node on the data forwarding path; determining the number of a sending queue of the third data packet; acquiring a second label according to the number of the sending queue, wherein the second label corresponds to the number of the sending queue and is used for identifying a first downstream node, and the first downstream node is any downstream node on the data forwarding path; adjusting the first label used for identifying the first downstream node in the third data packet to the second label to obtain a fourth data packet; and transmitting the fourth data packet.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
In a third aspect, the present application provides a data forwarding method, including:
receiving a third data packet; determining the number of a sending queue of the third data packet; acquiring a second label according to the sequence of downstream nodes on a data forwarding path and the number of the sending queue, wherein the second label corresponds to the number of the sending queue and is used for identifying a first downstream node, and the first downstream node is any downstream node on the data forwarding path; adding the second label to the third data packet to obtain a fourth data packet; and transmitting the fourth data packet.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
In a possible implementation manner, after the adding the second tag to the third data packet, the method further includes: and adding at least one first label in the third data packet according to the sequence of the downstream nodes on the data forwarding path, wherein each first label is respectively used for identifying one downstream node on the data forwarding path except the first downstream node.
In a fourth aspect, the present application provides a data forwarding method, including:
receiving a data packet; analyzing the data packet to obtain a second label, wherein the second label corresponds to a first number, and the first number is the number of a sending queue of the data packet on an adjacent upstream node; determining the first number according to the second label; and determining the number of the sending queue of the data packet according to the first number.
The label carried in the data packet is expanded, the label can be used for identifying a downstream node on a data forwarding path on one hand, and can be used for representing the number of a sending queue of the data packet on an adjacent upstream node on the other hand, and the node determines the number of the sending queue of the data packet through the label to realize periodic scheduling, so that deterministic delay and jitter guarantee are provided.
In a possible implementation manner, the determining, according to the first number, a number of a transmission queue of the data packet includes: and querying a preset queue mapping relation according to the first number to determine the number of the sending queue of the data packet, wherein the queue mapping relation comprises the mapping relation between the number of the sending queue of the data packet on the adjacent upstream node and the number of the sending queue of the data packet.
In one possible implementation manner, the determining the first number according to the second tag includes: and calculating to obtain the first number by taking the difference value between the second label and the set label as an offset based on the second label.
In one possible implementation manner, the determining the first number according to the second tag includes: and querying a preset corresponding relation list according to the second label to determine the first number, wherein the corresponding relation list comprises the number of the sending queue of the adjacent upstream node and the corresponding relation of the label.
In a fifth aspect, the present application provides a data forwarding apparatus having a function of implementing a behavior of the data forwarding apparatus in the method according to any one of the first to third aspects. The functions can be realized by hardware, and the functions can also be realized by executing corresponding software by hardware. The hardware or software includes one or more modules corresponding to the above-described functions.
In a sixth aspect, the present application provides a data forwarding apparatus having a function of implementing the behavior of the data forwarding apparatus in the method of any one of the above fourth aspects. The functions can be realized by hardware, and the functions can also be realized by executing corresponding software by hardware. The hardware or software includes one or more modules corresponding to the above-described functions.
In a seventh aspect, the present application provides a network node, comprising:
one or more processors;
a memory for storing one or more programs;
when executed by the one or more processors, cause the one or more processors to implement the method of any one of the first to fourth aspects as described above.
In an eighth aspect, the present application provides a computer readable storage medium comprising a computer program which, when executed on a computer, causes the computer to perform the method of any of the first to fourth aspects above.
In a ninth aspect, the present application provides a computer program for performing the method of any one of the first to fourth aspects above when the computer program is executed by a computer.
Detailed Description
The technical solutions in the present application will be described below with reference to the drawings in the present application, and it should be apparent that the described embodiments are some, but not all, embodiments in the present application. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
The terms "first," "second," and the like in the description examples and claims of this application and in the drawings are used for descriptive purposes only and are not to be construed as indicating or implying relative importance, nor order. Furthermore, the terms "comprises" and "comprising," as well as any variations thereof, are intended to cover a non-exclusive inclusion, such as a list of steps or elements. A method, system, article, or apparatus is not necessarily limited to those steps or elements explicitly listed, but may include other steps or elements not explicitly listed or inherent to such process, system, article, or apparatus.
It should be understood that in the present application, "at least one" means one or more, "a plurality" means two or more. "and/or" for describing an association relationship of associated objects, indicating that there may be three relationships, e.g., "a and/or B" may indicate: only A, only B and both A and B are present, wherein A and B may be singular or plural. The character "/" generally indicates that the former and latter associated objects are in an "or" relationship. "at least one of the following" or similar expressions refer to any combination of these items, including any combination of single item(s) or plural items. For example, at least one (one) of a, b, or c, may represent: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", wherein a, b, c may be single or plural.
For example, as shown in fig. 1, a stable cycle mapping relationship is maintained between any two adjacent nodes on the data forwarding path in the DIP, and the cycle mapping relationship indicates a mapping relationship between a cycle number of a data packet sent from an upstream node and a cycle number sent again from a downstream node. Each node periodically numbers its own time axis in cycles, which may range from 0-3, for example. The upstream node starts to send a data packet at a cycle numbered x (for example, x equals 1), after transmission through the data forwarding path, the time when the first bit of the data packet reaches the downstream node is a cycle numbered y (for example, y equals 3) of the downstream node, and the time when the last bit of the data packet reaches the downstream node at the latest is a cycle numbered y +2 (for example, y equals 1) of the downstream node, so that the time when the downstream node sends the data packet out again is the next cycle after receiving all the data packets, and the cycle numbered y +3 (for example, y equals 2). Thus, a cycle mapping relation of x → y +3 is established between the upstream node and the downstream node, based on the cycle mapping relation, the upstream node only needs to carry the number of the sending cycle in the data packet, and the downstream node analyzes the cycle number carried in the data packet and determines the number of the sending cycle of the data packet in the local according to the cycle number and the cycle mapping relation, so that the DIP can realize cycle scheduling.
It should be noted that, a transmission queue is created for each period according to the periodic division performed by the node on its own time axis, and the node lists the data packets transmitted in a certain period in the transmission queue corresponding to the period. For example, as described above, the numbers of cycles of the upstream node and the downstream node are 0 to 3, so that the upstream node creates four transmission queues, the numbers of which correspond to the numbers of cycles, 0 to 3 respectively, and the downstream node also creates four transmission queues, the numbers of which correspond to the numbers of cycles, 0 to 3 respectively. In the following description of the embodiments, the number of the transmission queue is used, which is equivalent to the number of the transmission cycle.
The SR network is a data forwarding network for data forwarding based on SID, which can be used to mark a specific network node or a neighboring node, but the current SR network cannot implement periodic scheduling. The application provides a data forwarding method to realize periodic scheduling in an SR network.
Fig. 2 is a flowchart of a first embodiment of a data forwarding method in the present application, and as shown in fig. 2, an execution subject in this embodiment may be a node on a data forwarding path. The data forwarding method can comprise the following steps:
201. a first data packet is received.
After receiving the first data packet, the node parses the first data packet to obtain information carried in a packet header of the first data packet, where the information may include at least one first tag, and each first tag is used to identify a downstream node on the data forwarding path, and may also include a number of a transmission queue of the first data packet on an adjacent upstream node.
As nodes on the data forwarding path, its upstream node is the source of the data packet, and its downstream node is the destination of the data packet. Illustratively, as shown in fig. 3, the data forwarding network has eight nodes 1-8 in total, and based on the data forwarding path 1 → 3 → 4 → 6 → 5 → 7 → 8, the downstream node of node 1 includes 3, 4, 6, 5, 7 and 8, and the adjacent downstream node is 3; the downstream nodes of the node 3 comprise 4, 6, 5, 7 and 8, the adjacent upstream node is 1, and the adjacent downstream node is 4; the downstream nodes of the node 4 comprise 6, 5, 7 and 8, the adjacent upstream node is 3, and the adjacent downstream node is 6; the downstream nodes of the node 6 comprise 5, 7 and 8, the adjacent upstream node is 4, and the adjacent downstream node is 5; the downstream nodes of the node 5 comprise 7 and 8, the adjacent upstream node is 6, and the adjacent downstream node is 7; the adjacent downstream node of the node 7 is 8, and the adjacent upstream node is 5; the adjacent upstream node of node 8 is 7. If the node has a plurality of downstream nodes, the first label in the first data packet is also a plurality of, and each first label is used for identifying one downstream node, and if the node has only one downstream node, the first label in the first data packet is also only one, and the first label is used for identifying the unique downstream node. For example, node 3 has five downstream nodes, and therefore the first packet received by node 3 carries five first labels, which are used to identify nodes 4, 6, 5, 7 and 8, respectively.
According to the total number of the sending queues on the node (N, which is an integer greater than 1), the node can be identified by N node tags, and the N node tags correspond to the numbers of the N sending queues. Or according to the total number (N) of the sending queues, the node can also be identified by N adjacent node labels, and the N adjacent node labels correspond to the numbers of the N sending queues. Illustratively, a node has four sending queues, and four node tags are created for the node, and correspond to the numbers of the four sending queues, for example, the four node tags are 1001, 1002, 1003 and 1004, and the numbers of the sending queues are 0, 1, 2 and 3, where the node tag 1001 corresponds to the number 0, the node tag 1002 corresponds to the number 1, the node tag 1003 corresponds to the number 2, and the node tag 1004 corresponds to the number 3. The first label may be any one of a plurality of node labels of the downstream node, or may be a base label (for example, 1001) among the plurality of node labels.
202. The number of the transmit queue for the first packet is determined.
The node may determine a number of a transmission queue of the first packet according to a preset queue mapping relationship queried by the first number, where the first number is a number of a transmission queue of the first packet on an adjacent upstream node. As described above, a stable periodic (queue) mapping relationship is maintained between any two adjacent nodes on the data forwarding path in the DIP, where the queue mapping relationship includes a mapping relationship between the number of the transmission queue of the first data packet on the adjacent upstream node and the number of the transmission queue. For example, the queue mapping relationship is x → y +3, where x is the number of the transmission queue for transmitting the first packet by the adjacent upstream node, y is the number of the period (queue) for receiving the first packet by the node, and the number of the transmission queue for transmitting the first packet at the adjacent upstream node is x (e.g., 1), so that the node can determine that the number of the transmission queue is y +3 (e.g., 2).
203. And acquiring a second label according to the number of the sending queue.
In the present application, the second label corresponds to a number of the transmission queue and is used to identify the first downstream node, and the first downstream node is any downstream node on the data forwarding path. For example, in the above example, the four node tags of the first downstream node are 1001, 1002, 1003 and 1004, respectively, and the numbers of the transmission queues are 0, 1, 2 and 3, respectively, where node tag 1001 corresponds to number 0, node tag 1002 corresponds to number 1, node tag 1003 corresponds to number 2, and node tag 1004 corresponds to number 3. The second label has two roles, one is to identify a node on the data forwarding path, and the other is a number indicating a transmission queue. For example, if the number of the transmission queue is determined to be 1 in step 202, the second tag is 1002.
It should be noted that the first downstream node identified by the second label is any downstream node on the data forwarding path, and the first downstream node may be an adjacent downstream node in general, or may be another node except the adjacent downstream node in the downstream node in a special case. For example, for node 3, the first downstream node may be 4 (adjacent downstream node), or any one of 6, 5, 7, and 8 (non-adjacent downstream node).
In the application, the node may calculate, based on the first label for identifying the first downstream node, the second label by using the number of the transmission queue as the offset. For example, node 3, the first downstream node is node 4, the node labels of node 4 are 1001, 1002, 1003 and 1004, respectively, and the first label is 1001. The number of the transmission queue is 1, and a second label of 1002(1001+1) can be obtained; the transmit queue number is 3, and a second tag of 1004(1001+3) is obtained.
In the application, the node may also query a preset correspondence list according to the number of the transmission queue to determine the second tag, where the correspondence list includes the number of the transmission queue and a correspondence of the tag used for identifying the first downstream node. For example, node 3, the first downstream node is node 4, the node labels of node 4 are 1001, 1002, 1003 and 1004, and the numbers of the transmission queues are 0, 1, 2 and 3, respectively, where node label 1001 corresponds to number 0, node label 1002 corresponds to number 1, node label 1003 corresponds to number 2, and node label 1004 corresponds to number 3. If the number of the sending queue is 1, a second label of 1002 can be obtained; if the number of the transmission queue is 3, the second tag is 1004.
204. And adjusting a first label used for identifying the first downstream node in the first data packet into a second label to obtain a second data packet.
In the application, the node usually only adjusts the label corresponding to the first downstream node to obtain the second data packet. For example, the node 3 receives a first data packet carrying five first labels, and the node 3 only needs to adjust the first label (1001) for identifying the node 4 to the second label (1002).
205. And sending the second data packet.
The node sends the second data packet to an adjacent downstream node.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
The execution bodies of the embodiment shown in fig. 2 mainly refer to intermediate network nodes, e.g. nodes 3-7, on the data forwarding path. And the data forwarding method shown in fig. 4 may be adopted for the head node 1 on the data forwarding path.
Fig. 4 is a flowchart of a second embodiment of the data forwarding method of the present application, and as shown in fig. 4, an execution subject of the present embodiment may be a node on a data forwarding path. The data forwarding method can comprise the following steps:
401. a third data packet is received.
The third packet is a packet from a host (e.g., a network node, a personal computer, a client, etc.).
402. And adding at least one first label in the third data packet according to the sequence of the downstream nodes on the data forwarding path.
And after receiving a third data packet from the host, the node labels the third data packet according to the sequence of the downstream nodes on the data forwarding path. Illustratively, as shown in fig. 3, the data forwarding path 1 → 3 → 4 → 6 → 5 → 7 → 8, the node 1 receives the third packet, and tags the third packet according to 3 → 4 → 6 → 5 → 7 → 8, for example, a specified field in the packet header of the third packet, and fills any one of the node tags of the nodes 3, 4, 6, 5, 7 and 8, or a specified base tag in the node tags in turn.
403. The number of the transmission queue of the third packet is determined.
In the application, the node determines the number of the transmission queue of the third data packet, and may determine in a manner of using a plurality of transmission queues in turn, for example, sequentially allocating the transmission queues to the received data packets according to the order of 0 to 3. The congestion level of the transmit queue may also be determined, for example, in four transmit queues, the transmit queue with the minimum amount of data to be transmitted is preferentially allocated to the received data packet. The method for determining the number of the transmission queue of the third data packet is not specifically limited in the present application.
404. And acquiring a second label according to the number of the sending queue.
The second label corresponds to the number of the transmission queue and is used for identifying a first downstream node, and the first downstream node is any downstream node on the data forwarding path. Step 404 of this embodiment is similar to the implementation principle of step 203 of the above embodiment, and is not described here again.
405. And adjusting a first label used for identifying the first downstream node in the third data packet into a second label to obtain a fourth data packet.
Step 405 of this embodiment is similar to the implementation principle of step 204 of the above embodiment, and is not described here again.
406. And transmitting the fourth data packet.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
Unlike the embodiment shown in fig. 4, the data forwarding method shown in fig. 5 may also be adopted for the head node 1 on the data forwarding path.
Fig. 5 is a flowchart of a third embodiment of the data forwarding method of the present application, and as shown in fig. 5, an execution main body of the present embodiment may be a node on a data forwarding path. The data forwarding method can comprise the following steps:
501. a third data packet is received.
Step 501 of this embodiment is similar to the implementation principle of step 401 of the above embodiment, and is not described here again.
502. The number of the transmission queue of the third packet is determined.
Step 502 of this embodiment is similar to the implementation principle of step 403 of the above embodiment, and is not described herein again.
503. And acquiring a second label according to the sequence of the downstream nodes on the data forwarding path and the number of the sending queue.
The second label corresponds to the number of the transmission queue and is used for identifying a first downstream node, and the first downstream node is any downstream node on the data forwarding path. In this embodiment, after determining the number of the transmission queue, the node directly obtains the second tag. The difference from the embodiment shown in fig. 4 is that the node in the embodiment of fig. 4 adds a first label to a third packet according to the sequence of the downstream nodes on the data forwarding path, where the first label does not have the function of indicating the number of the transmission queue, and then after determining the number of the transmission queue, adjusts the first label for identifying the first downstream node to a second label, where the second label is used for indicating both the first downstream node and the number of the transmission queue. In this embodiment, the node first determines the number of the transmission queue, and then directly adds a second tag to the tag of the first downstream node according to the number of the transmission queue, where the second tag is used to represent both the first downstream node and the transmission queue.
In addition, the node may further add at least one first label in the third data packet according to the sequence of the downstream node on the data forwarding path, where each first label is used to identify one downstream node on the data forwarding path except the first downstream node. That is, in this embodiment, the node still needs to mark the first label on the downstream nodes except the first downstream node, and the downstream nodes only need to be marked at the node.
504. And adding a second label to the third data packet to obtain a fourth data packet.
Step 504 of this embodiment is similar to the implementation principle of step 204 of the above embodiment, and is not described here again.
505. And transmitting the fourth data packet.
The label carried in the data packet is expanded, and the label can be used for identifying a downstream node on a data forwarding path on one hand and representing the number of a sending queue of the data packet on the other hand, so that the downstream node determines the number of the sending queue through the label, the periodic scheduling is realized, and the deterministic delay and jitter guarantee is further provided.
The methods of the embodiments shown in fig. 2-5 are applicable in scenarios where nodes on the data forwarding path (e.g., nodes 1-7) are the data sender. While the data forwarding method shown in fig. 6 may be employed for a scenario in which nodes on the data forwarding path (e.g., nodes 3-8) are the data receivers.
Fig. 6 is a flowchart of a fourth embodiment of the data forwarding method of the present application, and as shown in fig. 6, an execution main body of the present embodiment may be a node on a data forwarding path. The data forwarding method can comprise the following steps:
601. a data packet is received.
The node receives the data packet sent by the adjacent upstream node.
602. And analyzing the data packet to obtain a second label.
After the data packet is processed by the adjacent upstream node, the packet header of the data packet carries a second label, where the second label has two functions, one is used to identify the first downstream node, for example, the node receiving the data packet in this embodiment, and the other is a number used to indicate a transmission queue of the data packet on the adjacent upstream node. Therefore, after receiving the data packet, the node first needs to parse the data packet to obtain the second tag.
603. A first number is determined from the second label.
The first number is the number of the transmission queue of the data packet on the adjacent upstream node. In contrast to step 203 in the embodiment shown in fig. 2, the node in this embodiment determines the number of the transmission queue of the data packet on the adjacent upstream node according to the second label.
In the application, the node may calculate the first number by using a difference between the second tag and the set tag as an offset based on the second tag. For example, node 4 receives a packet, and node 4 has node tags 1001, 1002, 1003, and 1004, respectively, and tag 1001 is set. The second label carried in the data packet is 1002, so the first number is 1 (1002-1001); the second tag carried in the data packet is 1004, so the first number 3 can be calculated (1004 and 1001).
In the application, the node may also determine the first number according to a preset correspondence list queried by the second tag, where the correspondence list includes a number of a transmission queue of an adjacent upstream node and a correspondence of the tag. For example, node 4 receives a packet, node tags of node 4 are 1001, 1002, 1003 and 1004, and numbers of transmission queues are 0, 1, 2 and 3, respectively, where node tag 1001 corresponds to number 0, node tag 1002 corresponds to number 1, node tag 1003 corresponds to number 2, and node tag 1004 corresponds to number 3. If the second tag carried in the data packet is 1002, the first number is 1; if the second tag carried in the data packet is 1004, the first number is 3.
604. And determining the number of the sending queue of the data packet according to the first number.
The node may determine the number of the transmission queue of the data packet according to a preset queue mapping relationship by querying the first number, where the first number is the number of the transmission queue of the data packet on the adjacent upstream node. As described above, a stable periodic (queue) mapping relationship is maintained between any two adjacent nodes on the data forwarding path in the DIP, and the queue mapping relationship includes a mapping relationship between the number of the transmission queue of the data packet on the adjacent upstream node and the number of the transmission queue. For example, the queue mapping relationship is x → y +3, where x is the number of the transmission queue for transmitting the data packet by the adjacent upstream node, y is the number of the period (queue) for receiving the data packet by the node, and the number of the transmission queue for the data packet at the adjacent upstream node is x (e.g., 1), so that the node can determine that the number of the transmission queue is y +3 (e.g., 2).
The label carried in the data packet is expanded, the label can be used for identifying a downstream node on a data forwarding path on one hand, and can be used for representing the number of a sending queue of the data packet on an adjacent upstream node on the other hand, and the node determines the number of the sending queue of the data packet through the label to realize periodic scheduling, so that deterministic delay and jitter guarantee are provided.
The technical solution of the method embodiment shown in fig. 2-6 is described in detail below using two specific embodiments.
The data forwarding method is adopted in the SR-MPLS network. Illustratively, the SR-MPLS network includes four nodes A, B, C and D, and the data forwarding path is a → B → C → D, where the node label of node a includes 2005 (set label), 2006 and 2007, which correspond to numbers 0 and 2 of the transmission queue respectively; the node labels of the node B include 1001 (set label), 1002, and 1003, which correspond to numbers 0, 1, and 2 of the transmission queue, respectively; the node labels of the node C include 6002 (set label), 6003, and 6004, which correspond to the numbers 0, 1, and 2 of the transmission queue, respectively; the node labels of node D include 5007 (set label), 5008, and 5009, which correspond to the numbers 0, 1, and 2 of the transmission queue, respectively. As shown in fig. 7, a data packet is forwarded from node a to node D, and passes through nodes B and C, a packet header of the data packet encapsulates a node label in the form of a label stack, and after receiving an SR data packet sent by a host, node a sequentially pushes labels 5007, 6002, and 1001 in the label stack to identify nodes D, C and B, respectively.
(1) Before the node a sends the data packet to the downstream node B, the number of the sending queue of the data packet is determined to be 1, so the tag 1001 at the top of the tag stack of the data packet is adjusted to 1002(1001+1), and then the data packet is sent to the node B.
(2) After receiving the data packet, the node B may calculate, according to the label 1002 at the uppermost layer of the label stack of the data packet, that the number of the transmission queue of the data packet on the node a is 1 (1002-.
(3) Before the node B sends the data packet to the downstream node C, the tag 6002 at the top layer of the tag stack of the data packet is adjusted to 6004(6002+2) according to the number 2 of the sending queue of the data packet, and then the data packet is sent to the node C.
(4) After the node C receives the data packet, the number of the transmission queue of the data packet on the node B is calculated to be 2 (6004-.
(5) Before the node C sends the packet to the downstream node D, the tag 5007 at the top of the tag stack of the packet is adjusted to 5007(5007+0) according to the number 0 of the sending queue of the packet (since the tag is not changed, the operation may not be performed), and then the packet is sent to the node D.
(6) After the node D receives the data packet, the number of the sending queue of the data packet on the node C is calculated to be 0(5007-5007) according to the label 5007 on the uppermost layer of the label stack of the data packet, and the number of the sending queue of the data packet is 1 by querying the preset queue mapping relationship.
Through the data packet forwarding process, the end-to-end deterministic time delay of data packet forwarding can be ensured.
The data forwarding method described above is employed in SRv6 networks. Illustratively, the SRv6 network includes four nodes A, B, C and D, the data forwarding path is A → B → C → D, wherein the node labels of node A include 2001::2005 (set label), 2001::2006 and 2001::2007, corresponding to the numbers 0 and 2 of the transmission queue, respectively; the node labels of node B include 2004::1001 (set label), 2004::1002, and 2004::1003, corresponding to the numbers 0, 1, and 2 of the transmission queue, respectively; the node labels of the node C comprise 2002::6002 (set label), 2002::6003 and 2002::6004, which correspond to the numbers 0, 1 and 2 of the sending queue respectively; the node labels of node D include 2009::5007 (set label), 2009::5008 and 2009::5009, corresponding to send queue numbers 0, 1 and 2, respectively. As shown in FIG. 8, the data packet is forwarded from node A to node D, nodes B and C are accessed, the header of the data packet is packaged with a node label in the form of a label stack, and after the data packet SRv6 sent by the host is received by node A, labels 2009::5007, 2002::6002 and 2004::1001 are sequentially pressed in the label stack to respectively identify nodes D, C and B.
(1) Before the node A sends the data packet to the downstream node B, the number of the sending queue of the data packet is determined to be 1, so that the label 2004: 1001 at the uppermost layer of the label stack of the data packet is adjusted to 2004: 1002(1001+1), and then the data packet is sent to the node B.
(2) After receiving the data packet, the node B may calculate that the number of the transmission queue of the data packet on the node A is 1 according to the tag 2004 in the uppermost layer of the tag stack of the data packet (1002-.
(3) Before the node B sends the data packet to the downstream node C, the top label 2002::6002 of the label stack of the data packet is adjusted to 2002::6004(6002+2) according to the number 2 of the sending queue of the data packet, and then the data packet is sent to the node C.
(4) After the node C receives the data packet, the number of the sending queue of the data packet on the node B is obtained by calculating 6004 according to the label 2002 in the uppermost layer of the label stack of the data packet (6004 and 6002), and the number of the sending queue of the data packet is obtained by inquiring the preset queue mapping relation and is 0.
(5) Before the node C sends the packet to the downstream node D, the top label 2009::5007 of the label stack of the packet is adjusted to 2009::5007(5007+0) according to the number 0 of the sending queue of the packet (since the label is not changed, the operation may not be performed), and then the packet is sent to the node D.
(6) After the node D receives the data packet, according to the label 2009 in the top layer of the label stack of the data packet, 5007 may calculate that the number of the sending queue of the data packet on the node C is 0(5007-5007), and query a preset queue mapping relationship to obtain that the number of the sending queue of the data packet is 1.
Through the data packet forwarding process, the end-to-end deterministic time delay of data packet forwarding can be ensured.
It should be noted that, in the foregoing embodiment, the labels of the nodes are all labels of the node, and the node may also be identified by the adjacent node label. For example, the data forwarding path is a → B → C → D, where the labels of the neighboring nodes of the neighboring downstream node B with respect to node a include 1001, 1002 and 1003, the labels of the neighboring nodes of the neighboring downstream node C with respect to node B include 6002, 6003 and 6004, and the labels of the neighboring nodes of the neighboring downstream node D with respect to node C include 5007, 5008 and 5009, so that the label of the label stack of the packet sent by node a to node B is one of 6002, 6003 and 6004, and the label of the label stack of the packet sent by node B to node C is one of 5007, 5008 and 5009.
Fig. 9 is a schematic structural diagram of a first embodiment of a data forwarding device in the present application, and as shown in fig. 9, the device in this embodiment may include: the system comprises a receiving module 901, a determining module 902, an obtaining module 903, an adjusting module 904 and a sending module 905, wherein the receiving module 901 is configured to receive a first data packet, where the first data packet includes at least one first label, and each first label is used to identify a downstream node on a data forwarding path; a determining module 902, configured to determine a number of a transmission queue of the first data packet; an obtaining module 903, configured to obtain a second label according to the number of the sending queue, where the second label corresponds to the number of the sending queue and is used to identify a first downstream node, and the first downstream node is any downstream node on the data forwarding path; an adjusting module 904, configured to adjust the first tag, which is used to identify the first downstream node, in the first data packet to the second tag, so as to obtain a second data packet; a sending module 905, configured to send the second data packet.
In a possible implementation manner, the obtaining module 903 is specifically configured to calculate, based on the first label used for identifying the first downstream node, the second label by using the number of the sending queue as an offset.
In a possible implementation manner, the obtaining module 903 is specifically configured to query a preset correspondence list according to the number of the sending queue to determine the second label, where the correspondence list includes a correspondence between the number of the sending queue and a label used for identifying the first downstream node.
In a possible implementation manner, the determining module 902 is specifically configured to determine, according to a first number, a number of a transmission queue of the first data packet by querying a preset queue mapping relationship, where the first number is a number of a transmission queue of the first data packet on an adjacent upstream node, and the queue mapping relationship includes a mapping relationship between the number of the transmission queue of the first data packet on the adjacent upstream node and the number of the transmission queue.
In a possible implementation manner, the total number of the sending queues is N, N node tags are used for identifying the first downstream node, the N node tags correspond to the numbers of the N sending queues, and N is an integer greater than 1.
In a possible implementation manner, the total number of the sending queues is N, N neighboring node tags are used to identify the first downstream node, the N neighboring node tags correspond to the numbers of the N sending queues, and N is an integer greater than 1.
The apparatus of this embodiment may be used to implement the technical solution of the method embodiment shown in fig. 2, and the implementation principle and the technical effect are similar, which are not described herein again.
Fig. 10 is a schematic structural diagram of a second embodiment of the data forwarding device in the present application, and as shown in fig. 10, the device in this embodiment may include: a receiving module 1001, an encapsulating module 1002, a determining module 1003, an obtaining module 1004, an adjusting module 1005 and a sending module 1006, wherein the receiving module 1001 is configured to receive a third data packet; an encapsulating module 1002, configured to add at least one first tag in the third data packet according to a sequence of a downstream node on a data forwarding path, where each first tag is used to identify a downstream node on the data forwarding path; a determining module 1003, configured to determine a number of a transmission queue of the third data packet; an obtaining module 1004, configured to obtain a second tag according to the number of the sending queue, where the second tag corresponds to the number of the sending queue and is used to identify a first downstream node, and the first downstream node is any downstream node on the data forwarding path; an adjusting module 1005, configured to adjust the first tag used for identifying the first downstream node in the third data packet to the second tag, so as to obtain a fourth data packet; a sending module 1006, configured to send the fourth data packet.
The apparatus of this embodiment may be used to implement the technical solution of the method embodiment shown in fig. 4, and the implementation principle and the technical effect are similar, which are not described herein again.
Fig. 11 is a schematic structural diagram of a third embodiment of a data forwarding device in the present application, and as shown in fig. 11, the device in this embodiment may include: the device comprises a receiving module 1101, a determining module 1102, an obtaining module 1103, an encapsulating module 1104 and a sending module 1105, wherein the receiving module 1101 is configured to receive a third data packet; a determining module 1102, configured to determine a number of a transmission queue of the third data packet; an obtaining module 1103, configured to obtain a second tag according to a sequence of downstream nodes on a data forwarding path and a number of the sending queue, where the second tag corresponds to the number of the sending queue and is used to identify a first downstream node, and the first downstream node is any downstream node on the data forwarding path; the encapsulation module 1104 is configured to add the second tag to the third data packet to obtain a fourth data packet; a sending module 1105, configured to send the fourth data packet.
In a possible implementation manner, the encapsulating module 1104 is further configured to add at least one first label to the third data packet according to a sequence of a downstream node on the data forwarding path, where each first label is respectively used to identify a downstream node on the data forwarding path except for the first downstream node.
The apparatus of this embodiment may be used to implement the technical solution of the method embodiment shown in fig. 5, and the implementation principle and the technical effect are similar, which are not described herein again.
Fig. 12 is a schematic structural diagram of a fourth data forwarding device according to the present application, and as shown in fig. 12, the device according to the present embodiment may include: the device comprises a receiving module 1201, an analyzing module 1202 and a determining module 1203, wherein the receiving module 1201 is used for receiving a data packet; an analyzing module 1202, configured to analyze the data packet to obtain a second tag, where the second tag corresponds to a first number, and the first number is a number of a sending queue of the data packet on an adjacent upstream node; a determining module 1203, configured to determine the first number according to the second tag; and determining the number of the sending queue of the data packet according to the first number.
In a possible implementation manner, the determining module 1203 is specifically configured to determine, according to the first number, a number of a transmission queue of the data packet by querying a preset queue mapping relationship, where the queue mapping relationship includes a mapping relationship between the number of the transmission queue of the data packet on the adjacent upstream node and the number of the transmission queue of the data packet.
In a possible implementation manner, the determining module 1203 is specifically configured to calculate, based on the second tag, the first number by using a difference between the second tag and a set tag as an offset.
In a possible implementation manner, the determining module 1203 is specifically configured to determine the first number according to a preset correspondence list queried by the second tag, where the correspondence list includes a number of a sending queue of an adjacent upstream node and a correspondence of the tag.
The apparatus of this embodiment may be used to implement the technical solution of the method embodiment shown in fig. 6, and the implementation principle and the technical effect are similar, which are not described herein again.
Fig. 13 is a schematic block diagram of a network node 1300 provided herein. As shown in fig. 13, network node 1300 includes a processor 1301 and a transceiving port 1302.
Optionally, the network node 1300 further comprises a memory 1303. The processor 1301, the transceiving port 1302 and the memory 1303 may communicate with each other through an internal connection path, and transmit a control signal and/or a data signal.
The memory 1303 is used for storing computer programs. The processor 1301 is configured to execute the computer program stored in the memory 1303, so as to implement the functions in the above-described apparatus embodiments (e.g., fig. 9-12).
Optionally, the memory 1303 may also be integrated into the processor 1301 or separate from the processor 1301.
Optionally, the network node 1300 may also include a power supply 1304 for providing power to various devices or circuits in the network node.
In addition, in order to make the functions of the network node more complete, the network node 1300 may further include one or more of an input unit 1305, a display unit 1306 (which may also be considered as an output unit).
The present application further provides a computer-readable storage medium having stored thereon a computer program, which, when executed by a computer, causes the computer to perform the steps and/or processes performed by the network node in any of the above-described method embodiments.
The present application further provides a computer program product comprising computer program code which, when run on a computer, causes the computer to perform the steps and/or processes performed by the network node in any of the above-described method embodiments.
In implementation, the steps of the above method embodiments may be performed by integrated logic circuits of hardware in a processor or instructions in the form of software. The processor may be a general purpose processor, a Digital Signal Processor (DSP), an application-specific integrated circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, or discrete hardware components. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like. The steps of the method disclosed in the embodiments of the present application may be directly implemented by a hardware encoding processor, or implemented by a combination of hardware and software modules in the encoding processor. The software module may be located in ram, flash memory, rom, prom, or eprom, registers, etc. storage media as is well known in the art. The storage medium is located in a memory, and a processor reads information in the memory and completes the steps of the method in combination with hardware of the processor.
The memory referred to in the various embodiments above may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory may be a read-only memory (ROM), a Programmable ROM (PROM), an Erasable PROM (EPROM), an electrically Erasable EPROM (EEPROM), or a flash memory. Volatile memory can be Random Access Memory (RAM), which acts as external cache memory. By way of example, but not limitation, many forms of RAM are available, such as Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), Synchronous Dynamic Random Access Memory (SDRAM), double data rate SDRAM, enhanced SDRAM, SLDRAM, Synchronous Link DRAM (SLDRAM), and direct rambus RAM (DR RAM). It should be noted that the memory of the systems and methods described herein is intended to comprise, without being limited to, these and any other suitable types of memory.
Those of ordinary skill in the art will appreciate that the various illustrative elements and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware or combinations of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the implementation. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
It is clear to those skilled in the art that, for convenience and brevity of description, the specific working processes of the above-described systems, apparatuses and units may refer to the corresponding processes in the foregoing method embodiments, and are not described herein again.
In the several embodiments provided in the present application, it should be understood that the disclosed system, apparatus and method may be implemented in other ways. For example, the above-described apparatus embodiments are merely illustrative, and for example, the division of the units is only one logical division, and other divisions may be realized in practice, for example, a plurality of units or components may be combined or integrated into another system, or some features may be omitted, or not executed. In addition, the shown or discussed mutual coupling or direct coupling or communication connection may be an indirect coupling or communication connection through some interfaces, devices or units, and may be in an electrical, mechanical or other form.
The units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of the embodiment.
In addition, functional units in the embodiments of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units are integrated into one unit.
The functions, if implemented in the form of software functional units and sold or used as a stand-alone product, may be stored in a computer readable storage medium. Based on such understanding, the technical solution of the present application or portions thereof that substantially contribute to the prior art may be embodied in the form of a software product stored in a storage medium and including instructions for causing a computer device (personal computer, server, network device, or the like) to execute all or part of the steps of the method according to the embodiments of the present application. And the aforementioned storage medium includes: various media capable of storing program codes, such as a usb disk, a removable hard disk, a read-only memory (ROM), a Random Access Memory (RAM), a magnetic disk, or an optical disk.
The above description is only for the specific embodiments of the present application, but the scope of the present application is not limited thereto, and any person skilled in the art can easily conceive of the changes or substitutions within the technical scope of the present application, and shall be covered by the scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims.