Method for priority data transmission over multiple mptcp sockets and mrnet router for its implementation
The MRNET Router addresses the issue of prioritized data transmission over multiple MPTCP sockets by using a proprietary algorithm to order data in a software buffer and integrate with the Linux kernel, ensuring efficient and secure transmission.
Patent Information
- Authority / Receiving Office
- RU · RU
- Patent Type
- Patents
- Current Assignee / Owner
- OBSHCHESTVO S OGRANICHENNOI OTVETSTVENNOSTIU NIUKOM DISTRIBIUSHN
- Filing Date
- 2025-09-17
- Publication Date
- 2026-06-30
Smart Images

Figure 00000001_ABST
Abstract
Description
[0001] The invention relates to network devices that perform distributed multi-channel data transmission over multiple communication networks using the Multipath TCP (MPTCP) protocol. The invention aims to solve the problem of data prioritization by network devices that create multiple MPTCP sockets and perform MPTCP transmission over them.
[0002] The MPTCP software algorithm (RFC 8684) is part of the Linux operating system (OS) kernel. It is an extension of the TCP protocol and does not support other data transfer protocols (UDP, ICMP, etc.). To transmit data from other protocols, various methods of packaging data from other protocols into MPTCP packets are used (patent EP 3459217B1). Technically, MPTCP combines a set of software TCP / IP sockets, logically called subflows, into a single software MPTCP socket, logically called a flow. Each TCP / IP socket (subflow) interacts with one WAN interface, which software-definedly represents one of the physically available communication networks, including those with different data transmission technologies (2G / 3G / 4G / 5G, Wi-Fi, Ethernet, FC networks, etc.). In general, in the most common scenario, MPTCP combines and transmits data over the WAN, representing 2G / 3G / 4G / 5G cellular networks and Wi-Fi access points.
[0003] The technical appearance of the MPTCP software algorithm (https: / / www.mptcp.dev / ) provides:
[0004] - creation of subflows and their unification into a flow by the Path Manager software manager of the transmitting network node - MPTCP client;
[0005] - distributed data transmission (IP packets) by the software scheduler Path Scheduler MPTCP client via MPTCP channel (flow) - in parallel, or sequentially one by one, or part, or all subflows, or a combination of serial-parallel transmission;
[0006] - distributed reception of data (IP packets) via MPTCP channel (flow) and aggregation of IP packets by the receiving network node - MPTCP server.
[0007] The Packet Scheduler software scheduler distributes IP packets across a set of TCP / IP sockets based on priority criteria - minimum RTT (Round Trip Time) delay or its fluctuations (Jitter) of the WAN, or other criteria that can be configured by the MPTCP client administrator - for example, based on the minimum tariff of the WAN operator.
[0008] When creating an MPTCP socket (socket(…)) it starts a long software association of TCP / IP sockets into an MPTCP socket, which is determined by the process of WAN discovery, checking their support for the MPTCP protocol and the specifics of the software implementation of MPTCP in the Linux kernel.
[0009] This duration can be reduced by creating multiple MPTCP sockets simultaneously. In this case, software pooling of TCP / IP sockets is performed simultaneously by each MPTCP socket (flow) into its own set of TCP / IP sockets (subflow), which represent the same physically accessible WAN communication networks.
[0010] Technical level MPTCP clients are known to create multiple MPTCP sockets for data transfer: software-based (Shadow Socks VPN, Open VPN), and hardware-based (some routers running OpenWRT). The software logic of some of these MPTCP clients operates using VPN technology, which encrypts data on the client side, forwards it to the VPN server for decryption, transmits it to a designated URL, and then transmits it back with encryption on the VPN server and decryption on the client.
[0011] An inevitable drawback of creating multiple MPTCP sockets by a single MPTCP client is the inability to prioritize data transmission based on protocol (UDP, ICMP), device (IP or MAC address), or other parameters configured by the MPTCP client administrator. This inability to prioritize data transmission is due to each MPTCP socket independently creating its own set of TCP / IP sockets representing the same WAN. The software scheduler (Packet Scheduler) of each MPTCP socket independently prioritizes IP packets to the priority TCP / IP socket, which, based on prioritization parameters (low RTT, jitter, etc.), is generally prioritized by the software scheduler of another MPTCP socket and is physically represented by the same WAN.
[0012] For example, if the MPTCP client's software settings allow for the creation of a separate MPTCP socket for transmitting each type of data: telemetry from IoT devices; video from web cameras; ICMP diagnostic network data; transaction data from payment terminals and systems; and the assignment of transmission priorities to these data, then the Path Scheduler for each MPTCP socket will independently transmit priority data to the fastest TCP / IP socket, which, in the most likely case, physically represents the same WAN communication network.
[0013] Disordered data transmission of different priorities by multiple independent MPTCP sockets into a single WAN nullifies the data transfer priority assignment and reduces the performance of the MPTCP client. Variability in WAN network characteristics (RTT, jitter, etc.), especially in 2G / 3G / 4G / 5G cellular networks, periodically triggers software reconfiguration of WAN priorities by each MPTCP socket, further reducing the MPTCP client's data transfer rate. Therefore, increasing the MPTCP client's data transfer rate by software-based creation of multiple MPTCP sockets hinders data transfer prioritization.
[0014] For this reason, current technology lacks software or hardware-based MPTCP clients that implement priority setting and prioritized data transmission over multiple MPTCP sockets. The prior art does not contain technical solutions that overcome this limitation and ensure priority transmission of TCP / IP packets over multiple MPTCP sockets.
[0015] A consequence of this limitation is the impossibility of priority data transmission (including via VPN technology) over multiple MPTCP sockets. Another consequence of this limitation is the lack of current software or hardware-based MPTCP clients that perform priority data transmission (including encrypted VPN data) over multiple MPTCP sockets.
[0016] The claimed method for priority data transmission over multiple MPTCP sockets overcomes the limitation of the inability to prioritize data transmission over multiple MPTCP sockets. By implementing the claimed method, the claimed MRNET Router device acquires the ability to configure priority and prioritize data transmission over multiple MPTCP sockets. Additionally, by implementing the claimed method, the MRNET Router device acquires the ability to configure VPN and performs priority VPN data transmission over multiple MPTCP sockets. The claimed method and device simultaneously provide the following over multiple MPTCP sockets:
[0017] - receiving priority data and its priority bidirectional transmission from MPTCP client to MPTCP server and back;
[0018] - assignment (reassignment) of priority by this administrator of MPTCP client or MPTCP server for transmission;
[0019] - setting up encryption of priority data transmission using VPN technology.
[0020] The technical effect and technical result of the claimed method and device MRNET Router are:
[0021] - receiving priority data over one or more MPTCP sockets and their priority distributed transmission over several MPTCP sockets without assigning (reassigning) their priority, due to preliminary ordering of data by priority in the MPTCP client software buffer (QoS_TxQueue#N);
[0022] - the ability for the MPTCP client to assign (reassign) priority to data for priority transmission simultaneously over several MPTCP sockets, due to the interaction of the MPTCP client administrator software API and the software structure of filtering network packets IP tables of the Linux kernel;
[0023] - performing priority distributed data transmission over several MPTCP sockets by assigning a priority and pre-ordering data by priority in the MPTCP client software buffer (QoS_TxQueue#N) and subsequent ordered, sequential transmission of data from the buffer to one of the MPTCP sockets;
[0024] - performing bidirectional distributed data transmission over several MPTCP sockets by pre-ordering the data in the MPTCP server software buffer (QoS_TxQueue#N) and then distributing it to the MPTCP client;
[0025] - configuring data encryption using VPN technology, and receiving and transmitting VPN data through software interaction between the MPTCP client administrator API and the software buffer of ordered data;
[0026] - fast exit of the MPTCP client to the mode of the maximum possible MPTCP data transfer rate due to the programmatic creation of several MPTCP sockets;
[0027] - reducing the impact of the MPTCP socket software reconfiguration time of WAN priorities when their network characteristics change on the MPTCP client data transfer rate, due to the simultaneous operation of several MPTCP sockets.
[0028] An additional technical effect of the claimed method and MRNET Router device is the rational use of the multiprocessor (multi-core) architecture of the MPTCP client by performing data ordering and sequential transmission in different software threads.
[0029] A number of technical solutions for prioritizing MPTCP traffic and software integration of MPTCP and VPN technologies are known from patent sources.
[0030] Patent GB 2525416, which claims a method for transmitting data between network devices using the MPTCP protocol, includes extracting priority-related information from the data, processing it, and assigning an MPTCP subchannel of the appropriate quality to data of the corresponding priority. In this particular case, the claimed method involves transmitting the highest-priority data over the fastest (bits / sec) WAN. This solution is ineffective when more than one MPTCP socket is created programmatically, due to the independent operation of the software scheduler for each MPTCP socket.
[0031] Patent WO 2023012502, according to which the first MPTCP subchannel is established using VPN technology, and the second MPTCP subchannel is established using VPN, and so on. This software integration of multiple MPTCP sockets and VPNs also prevents priority data transmission due to the independent operation of the software scheduler for each MPTCP socket.
[0032] The technical objective and technical result of the claimed method of priority data transmission over several MPTCP sockets and the MRNET Router for its implementation is the assignment of priorities to data for transmission and the implementation of priority distributed MPTCP data transmission, including data protected by the VPN protocol over several MPTCP sockets.
[0033] The technical result is achieved through a method of priority data transmission over several MPTCP sockets, which includes the creation by the MPTCP client of two or more MPTCP sockets and the transmission of data (IP packets) over them using the MPTCP protocol, and in order to perform priority data transmission (IP packets) over two or more MPTCP sockets, the software algorithm of the MPTCP client performs:
[0034] a) receiving data (IP packets) via 2G / 3G / 4G / 5G, WI FI, Ethernet, FC protocols from the first network device connected to the same LAN network with the MPTCP client, or interacting with the MPTCP client via agreed API software interfaces;
[0035] b) reading, processing and changing, according to the settings of the MPTCP client administrator, information on the priority of received data (IP packets) - bits of the IP packet header that determine the IP address of the LAN User Device, or the URL Internet resource, or ToS - type of service IPv4 (traffic class IPv6), or DSCP - differentiated services code point, or CoS - class of service, or QoS - quality of service, or the type of application protocol HTTP, RTSP, FTP, DNS or transport layer (TCP, UDP, ICMP), or any other bits of the IP packet header applicable to determining the order of transmission of the IP packet along the network route, wherein the processing of information on the priority of received data (IP packets) may provide for its change according to the settings of the MPTCP client administrator;
[0036] c) ordering the received data (IP packets) in accordance with the priority information of the received data by creating at least one software buffer consisting of a set of software data structures - a queue, a stack, an array, a vector or any other data structures in which the received data (IP packets) are ordered in accordance with the priority information of their data;
[0037] d) ordered transmission of received data (IP packets) to the MPTCP software algorithm for transmission to the second network device connected to the WAN network, in accordance with the order of the received data (IP packets) in the software buffer due to the ordered and sequential call of the API of one or more MPTCP sockets from the set for transmitting received data (IP packet) via the 2G / 3G / 4G / 5G, WI FI, Ethernet, FC protocols.
[0038] At the same time, an MPTCP server connected to a WAN network, creating two or more MPTCP sockets and interacting with an MPTCP client, can perform the same (a)-d)) software algorithm.
[0039] The technical result is achieved by the MPTCP client MRNET Router for performing the method of priority data transmission over several MPTCP sockets, the device of which includes antennas and software or electrical connectors SIM, Rj-45, 2G / 3G / 4G / 5G modems, WIFI, USB, SFP for receiving and transmitting data (IP packets) over LAN and WAN communication networks and a software algorithm that creates two or more MPTCP sockets for transmitting data (IP packets), which provides for setting up priority data transmission parameters in the software interface of the MPTCP client administrator, which can provide for assigning a separate MPTCP socket for network device data (MAC), or a network address (IP), or a network protocol (TCP, UDP, ICMP) and can provide for changing the bits of the IP packet header that determine the priority of the IP packet - the IP address of the LAN device, or the Internet resource URL, or ToS - type of service IPv4 (traffic class IPv6), or DSCP - differenciated services code point,or CoS - class of service, or QoS - quality of service, or the type of application protocol (HTTP, RTSP, FTP, DNS, VoIP, IPTV, or transport layer (TCP, UDP, ICMP), or any other IP packet header bits applicable to determining the IP packet transmission order. The MPTCP client can be implemented using hardware and software or software only, or it can function as an MPTCP server.
[0040] The stated technical problem of priority data transmission over several MPTCP sockets and the stated technical result are solved by the MPTCP client device - the MRNET Router, which can be implemented by software or software and hardware technical means and which, in the user mode of the Linux User Space, executes the author's proprietary software algorithm MRVPN Tunnel App for the method of priority data transmission over several MPTCP sockets.
[0041] Fig. 1 shows the generalized software architecture of the MPTCP client of MRNET Router, the functional diagram of the software algorithm of MRVPN Tunnel App and the diagram of its interaction with the network functions of Linux Kernel, including the MPTCP software algorithm.
[0042] The MRNET Router device and the method of priority data transmission over several MPTCP sockets can be implemented using software and hardware or only software technical means.
[0043] The hardware architecture of the MRNET Router consists of standard technical means: a case, a power supply system, receiving and transmitting antennas and an integrated circuit that includes a multiprocessor (multi-core) computing system and a memory system, as well as a set of electrical connectors SIM, Rj-45, 2G / 3G / 4G / 5G modems, WIFI, USB, SFP for receiving and transmitting data from user devices of the User Devices local LAN network over a set of K global communication networks WAN #k.
[0044] To interact with physical LAN and WAN networks, the MRNET Router uses LAN and WAN interfaces implemented by a set of software or software-hardware technical means, which are software-represented by a set of bytes defining the network address of the network device, and hardware-represented by at least one electrical connector of the following standards: SIM (Subscriber Identification Module), RJ-45 (Registered Jack-45), USB (Universal Serial Bus), SFP (Small form-factor pluggable transceivers) module, 2G / 3G / 4G / 5G modem, WI FI, wired Ethernet, FC networks, or any other software and / or hardware interface of a network router known from the current state of the art and providing for data transfer.
[0045] In the special case of an MPTCP client running only in software, the MRNET Router software algorithm can interact with another software User Device via agreed-upon APIs. In this case, data reception is performed not through the Linux network stack's network functions, but via agreed-upon software data structures.
[0046] To perform two-way priority data transmission over multiple MPTCP sockets, including VPN data, the declared method of priority transmission of MPTCP data can be performed on the MPTCP server in the same technical form as on the MPTCP client: receiving data (IP packets) from the first network device, reading and processing information on the priority of the received data (IP packets), ordering the data (IP packets) in accordance with the priority information of the received data in the software buffer, and orderly transmission of data to the MPTCP software algorithm for transmission to the second network device.
[0047] The software architecture of MRNET Router is written in its memory system and executed by its computing system:
[0048] 1. Linux OS software algorithm, including the implementation of the MPTCP algorithm in the Linux Kernel;
[0049] 2. Administrator software interface (graphical or text API);
[0050] 3. Author's proprietary software algorithm MRVPN Tunnel App in Linux User Space;
[0051] and may include additional software algorithms—VPN and others. In a private implementation, the MRVPN Tunnel App algorithm can be executed in the Linux Kernel. In this private software implementation, the Linux Kernel source code is supplemented with the MRVPN Tunnel App software functions, followed by compilation of the Linux Kernel.
[0052] The administrator software interface interacts with the IP tables network packet filtering software structure of the Linux kernel, and provides the definition in graphical or text form:
[0053] 1. IP packet transmission priority coefficients for a specific User Device LAN network, or URL network address, or network protocol (TCP, UDP, ICMP) or application protocol (software port network communication software port);
[0054] 2. changes in the TCP / IP packet header bits that determine the IP address of the Internet resource URL, or the type of service (ToS) IPv4 (traffic class IPv6), or the type of application protocol (software port of network interaction) or transport / network layer (TCP, UDP, ICMP);
[0055] 3. Assign a separate MPTCP socket for network device MAC data, or network IP address, or network protocol (TCP, UDP, ICMP).
[0056] MRVPN Tunnel App software algorithm creates:
[0057] 1. A software buffer from a set of 1 to M (at least one) QoS_TxQueue#m data structures in the format of a standard software queue, stack, array, vector, or any other data structure.
[0058] 2. A set of 2 to N (at least two) MPTCP sockets MPTCP socket#n.
[0059] 3. Two separate software threads:
[0060] a) Packets QoS Classifier thread, which interacts with the software functions of the Linux network stack via the MRVPN tun netdev API.
[0061] b) QoS & Load Control thread that interacts with a set of M QoS_TxQueue#m data structures and a set of N MPTCP sockets MPTCP socket#n.
[0062] The declared method of priority data transmission over several MPTCP sockets is implemented by the author’s proprietary software algorithm MRVPN Tunnel App (Fig. 1):
[0063] a) MRVPN tun netdev performs software reception of IP packets of the first network device User Device LAN after they are received by the LAN interface of the MRNET Router and standard processing by the network functions of the Linux network stack of the Linux Kernel.
[0064] b) Packets QoS Classifier thread performs software reading of the bits of the IP packet header that determine its priority - the IP address of the LAN User Device or Internet resource URL, ToS - type of service IPv4 (traffic class IPv6), or DSCP - differentiated services code point, or CoS - class of service, or the type of application protocol HTTP, RTSP, FTP, DNS or transport layer (TCP, UDP, ICMP).
[0065] c) Packets QoS Classifier thread, based on software priority determination, orders IP packets in the software buffer by software adding the IP packet to one of the M QoS_TxQueue#m data structures according to the transmission priority of the second WAN network device from the highest QoS_TxQueue#1 to the lowest QoS_TxQueue#M.
[0066] d) The QoS & Load Control thread performs the ordered transmission to the second WAN network device of IP packets that are ordered in the software buffer by a sequential software call to the standard API of one or more MPTCP socket #n sockets from the set of N to transmit an IP packet to it (them) for distributed transmission to the second WAN network device and removing this IP packet from the QoS_TxQueue#m data structure sequentially and ordered by the order of the data structures starting from the first highest priority m=1 to the lower priority m=2, .., M. If the MPTCP client administrator settings provide for the assignment of a separate MPTCP socket #n for a specific User Device MAC, or IP network address or ICMP network protocol IP packet, then the API of the corresponding MPTCP socket #n is called for transmission.
[0067] After calling MPTCP socket #n, the standard Linux Kernel logic is executed. According to this logic, the MPTCP socket schedulers (mptcp scheduler #n) independently dispatch the IP packet to one of the TCP / IP sockets from the K set, which communicates with the corresponding WANk. After this, the standard network transmission of the IP packet to the second WAN network device in the direction of the MPTCP server is performed.
[0068] Due to the execution of:
[0069] - pre-processing of priority information and orderly addition of IP packets to the corresponding priority data structure QoS_TxQueue#m;
[0070] - subsequent sequential transmission of an IP packet to one or more of the MPTCP sockets MPTCP socket #n and removal of this IP packet from the QoS_TxQueue#m data structure in order from the highest priority to the lowest priority
[0071] MRVPN Tunnel App software algorithm removes the uncertainty of independent software distribution of IP packets by software Path Schedulers of multiple MPTCP sockets over available WAN.
[0072] Creating a software buffer of QoS_TxQueue#m data structures provides the ability to software VPN transform data (IP packets) to perform secure VPN transmission, while maintaining the ordering property of data (IP packets) and preserving the ability to prioritize secure VPN transmission over multiple MPTCP sockets.
[0073] Execution of the MRVPN Tunnel App software algorithm on the MPTCP server provides bidirectional priority data transmission over multiple MPTCP sockets by executing the MRVPN Tunnel App software algorithm on both the MPTCP client and the MPTCP server.
[0074] Due to the execution of:
[0075] - in one software thread Packets QoS Classifier thread for receiving IP packets, reading and processing information about the priority of IP packets and their ordering in the software buffer (QoS_TxQueue#N);
[0076] - in another software thread QoS & Load Control thread for ordered transmission of IP packets
[0077] MRVPN Tunnel App software algorithm effectively utilizes the multi-processor (multi-core) architecture of the MRNET Router MPTCP client software and hardware.
[0078] By creating a software buffer from a set of M QoS_TxQueue#m data structures, the MRVPN Tunnel App software algorithm can perform software conversion of IP packets to the VPN protocol without losing the speed of receiving and transmitting IP packets.
[0079] These technical measures, together with the administrator API, provide MRNET Router with the ability to prioritize data for transmission and prioritize data transmission, including data protected by VPN transformation, over multiple MPTCP sockets, which is not available to other state-of-the-art MPTCP clients.
Claims
1. A method for priority data transmission over several MPTCP sockets, which includes the creation by an MPTCP client of two or more MPTCP sockets and the transmission of data over them using the MPTCP protocol, characterized in that, in order to perform priority data transmission over two or more MPTCP sockets, the software algorithm of the MPTCP client performs: a) receiving data from the first network device; b) reading and processing information on the priority of received data; c) arranging the received data in at least one program buffer in accordance with the priority information of the received data; d) transfer of received data, ordered in accordance with the order of the data in the software buffer, to the MPTCP software algorithm for transmission to the second network device.
2. A method for priority data transmission over several MPTCP sockets according to claim 1, characterized in that the data are IP packets, the first network device is connected to the same LAN network with the MPTCP client or interacts with the MPTCP client via agreed upon API software interfaces, and data reception is performed via 2G / 3G / 4G / 5G, WI FI, Ethernet, FC or another network protocol from the prior art.
3. The method for priority data transmission over several MPTCP sockets according to claim 1, characterized in that the information about the data priority is the bits of the IP packet header that determine the IP address of the LAN User Device, or the Internet resource URL, or ToS - type of service IPv4 (traffic class IPv6), or DSCP - differentiated services code point, or CoS - class of service, or QoS - quality of service, or the type of application protocol HTTP, RTSP, FTP, DNS or transport layer (TCP, UDP, ICMP), or other bits of the IP packet header applicable to determining the order of transmission of the IP packet along the network route, and the processing of information about the priority of the received data may provide for its change according to the settings of the MPTCP client administrator.
4. A method for priority data transmission over several MPTCP sockets according to claim 1, characterized in that the ordering of received data in at least one software buffer in accordance with information about the priority of the received data is performed by creating at least one software buffer consisting of a set of software data structures - a queue, stack, array, vector or other data structures from the prior art, in which the received data are ordered in accordance with information about their priority.
5. A method for priority data transmission over several MPTCP sockets according to paragraph 1, characterized in that the second network device is connected to the WAN network, and the transmission of received data, ordered in accordance with the order of data in the software buffer, to the MPTCP software algorithm for transmission to the second network device is performed by means of an ordered and sequential call to the API of one or more MPTCP sockets from the set for transmitting received data over the 2G / 3G / 4G / 5G, WI FI, Ethernet, FC protocols.
6. A method for priority data transmission over several MPTCP sockets according to claim 1, characterized in that the reception of data from the first network device, reading and processing of information on the priority of the received data, ordering of the received data in accordance with the information on the priority of the received data and the ordered transmission of the received data to the MPTCP software algorithm for transmission to the second network device is performed by the MPTCP server software algorithm.
7. An MPTCP client MRNET Router for implementing a method of priority data transmission over several MPTCP sockets, the device of which includes antennas and a set of software or software-hardware interfaces for receiving and transmitting data over LAN and WAN communication networks and a software algorithm that creates two or more MPTCP sockets for data transmission, characterized in that its software algorithm provides for: a) receiving data from the first network device; b) setting up priority data transmission parameters; c) the transmission of received data, ordered in accordance with the settings of the priority data transmission parameters, to the MPTCP software algorithm for transmission to the second network device.
8. MPTCP client MRNET Router for performing the method of priority data transmission over several MPTCP sockets according to paragraph 7, characterized in that the data are IP packets, and the software or software-hardware interfaces for receiving and transmitting data over LAN and WAN communication networks are software or electrical connectors SIM, Rj-45, 2G / 3G / 4G / 5G modems, WIFI, USB, SFP.
9. An MPTCP client of the MRNET Router for performing the method of priority data transmission over several MPTCP sockets according to paragraph 7, characterized in that the configuration of the parameters for priority data transmission is performed in the software graphical interface or the command line interface of the MPTCP client administrator of the MRNET Router and provides for determining the order of data transmission, including determining the coefficients of the ToS bit field of the order of transmission of an IP packet, assigning a separate MPTCP socket for data of a MAC network device, or an IP network address, or an ICMP network protocol.
10. An MPTCP client of the MRNET Router for performing the method of priority data transmission over several MPTCP sockets according to claim 7, characterized in that the configuration of the parameters of priority data transmission includes changing the bits of the IP packet header that determine the priority of the IP packet - the IP address of the LAN device, or the Internet resource URL, or ToS - type of service IPv4 (traffic class IPv6), or DSCP - differentiated services code point, or CoS - class of service, or QoS - quality of service, or the type of application protocol HTTP, RTSP, FTP, DNS, VoIP, IPTV or transport layer (TCP, UDP, ICMP), or other bits of the IP packet header applicable to determining the order of transmission of the IP packet.