This disclosure relates to the field of network technologies, and in particular, to a QUIC packet transmission method and a related device.
Quick User Datagram Protocol Internet Connection (QUIC) is a transport layer protocol. The QUIC has advantages such as supporting processing of a large number of connections, high security, and low latency, and can better meet various requirements faced by a transport layer and an application layer today.
Currently, a QUIC packet is transmitted based on a User Datagram Protocol (UDP). In a process in which a network device transmits the QUIC packet in an Internet Protocol version 6 (IPv6) network, the QUIC packet includes an IPV6 basic header, an IPV6 extension header, a UDP header, a QUIC header, and a payload. The QUIC header is located between the UDP header and the payload.
When the foregoing method is used, an encapsulation format of the QUIC packet is excessively redundant, causing high overheads of transmitting the QUIC packet.
This disclosure provides a QUIC packet transmission method and a related device, to reduce overheads of transmitting a QUIC packet. Technical solutions are as follows.
According to a first aspect, a QUIC packet transmission method is provided. The method includes a first network device generates a QUIC packet, where the QUIC packet includes an IPV6 extension header and a QUIC header, and the QUIC header is a next header of the IPV6 extension header or the QUIC header is located inside the IPV6 extension header; and the first network device sends the QUIC packet.
According to the method provided in the first aspect, the QUIC header is set in a next header of the IPV6 extension header, or the QUIC header is set inside the IPV6 extension header, so that the QUIC packet carries the QUIC header without carrying a UDP header. Therefore, an encapsulation format of the QUIC packet is simplified, and overheads of transmitting the QUIC packet are reduced.
In some implementations, the QUIC header is a next header of the IPV6 extension header, and a value of a next header (NH) field in the IPV6 extension header indicates the QUIC header.
According to the foregoing implementation, in a process of parsing a packet, when reading a value indicating a QUIC from a next header field in an IPV6 extension header, a receive end may learn that a next packet header of the IPV6 extension header is a QUIC header, to read information in the QUIC header to process the packet. In this implementation, a packet processing procedure of the receive end complies with a packet processing procedure defined in an IPV6 standard. Therefore, compatibility is good, and the foregoing implementation can be implemented provided that a device supports the IPV6, and implementation complexity is low.
In some implementations, the IPV6 extension header includes a destination options header (DOH), a segment routing header (SRH), or a hop-by-hop options header (HBH).
In some implementations, the IPV6 extension header includes an option field, the option field includes an option type field and an option data field, a value of the option type field indicates the QUIC header, and the option data field includes the QUIC header.
According to the foregoing implementation, the QUIC header is used as a new option in the IPV6 extension header. In a process of parsing a packet, when reading a value indicating a QUIC from an option type field in an IPV6 extension header, the receive end may learn that an option data field after the option type field has a QUIC header, so that the packet is processed based on information in the QUIC header. This manner is compatible with an existing processing procedure of the IPV6 extension header, and implementation complexity is low.
In some implementations, the IPV6 extension header includes a DOH, an SRH, or an HBH.
In some implementations, the IPV6 extension header includes a first segment identifier (SID) and a second SID, the first SID identifies a start point device of a first QUIC connection, the second SID identifies an end point device of the first QUIC connection, and the first QUIC connection is used for transmitting the QUIC packet.
According to the foregoing implementation, a segment for QUIC-based transmission in a forwarding path is identified using the SID, to meet a requirement of QUIC-based packet transmission on any one or more segments.
In some implementations, a value of a function field in the first SID indicates to send the QUIC packet through the first QUIC connection, a value of an arguments field in the first SID indicates to add the QUIC header, a value of a function field in the second SID indicates to receive the QUIC packet through the first QUIC connection, and a value of an arguments field in the second SID indicates to remove the QUIC header.
In some implementations, a value of a function field in the first SID indicates to send the QUIC packet through the first QUIC connection and add the QUIC header, and a value of a function field in the second SID indicates to receive the QUIC packet through the first QUIC connection and remove the QUIC header.
In some implementations, the IPV6 extension header includes a DOH, an SRH, or an HBH, the IPV6 extension header includes an option field, the option field includes an option data field, and the option data field includes the QUIC header, the first SID, and the second SID; or
In some implementations, the IPV6 extension header includes a first SID, the first SID identifies an endpoint device of a first QUIC connection, the first network device is an endpoint device other than the endpoint device in the first QUIC connection, and the first QUIC connection is used for transmitting the QUIC packet.
In some implementations, the IPV6 extension header further includes a third SID and a fourth SID, the third SID identifies a start point device of a second QUIC connection, the fourth SID identifies an end point device of the second QUIC connection, and the second QUIC connection is a QUIC connection after the first QUIC connection in a forwarding path of the QUIC packet.
In some implementations, that the first network device generates a QUIC packet includes the first network device receives an IPV6 packet, where the IPV6 packet includes the IPV6 extension header; and the first network device adds the QUIC header to the IPV6 packet to obtain the QUIC packet.
Correspondingly, that the first network device sends the QUIC packet includes the first network device sends the QUIC packet through the first QUIC connection.
In some implementations, that the first network device generates a QUIC packet includes the first network device receives a data packet from a user equipment; and the first network device adds the IPV6 extension header and the QUIC header to the data packet to obtain the QUIC packet, where a payload field of the QUIC packet includes the data packet.
In some implementations, that the first network device generates a QUIC packet includes: The first network device generates the QUIC packet based on service data generated by the first network device, where a payload field of the QUIC packet includes the service data.
In some implementations, the QUIC packet does not include a UDP internet connection header.
According to a second aspect, a network device is provided. The network device has a function of implementing any one of the first aspect or the optional implementations of the first aspect. The network device includes at least one unit, and the at least one unit is configured to implement the method provided in any one of the first aspect or the optional implementations of the first aspect.
In some implementations, the unit in the network device is implemented through software, and the unit in the network device is a program module. In some other implementations, the unit in the network device is implemented through hardware or firmware. For example details of the network device provided in the second aspect, refer to any one of the first aspect or the optional implementations of the first aspect. Details are not described herein again.
According to a third aspect, a network device is provided. The network device includes a processor and a network interface. The processor is configured to execute instructions, to enable the network device to perform the method provided in any one of the first aspect or the optional implementations of the first aspect. The network interface is configured to receive or send a QUIC packet. For specific details of the network device provided in the third aspect, refer to any one of the first aspect or the optional implementations of the first aspect. Details are not described herein again.
According to a fourth aspect, a computer-readable storage medium is provided. The storage medium stores at least one instruction. When the instruction is run on a computer, the computer is enabled to perform the method provided in any one of the first aspect or the optional implementations of the first aspect.
According to a fifth aspect, a computer program product is provided. The computer program product includes one or more computer program instructions. When the computer program instructions are loaded and run by a computer, the computer is enabled to perform the method provided in any one of the first aspect or the optional implementations of the first aspect.
According to a sixth aspect, a chip is provided. The chip includes a memory and a processor. The memory is configured to store computer instructions. The processor is configured to invoke the computer instructions from the memory and run the computer instructions, to perform the method according to any one of the first aspect or the possible implementations of the first aspect.
To make the objectives, technical solutions, and advantages of this disclosure clearer, the following further describes implementations of this disclosure with reference to the accompanying drawings.
In a scenario in which a QUIC packet is transmitted in an IPV6 network in other technologies, in a sequence from a packet header to a packet tail or from an outer layer to an inner layer, in the QUIC packet, an IPV6 header is first, a UDP header is followed, a QUIC header is followed, and a payload is followed. In conclusion, in other technologies, the QUIC header is set after the UDP header.
However, in an IPV6 network transmission scenario, encapsulation of the QUIC packet is excessively redundant due to the existence of the UDP header, causing high overheads of transmitting the QUIC packet.
In an example, in the IPV6 network transmission scenario, a packet carries an IPV6 header. The IPV6 header includes at least an IPV6 basic header, and optionally, the IPV6 header further includes one or more IPV6 extension headers. The IPV6 header shoulders some functions originally shouldered by the UDP header. For example, a port number in the UDP header is used for shouldering functions of load balancing and identifying an upper-layer application. However, a flow label in the IPV6 basic header can also implement the load balancing, and NH fields in the IPV6 extension header and the IPV6 basic header can also implement the function of identifying the upper-layer application. Therefore, the IPV6 header can replace the UDP header to some extent, and the UDP header is of little value and causes packet encapsulation redundancy.
In view of this, in some embodiments of this disclosure, a simplified packet encapsulation format is provided for a scenario in which a QUIC packet is transmitted in an IPV6 network. In the packet encapsulation format in embodiments of this disclosure, a QUIC header is set between an IPV6 basic header and a payload. For example, the QUIC header is set at any position in an IPV6 extension header. For example, the QUIC header is set inside any existing IPV6 extension header; or the QUIC header is used as an independent IPv6 extension header and inserted into any position of an existing IPV6 extension header. According to this embodiment, the QUIC packet carries the QUIC header without carrying a UDP header, resolving a problem of QUIC packet encapsulation redundancy in the IPV6 network, and reducing overheads of transmitting the QUIC packet.
The following describes application scenarios of embodiments of this disclosure by using examples.
Embodiments of this disclosure are applied to a scenario in which two devices transmit the QUIC packet in the IPV6 network. For example, the two devices first establish a connection based on a QUIC protocol, and then implement the method provided in embodiments of this disclosure through the connection, to transmit the QUIC packet.
A product form of endpoint device of the QUIC connection has a plurality of implementations. For example, the endpoint device of the QUIC connection is a network side device, such as a router, a switch, or a firewall; or the endpoint device of the QUIC connection is a user side device, such as a personal computer, a notebook computer, a mobile phone, or another terminal. For another example, the endpoint device of the QUIC connection is a service side device, such as a server or a storage device.
In the following embodiments of this disclosure, a scenario in which two network devices transmit a QUIC packet is used as an example for description. For distinguishing descriptions, the two network devices are respectively referred to as a “first network device” and a “second network device”. As shown in
In embodiments of this disclosure, an example in which the first network device 11 sends the QUIC packet to the second network device 12 is used for description subsequently. The first network device 11 is a start point device of the QUIC connection. The first network device 11 is a transmit end of the QUIC packet. The second network device 12 is a receive end of the QUIC packet. The second network device 12 is an end point device of the QUIC connection. The first network device 11 is, for example, configured to: add a QUIC header, encrypt a payload, and send a packet through the QUIC connection. The second network device 12 is, for example, configured to: remove a QUIC header, decrypt a payload, and receive a packet through the QUIC connection.
This embodiment of this disclosure is applicable to a scenario in which a QUIC client transmits a packet to a QUIC server. In this scenario, the first network device 11 is the QUIC client, and the second network device 12 is the QUIC server. This embodiment of this disclosure is also applicable to a scenario in which a QUIC server transmits a packet to a QUIC client. In this scenario, the first network device 11 is the QUIC server, and the second network device 12 is the QUIC client.
The endpoint device of the QUIC connection is deployed in the IPV6 network. The following uses four possible deployment locations as an example for description.
Deployment location 1: Two endpoint devices of the QUIC connection are both deployed at an edge of the IPV6 network. For example, refer to
Deployment location 2: Two endpoint devices of the QUIC connection are both deployed inside the IPV6 network. For example, refer to
Deployment location 3: A start point device of the QUIC connection is deployed inside the IPV6 network, and an end point device of the QUIC connection is deployed at an edge of the IPv6 network. For example, refer to
Deployment location 4: A start point device of the QUIC connection is deployed at an edge of the IPV6 network, and an end point device of the QUIC connection is deployed inside the IPv6 network. For example, refer to
This embodiment of this disclosure is applicable to a scenario in which the two endpoint devices of the QUIC connection are directly connected through one IPV6 link. In this scenario, a next-hop IPV6 node of the start point device of the QUIC connection is the end point device of the QUIC connection. This embodiment of this disclosure is also applicable to a scenario in which there is one or more intermediate nodes between the two endpoint devices of the QUIC connection. The intermediate node is configured to forward, to the end point device of the QUIC connection, a QUIC packet sent by the start point device of the QUIC connection. For example, refer to
Embodiments of this disclosure are applicable to a scenario in which service data of the device is transmitted based on the QUIC, and are also applicable to a scenario in which service data from another device is transmitted based on the QUIC. For example, user equipment is respectively deployed on two sides of the two endpoint devices of the QUIC connection, and the two endpoint devices of the QUIC connection transmit the service data of the user equipment based on the QUIC. For example, refer to
In an example scenario, embodiments of this disclosure are applied to deploying a virtual private network (VPN) service. For example, the first user equipment 15 and the second user equipment 16 are located in a same VPN, the first user equipment 15 is a customer network edge device (CE) of a first site in the VPN, and the second user equipment 16 is a CE of a second site in the VPN. Both the first network device 11 and the second network device 12 are provider edges (PEs) of a service provider network, and an intermediate node between the first network device 11 and the second network device 12 is a backbone device (P) in the service provider network.
In another example application scenario, embodiments of this disclosure are applied to traffic transmission in a data center. For example, both the first user equipment 15 and the second user equipment 16 are servers in the data center, and both the first network device 11 and the second network device 12 are switches in the data center. For example, the first network device 11 and the second network device 12 communicate based on a leaf-spine architecture, both the first network device 11 and the second network device 12 are leaf switches, and an intermediate node between the first network device 11 and the second network device 12 is a spine switch. Alternatively, the first network device 11 and the second network device 12 communicate based on an access-aggregation-core three-layer architecture, both the first network device 11 and the second network device 12 are access switches, and an intermediate node between the first network device 11 and the second network device 12 includes an aggregation switch and a core switch.
The following uses an example to describe a method procedure in embodiments of this disclosure with reference to the foregoing application scenario.
Step S701: The first network device generates a QUIC packet.
The QUIC packet is an IPV6 packet. A packet header part of the QUIC packet includes an IPV6 basic header, one or more IPV6 extension headers, and a QUIC header. A payload field of the QUIC packet includes service data.
The QUIC header is used for carrying arguments related to QUIC-based transmission.
The IPV6 extension header is an IPV6 packet header located after the IPV6 basic header.
A carrying location of the QUIC header includes a plurality of cases. The following describes an example with reference to a carrying location 1 and a carrying location 2.
Carrying location 1: The QUIC header is a next header of the IPV6 extension header.
When the carrying location 1 is used, the QUIC header is used as an independent packet header. The QUIC header is in parallel with the existing IPV6 extension header. The QUIC header may be understood as a new type of IPV6 extension header.
A sequence relationship between the QUIC header and the IPV6 extension header includes a plurality of cases. In some embodiments, the QUIC header is a next header of the last IPV6 extension header. In other words, the QUIC header is located after all IPv6 extension headers and before the payload. In some other embodiments, the QUIC header is located between two IPV6 extension headers. In some other embodiments, the QUIC header is located before the first IPV6 extension header (for example, HBH). A sequence relationship between the QUIC header and another IPV6 extension header is not limited in this embodiment.
A plurality of implementations is provided in this embodiment to describe examples of types of IPV6 extension header after which the QUIC header is located. The following uses four implementations as an example for description.
Implementation 1: The QUIC header is a next header of destination options headers (DOHs).
The DOHs are used for carrying data to be processed by a destination node. The DOHs include a DOH 1 and a DOH 2. The DOH 1 is a DOH located before a routing header (RH). The DOH 2 is a DOH located after the RH. The DOH 1 requires that each endpoint device on a path specified by the RH parses content of the DOH 1 and performs a corresponding function in a process of forwarding a packet on the path specified by the RH. The DOH 2 requires that each endpoint device on a path specified by the RH does not need to parse content of the DOH 2, while a destination endpoint device on the path specified by the RH parses the content of the DOH 2 and performs a corresponding function in a process of forwarding a packet on the path specified by the RH. If the packet does not include an RH, a device specified by a destination IP address in the IPv6 basic header parses the content of the DOH and performs the corresponding function. When the RH is a segment routing header (SRH), a path specified by the SRH passes through a device corresponding to each SID in a SID list, and the DOH 1 indicates the device corresponding to each SID in the SID list to parse the content of the DOH 1 and perform the corresponding function.
Optionally, the QUIC header is a next header of the DOH 2. For example,
Implementation 2: The QUIC header is a next header of a hop-by-hop options header (HBH).
The HBH is used for transmitting data required by each hop of IPV6 node on a forwarding path. When a packet carries an HBH, in a packet forwarding process, each hop of IPV6 node on the path usually reads data in the HBH and processes the packet based on the data in the HBH.
For example,
Implementation 3: The QUIC header is a next header of an SRH.
The SRH is an RH in the IPV6. The SRH mainly includes a SID list, a routing type field, and a segments left (SL) field. The SL and the segment list information together determine a destination address in the IPV6 basic header. Each time an IPV6 for segment routing (SRv6) node is passed, the SL field decreases by 1 and the IPV6 destination address (DA) changes once. A value of the IPV6 DA is a SID to which a pointer points. The SL and the segment list field together determine the IPV6 DA. For example, if an SL value is n, the IPv6 DA value is a value of SID [0]. If the SL value is n−1, the IPV6 DA value is a value of SID [1]. If the SL value is 1, the IPV6 DA value is a value of SID [n−1]. If the SL value is 0, the IPV6 DA value is a value of SID [n].
For example,
For how to indicate that there is a QUIC header in the IPv6 packet, in some embodiments, a value of a next header field in an IPV6 extension header that is located before the QUIC header and adjacent to the QUIC header indicates the QUIC header.
The next header field is a field that needs to be carried in the IPV6 basic header or the IPV6 extension header specified in the IPV6 protocol. The next header field indicates a protocol type of a next packet header. For example, if a value of the next header field is 0, it indicates that the next packet header is an HBH; if a value of the next header field is 17, it indicates that the next packet header is a UDP; if a value of the next header field is 60, it indicates that the next packet header is a DOH; if a value of the next header field is 43, it indicates that the next packet header is an RH (for example, an SRH); or if a value of the next header field is 59, it indicates that there is no next extension packet header.
In some implementations of this disclosure, a new value of the next header field is defined, and a meaning of the value indicates the QUIC. When this implementation is used, the first network device inserts the QUIC header after an IPV6 extension header, and writes a value indicating the QUIC into a next header field of the IPV6 extension header, so that a value of the next header field in the IPV6 extension header indicates the QUIC header.
For example,
According to the foregoing implementation, in a process of parsing a packet, when reading a value indicating a QUIC from a next header field in an IPV6 extension header, a receive end may learn that a next packet header of the IPV6 extension header is a QUIC header, to read information in the QUIC header to process the packet. In this implementation, a packet processing procedure of the receive end complies with a packet processing procedure defined in an IPV6 standard. Therefore, compatibility is good, and the foregoing implementation can be implemented provided that a device supports the IPV6, and implementation complexity is low.
Carrying location 2: The QUIC header is located inside the IPV6 extension header.
When the carrying location 2 is used, the QUIC header is a part included in the existing IPv6 extension header.
A plurality of implementations are provided in this embodiment for indicating a specific type of IPV6 extension header into which the QUIC header is encapsulated. In some embodiments, the QUIC header is located inside the DOH. For example, as shown in
The DOH 2 is a packet header to be processed by an egress node of a forwarding path, the QUIC header is encapsulated inside the DOH 2, when receiving the QUIC packet, the egress node of the forwarding path finds that the DOH 2 exists in the QUIC packet, and a current node is the egress node. Therefore, the current node parses content included in the DOH 2. When finding that there is a QUIC header in the DOH 2, the egress node may learn that QUIC-based transmission needs to be terminated, for example, the egress node may remove the QUIC header from the packet and decrypt a payload.
The HBH is a packet header to be processed by each hop of node on the forwarding path, and the QUIC header is encapsulated inside the HBH, so that each hop of node on the forwarding path can transmit, based on content of the QUIC header in the HBH, the packet by using the QUIC.
For a specific field in the IPV6 extension header in which the QUIC header is encapsulated, in some embodiments, the first network device uses the QUIC header as an option, and encapsulates the QUIC header into an option field of an existing IPv6 extension header.
When this manner is used, the QUIC header is in parallel with an existing IPv6 option, and the QUIC header is equivalent to a new type of IPV6 option, for example, referred to as a QUIC option.
The option is also referred to as a type-length-value (TLV) option or an optional TLV. The option is an optional field in the IPV6 extension header.
When the IPV6 extension header includes a plurality of option fields, there are a plurality of cases of option fields in which the QUIC header is located in the IPV6 extension header. For example, the QUIC header is located in a first option field in an IPV6 extension header. In some other embodiments, the QUIC header is located in the last option field in an IPV6 extension header. In some other embodiments, the QUIC header is located between two option fields in an IPV6 extension header. An option field in which the QUIC header is located in the IPV6 extension header is not limited in this embodiment.
For how to indicate that there is a QUIC header in the option field of the IPV6 extension header, in some embodiments, a value of the option type field is used to indicate the QUIC header. For example, refer to
A plurality of implementations is provided in this embodiment for describing a specific option of the IPV6 extension header in which the QUIC header is encapsulated. In some embodiments, the first network device encapsulates the QUIC header into an option field of the DOH 2.
In some other embodiments, the first network device encapsulates the QUIC header into an option field of the DOH 1.
In some other embodiments, the first network device encapsulates the QUIC header into an option field of an SRH.
In some other embodiments, the first network device encapsulates the QUIC header into an option field of an HBH.
In some embodiments, the QUIC packet does not include a UDP header. In a encapsulation manner of removing the UDP packet header, packet encapsulation format redundancy caused by the UDP header is avoided.
There is a plurality of manners of obtaining content of each field in the QUIC packet. In some embodiments, in the foregoing listed fields in the QUIC packet, namely, the IPV6 basic header, the IPV6 extension header, the QUIC header, and the payload, content of the QUIC header is generated by the first network device, and content of the other parts other than the QUIC header is optionally generated by the first network device, or is generated by another device other than the first network device, and is sent to the first network device by the another device other than the first network device.
For the payload field in the QUIC packet, in some embodiments, content of the payload field is locally generated by the first network device. For example, an application running on the first network device generates service data, and the first network device generates the QUIC packet based on the service data. The payload field of the QUIC packet includes the service data. In some other embodiments, content of the payload field is from a user equipment. For example, the user equipment generates a data packet, and sends the data packet to the first network device. The first network device receives the data packet, uses the data packet as the payload, and adds the QUIC header to an outer layer of the data packet, to obtain the QUIC packet. The payload field of the QUIC packet includes the data packet.
For the IPV6 basic header and the IPV6 extension header in the QUIC packet, in some embodiments, content of the IPV6 basic header or the IPV6 extension header is locally generated by the first network device. A source IP address in the IPV6 basic header is an IPV6 address of the first network device. For example, the first network device is an ingress node of the IPV6 network. After receiving the data packet, the first network device adds the QUIC header to the outer layer of the data packet, adds the IPV6 basic header to an outer layer of the QUIC header, and optionally adds one or more IPV6 extension headers to obtain the QUIC packet.
In some other embodiments, content of the IPV6 basic header or the IPV6 extension header is generated by another network device located in an upstream of the first network device. For example, the ingress node of the IPV6 network sends an IPV6 packet. The IPV6 packet includes the IPV6 basic header and the IPV6 extension header, and the first network device adds the QUIC header to the received IPV6 packet, to obtain the QUIC packet. In still some embodiments, content of the IPV6 basic header or the IPV6 extension header is generated by the user equipment. For example, the user equipment and the first network device are deployed in a same IPV6 network, the user equipment communicates with the first network device based on an IPV6 protocol, and a data packet sent by the user equipment is an IPV6 packet. After receiving the data packet, the first network device adds the QUIC header to an outer layer of the data packet, to obtain the QUIC packet.
Referring to
The first network device sends the QUIC packet through the QUIC connection. In some embodiments, the first network device sends the QUIC packet in a transmission manner required in a QUIC protocol. For example, the first network device encrypts the payload by using a key, to obtain a payload in a ciphertext form. In the QUIC packet sent by the first network device, both the QUIC header and the IPV6 extension header are in a plaintext form, and the payload is in the ciphertext form. The key used by the first network device during encryption is, for example, determined by the first network device and the second network device through negotiation in a handshake phase. For another example, the first network device implements traffic control by using a sliding window mechanism. For another example, the first network device performs, according to the QUIC protocol, congestion control on a packet flow to which the QUIC packet belongs.
Step S703: The second network device receives the QUIC packet.
Step S704: The second network device processes the QUIC packet.
For example, the second network device removes the QUIC header from the QUIC packet, and decrypts the payload field to obtain the service data in the payload field.
According to the method provided in this embodiment, the QUIC header is set in a next header of the IPV6 extension header, or the QUIC header is set inside the IPV6 extension header, so that the QUIC packet carries the QUIC header without carrying a UDP header. Therefore, an encapsulation format of the QUIC packet is simplified, and overheads of transmitting the QUIC packet are reduced.
The embodiment shown in
In view of this, to more flexibly control specific devices on the forwarding path that transmit the packet based on the QUIC, a QUIC-related SID is provided in some embodiments of this disclosure, and the SID is used to identify a segment for transmission based on the QUIC on the forwarding path, to meet a requirement of packet transmission based on the QUIC on any one or more segments. The following describes the QUIC-related SID by using an example.
For a meaning of the QUIC-related SID, in some embodiments, the QUIC-related SID indicates that a node corresponding to the SID transmits the packet based on the QUIC. For example, the QUIC-related SID includes a start point SID of the QUIC connection and an end point SID of the QUIC connection. The start point SID of the QUIC connection indicates to send the QUIC packet through the QUIC connection and add the QUIC header. The end point SID of the QUIC connection indicates to receive the QUIC packet through the QUIC connection and remove the QUIC header.
For a data structure of the QUIC-related SID, in some embodiments, as shown in
For content of the locator field in the QUIC-related SID, in some embodiments, the locator field in the QUIC-related SID includes location information of an endpoint device of the QUIC connection. In a possible implementation, the node ID field in the locator field in the QUIC-related SID includes an identifier of the endpoint device of the QUIC connection. For example, a locator field in a start point SID of the QUIC connection includes location information of a start point device of the QUIC connection. For example, the node ID field in the locator field includes an identifier of the start point device of the QUIC connection. A locator field in an end point SID of the QUIC connection includes location information of an end point device of the QUIC connection. For example, the node ID field in the locator field includes an identifier of the end point device of the QUIC connection. The locator field in the QUIC-related SID carries the location information of the start point device of the QUIC connection, to indicate the packet to be forwarded to the start point device of the QUIC connection, and trigger the packet to be transmitted from the device based on the QUIC. The locator field in the QUIC-related SID carries the location information of the end point device of the QUIC connection, to indicate the packet to be forwarded to the end point device of the QUIC connection, and trigger to terminate QUIC-based packet transmission from the end point device.
For content of the function field in the QUIC-related SID, in some embodiments, the function field in the QUIC-related SID includes a function identifier of the QUIC-based packet transmission, and the device stores instructions of the QUIC-based packet transmission, and a binding relationship between the instruction and the function identifier. Meanings of the function identifier of the QUIC-based packet transmission, include but are not limited to actions such as sending and receiving of the entire packet, adding and removing (or encapsulation and decapsulation) of the QUIC header, and encryption and decryption of the payload. In a possible implementation, as shown in
The foregoing three types of QUIC-related function identifiers for the sending and receiving of the entire packet, the encapsulation and decapsulation of the QUIC header, and the encryption and decryption of the payload are optionally carried at any location in the two fields: the function field and the arguments field. For example, a value of a function field in a start point SID of the QUIC connection indicates to send the QUIC packet through the QUIC connection and add the QUIC header, and a value of a function field in an end point SID of the QUIC connection indicates to receive the QUIC packet through the QUIC connection and remove the QUIC header. For another example, a value of a function field in a start point SID of the QUIC connection indicates to send the QUIC packet through the QUIC connection, add the QUIC header, and encrypt the payload, and a value of a function field in an end point SID of the QUIC connection indicates to receive the QUIC packet through the QUIC connection, remove the QUIC header, and decrypt the payload. For another example, a value of a function field in the start point SID of the QUIC connection indicates to send the QUIC packet through the QUIC connection. A value of a function field in an end point SID of the QUIC connection indicates to receive the QUIC packet through the QUIC connection. A value of an arguments field in a start point SID of the QUIC connection indicates to add the QUIC header. A value of an arguments field in an end point SID of the QUIC connection indicates to remove the QUIC header.
For a form of the QUIC-related SID, in some embodiments, the QUIC-related SID is implemented by using a SID in SRv6. For example, the QUIC-related SID is a 128-bit IPv6 address. In some other embodiments, the QUIC-related SID is implemented by using a SID in SR multi-protocol label switching (MPLS). For example, the QUIC-related SID is a 32-bit MPLS label. A form of the QUIC-related SID is not limited in this embodiment.
For a carrying location of the QUIC-related SID, in some embodiments, as shown in
There are a plurality of implementations of a specific IPV6 extension header in which the QUIC-related SID is located. In some embodiments, the QUIC-related SID is carried in a DOH. For example, the QUIC-related SID is carried in a DOH 1 or a DOH 2. In some other embodiments, the QUIC-related SID is carried in an SRH. In some other embodiments, the QUIC-related SID is carried in an HBH.
A location relationship between the QUIC-related SID and the QUIC header includes a plurality of implementations. The following uses four location relationships as an example for description.
Location relationship A: The QUIC-related SID and the QUIC header are located in a same IPv6 extension header.
In some other implementations, the QUIC-related SID and the QUIC header are located in a same option of a same IPv6 extension header. For example, refer to
In some other implementations, the QUIC-related SID and the QUIC header are located in different options of a same IPV6 extension header. For example, the IPV6 extension header includes a first option and a second option, the first option includes the QUIC-related SID, and the second option includes the QUIC header.
Location relationship B: The QUIC-related SID and the QUIC header are located in different IPv6 extension headers.
For example, the QUIC packet includes a first IPV6 extension header and a second IPv6 extension header, the first IPV6 extension header includes the QUIC-related SID, and the second IPv6 extension header includes the QUIC header. The first IPV6 extension header includes but is not limited to an SRH, a DOH, or an HBH. The second IPV6 extension header is optionally a DOH.
Location relationship C: The QUIC-related SID is located inside an IPV6 extension header, and the QUIC header is located in a next header of the IPV6 extension header.
Location relationship D: The QUIC-related SID is located in a destination address field of an IPV6 basic header, and the QUIC header is located inside an IPV6 extension header or a next header of the IPV6 extension header.
The following uses some specific IPV6 extension headers as an example to describe the foregoing location relationship between the QUIC header and the SID.
When the QUIC-related SID is carried in the DOH, in some embodiments, the DOH includes the option field, the option field includes the option data field, and the option data field includes the QUIC header and the foregoing QUIC-related SID. In some other embodiments, the option field of the DOH includes the QUIC-related SID, and a next header of the DOH is the QUIC header.
When the QUIC-related SID is carried in the SRH, in some embodiments, the SRH includes the option field, the option field includes the option data field, and the option data field includes the QUIC header and the QUIC-related SID. In some other embodiments, as shown in (a) in
The QUIC-related SID is, for example, located at any location in the SID list. For example, when a head node on the SR path needs to be specified to perform QUIC-based transmission, the first SID in the SID list is a start SID of the QUIC connection. When an mth intermediate node on the SR path needs to be specified to perform QUIC-based transmission, the mth SID in the SID list is a start SID of the QUIC connection. When a tail node on the SR path is an end point of QUIC-based transmission, the last SID in the SID list is an end point SID of the QUIC connection.
When the QUIC-related SID is carried in the HBH, in some embodiments, the HBH includes the option field, the option field includes the option data field, and the option data field includes the QUIC header and the foregoing QUIC-related SID. In some other embodiments, the option field of the HBH includes the foregoing QUIC-related SID, and a next header of the HBH is the QUIC header.
In addition to the IPV6 extension header that may include the QUIC-related SID, in an SRv6 technology, each hop of SRv6 node copies a SID of a next hop of node to the destination address field in the IPV6 basic header, so that the destination address field in the IPV6 basic header may also include the QUIC-related SID.
For a process of using the start point SID of the QUIC connection, a processing procedure of the first network device 11 in the method embodiment shown in
Alternatively, the first network device 11 reads a SID carried in an IPV6 extension header of the IPv6 packet, for example, a SID carried in an option of a DOH 1, an option of an HBH, or an option of an SRH, and then queries a local SID table of the first network device 11 based on the SID carried in the IPV6 extension header. If the start point SID of the QUIC connection in the local SID table is matched in a table lookup process, the first network device 11 queries a corresponding instruction based on the first function identifier in the start point SID, to obtain the first instruction. The first network device 11 executes the first instruction to implement S701 and S702. Optionally, the first network device 11 updates the destination address field in the IPV6 basic header of the QUIC packet by using the end point SID of the QUIC connection, or the first network device 11 adds the end point SID of the QUIC connection to the IPV6 extension header of the QUIC packet, so that the end point SID of the QUIC connection indicates to the second network device 12 to perform S703 and S704.
For a process of using the end point SID of the QUIC connection, a processing procedure of the second network device 12 in the method embodiment shown in
For a quantity of QUIC-related SIDs in the IPV6 extension header, in some embodiments, the quantity of QUIC-related SIDs in the IPV6 extension header is determined based on a quantity of segments for QUIC-based transmission on the forwarding path.
In a possible implementation, QUIC-related SIDs in the IPV6 extension header appear in pairs, each pair of QUIC-related SIDs correspond to one segment for QUIC-based transmission, and each pair of QUIC-related SIDs include a start SID and an end SID of one segment.
For example, as shown in
For another example, as shown in
For another example, the forwarding path includes k segments for QUIC-based transmission, and the IPV6 extension header includes 2*k QUIC-related SIDs.
The first SID, the second SID, the third SID, or the fourth SID listed above has a feature of the QUIC-related SID. For a data structure and a carrying location of the first SID, the second SID, the third SID, or the fourth SID, and a location relationship between the first SID, the second SID, the third SID, or the fourth SID, and the QUIC header, refer to overall descriptions of the QUIC-related SID. For brevity of description, no enumeration is provided herein.
The foregoing described case in which the QUIC-related SIDs appear in pairs in the IPV6 extension header is used as an example. In some other embodiments, the IPV6 extension header includes an odd quantity of QUIC-related SIDs. For example, the IPV6 extension header includes only one QUIC-related SID. For example, as shown in
In an example application scenario, as shown in
In another example application scenario, as shown in
The following describes the method shown in
Example 1 is an example of how to apply the method shown in
For example, refer to
Step S710: The first network device 11 and the second network device 12 perform a handshake to establish a QUIC connection, and the first network device 11 and the second network device 12 obtain, through negotiation, a key used during data transmission. Step S710 is not shown in
Step S711: The first user equipment 15 sends a data packet 241 to the first network device 11. The data packet 241 includes an IPV4 header and service data, a source IP address in the IPV4 header is the IPV4 address 10.1.1.1 of the first user equipment 15, and a destination IP address in the IPV4 header is the IPV4 address 10.1.1.2 of the second user equipment 16.
Step S712: The first network device 11 receives the data packet 241, uses the data packet 241 as a payload, encrypts the data packet 241 by using the pre-agreed key, and encapsulates an IPV6 basic header, an HBH, an SRH, a DOH, and a QUIC header into an outer layer of a data packet 242 in a ciphertext form, to obtain a QUIC packet 20, and the first network device 11 sends the QUIC packet 20 through the QUIC connection.
The QUIC packet 20 does not include a UDP header, the QUIC header is a next header of the DOH, and a value of a NH field in the DOH indicates the QUIC header. Specifically, as shown in
Step S713: After receiving the QUIC packet 20, the intermediate node 17 obtains the IPV6 address 10::2 of the second network device 12 from the SID list of the SRH, updates the destination IP address in the IPV6 basic header by using the IPV6 address 10::2 of the second network device 12, to obtain a QUIC packet 20′, and sends the QUIC packet 20′.
Step S714: The second network device 12 receives the QUIC packet 20′, decapsulates the IPV6 basic header, the HBH, the SRH, the DOH, and the QUIC header, and decrypts the payload by using the key, to obtain a data packet 242 in a plaintext form.
Step S715: The second network device 12 sends the data packet 242 to the second user equipment 16.
Example 2 is a specific example of how to apply the method shown in
Step S712′: The first network device 11 uses service data of the first network device 11 as a payload, encrypts the service data of the first network device 11 by using a pre-agreed key, and encapsulates an IPV6 basic header, an HBH, an SRH, a DOH, and a QUIC header into an outer layer of service data in a ciphertext form, to obtain a QUIC packet 20, and the first network device 11 sends the QUIC packet 20 through the QUIC connection.
Step S714′: The second network device 12 receives the QUIC packet 20, decapsulates the IPV6 basic header, the HBH, the SRH, the DOH, and the QUIC header, and decrypts the payload by using the key, to obtain the service data in a plaintext form, and the second network device 12 processes a service based on the service data in the plaintext form.
Example 3 includes a processing procedure similar to that in example 1, and a difference between example 3 and example 1 lies in different packet encapsulation formats. Specifically, refer to
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the method procedure shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
The described apparatus embodiment shown in
All or some units in the network device 800 are implemented through software, hardware, firmware, or any combination thereof.
With reference to the network device 900 described below, the following describes some possible implementations of implementing functional units in the network device 800 by using hardware or software.
When software is used for implementation, for example, the generation unit 801 is implemented by a software functional unit that is generated after at least one processor 901 in
When hardware is used for implementation, for example, the units in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the method procedure shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to the packet format shown in
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to
Optionally, with reference to
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
Optionally, with reference to the application scenario shown in
The processor 901 is, for example, a general-purpose central processing unit (CPU), a network processor (NP), a graphics processing unit (GPU), a neural-network processing unit (NPU), a data processing unit (DPU), a microprocessor, or one or more integrated circuits for implementing the solution of this disclosure. For example, the processor 901 includes an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof. The PLD is, for example, a complex programmable logic device (CPLD), a field-programmable logic gate array (FPGA), a generic array logic (GAL), or any combination thereof.
The memory 902 is, for example, a read-only memory (ROM) or another type of static storage device capable of storing static information and instructions, or a random-access memory (RAM) or another type of dynamic storage device capable of storing information and instructions, or is an electrically erasable programmable ROM (EEPROM), a compact disc ROM (CD-ROM) or another compact disc storage, an optical disc storage (including a compact disc, a laser disc, an optical disc, a digital versatile disc, a BLU-RAY disc, and the like), a magnetic disk storage medium or another magnetic storage device, or any other medium capable of carrying or storing expected program code in a form of instructions or a data structure and capable of being accessed by a computer. However, the memory 902 is not limited thereto. Optionally, the memory 902 exists independently and is connected to the processor 901 by an internal connection 904. Alternatively, the memory 902 is optionally integrated with the processor 901.
The network interface 903 uses any apparatus such as a transceiver, and is configured to communicate with another device or a communication network. The network interface 903 includes, for example, at least one of a wired network interface or a wireless network interface. The wired network interface is, for example, an ethernet interface. The ethernet interface is, for example, an optical interface, an electrical interface, or a combination thereof. The wireless network interface is, for example, a wireless local area network (WLAN) interface, a cellular network interface, or a combination thereof.
In some embodiments, the processor 901 includes one or more CPUs, such as a CPU 0 and a CPU 1 shown in
In some embodiments, the network device 900 optionally includes a plurality of processors, such as the processor 901 and a processor 905 shown in
In some embodiments, the network device 900 further includes the internal connection 904. The processor 901, the memory 902, and the at least one network interface 903 are connected by the internal connection 904. The internal connection 904 includes a pathway, for transferring information between the foregoing components. Optionally, the internal connection 904 is a board or bus. Optionally, the internal connection 904 includes an address bus, a data bus, a control bus, and the like.
In some embodiments, the network device 900 further includes an input/output interface 906. The input/output interface 906 is connected to the internal connection 904.
Optionally, the processor 901 implements the method in the foregoing embodiment by reading program code stored in the memory 902, or the processor 901 implements the method in the foregoing embodiment by using internally stored program code. When the processor 901 implements the method in the foregoing embodiment by reading the program code stored in the memory 902, the memory 902 stores program code 910 that implements the method provided in embodiments of this disclosure.
For more details about the processor 901 implementing the foregoing functions, refer to descriptions in the foregoing method embodiments. Details are not described herein again.
Embodiments in this specification are described in a progressive manner. For same or similar parts in embodiments, refer to each other. Each embodiment focuses on a difference from other embodiments.
That A refers to B means that A is the same as B or that A is a simple variant of B.
In the specification and claims in embodiments of this disclosure, the terms “first”, “second”, and the like are for distinguishing between different objects, but are not intended to describe a particular order of the objects, and cannot be understood as an indication or implication of relative importance. For example, the first SID and the second SID are used for distinguishing between different SIDs, but are not used for describing a particular order of the SIDs, and it cannot be understood that the first SID is more important than the second SID.
In embodiments of this disclosure, unless otherwise specified, “at least one” means one or more, and “a plurality of” means two or more. For example, a plurality of IPV6 extension headers refers to two or more IPV6 extension headers.
All or some of the foregoing embodiments may be implemented through software, hardware, firmware, or any combination thereof. When software is used to implement the embodiments, all or a part of the embodiments may be implemented in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or some of the described procedures or functions according to embodiments of this disclosure are generated. The computer may be a general-purpose computer, a dedicated computer, a computer network, or other programmable apparatuses. The computer instructions may be stored in a computer-readable storage medium or may be transmitted from a computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions may be transmitted from a website, computer, server, or data center to another website, computer, server, or data center in a wired (for example, a coaxial cable, an optical fiber, or a digital subscriber line (DSL)) or wireless (for example, infrared, radio, or microwave) manner. The computer-readable storage medium may be any usable medium accessible by a computer, or a data storage device, such as a server or a data center, integrating one or more usable media. The usable medium may be a magnetic medium (for example, a floppy disk, a hard disk drive, or a magnetic tape), an optical medium (for example, a digital versatile disc (DVD)), a semiconductor medium (for example, a solid-state drive solid-state drive (SSD)), or the like.
The foregoing embodiments are intended for describing the technical solutions of this disclosure other than limiting this disclosure. Although this disclosure is described in detail with reference to the foregoing embodiments, a person of ordinary skill in the art should understand that modifications may still be made to the technical solutions described in the foregoing embodiments or equivalent replacements may still be made to some technical features thereof, without departing from the scope of the technical solutions of embodiments of this disclosure.
Number | Date | Country | Kind |
---|---|---|---|
202211028659.9 | Aug 2022 | CN | national |
202211234574.6 | Oct 2022 | CN | national |
This is a continuation of International Patent Application No. PCT/CN2023/096437, filed on May 26, 2023, which claims priority to Chinese Patent Application No. 202211234574.6, filed on Oct. 10, 2022, and Chinese Patent Application No. 202211028659.9, filed on Aug. 25, 2022. All of the aforementioned patent applications are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/CN2023/096437 | May 2023 | WO |
Child | 19061267 | US |