Communication node and method of routing data packets for client devices

By shifting the NAT task from downstream communication nodes to upstream communication nodes, the performance bottleneck of downstream nodes is resolved, thereby improving data throughput and network performance.

CN120916219APending Publication Date: 2025-11-07TP-LINK INT SHENZHEN CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202511129212.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-08-13
Filing Date
2025-08-12
Publication Date
2025-11-07

AI Technical Summary

Technical Problem

In modern communication networks, the performance of downstream communication nodes is relatively weak, causing NAT processing to become a bottleneck in system performance and affecting the efficiency of data packet routing between client devices and external nodes.

Method used

By transferring NAT-related tasks from weaker downstream communication nodes to stronger upstream communication nodes, the upstream nodes handle NAT tasks on behalf of the downstream nodes. The downstream nodes only perform NAT learning for the initial data packets and synchronize relevant information to the upstream nodes so that the upstream nodes can process subsequent data packets.

Benefits of technology

It increases data throughput, reduces CPU consumption of downstream nodes, avoids performance bottlenecks, and improves overall network performance without increasing hardware costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120916219A_ABST
    Figure CN120916219A_ABST
Patent Text Reader

Abstract

The present disclosure provides a communication node and method for routing data packets for a client device. The communication node comprises: one or more processors; a memory coupled to the processor; computer program instructions stored in the memory, the computer program instructions, when executed by the processor, performing the following actions: obtaining, from a downstream communication node, NAT routing information of data packets transmitted between a client device and an external node at least through the communication node and the downstream communication node; and performing NAT on a subsequent data packet to be transmitted between the client device and the external node based on the NAT routing information.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross Reference to Related Applications

[0002] This application claims priority to U.S. Non-Provisional Patent Application No. 18 / 802,806, filed August 13, 2024, entitled “COMMUNICATION NODE AND METHOD FOR ROUTING DATA PACKETS FOR A CLIENT DEVICE.” The entire disclosure of the above application is incorporated by reference into the disclosure of the present application. TECHNICAL FIELD

[0003] The present disclosure relates to wireless communications, and in particular, to a communication node and method for routing data packets for a client device. BACKGROUND

[0004] With the ever-increasing number of client devices connected to the Internet, the scarcity of available IP addresses has become a significant challenge. Network Address Translation (NAT) technology plays a key role in addressing this issue, allowing multiple client devices to share a common IP address. For example, NAT enables translation between private (internal) IP addresses and public IP addresses, facilitating data packet communication between client devices within a private network and external sites via the Internet.

[0005] In modern communication networks, data packet exchange between client devices and external sites often requires traversing multiple communication nodes along a data routing path. Each communication node can perform specific functions, such as routing, addressing, and security checks, before routing the data packet to the next hop on the routing path. NAT processes are crucial for allowing client devices with private IP addresses to communicate on the Internet using a shared public IP address, and must be efficiently managed across these communication nodes.

[0006] There is a need for an improved mechanism for routing data packets for a client device across communication nodes while supporting NAT technology. SUMMARY

[0007] In view of the above problems, the present disclosure provides a communication node and method for routing data packets for a client device.

[0008] According to one embodiment of the disclosure, there is provided a communication node for routing data packets for a client device, comprising: one or more processors; a memory coupled to at least one of the one or more processors; and a set of computer program instructions stored in the memory. The computer program instructions, when executed by at least one of the one or more processors, perform the following actions: obtaining, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between the client device and an external node via at least the communication node and the downstream communication node; and performing, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node.

[0009] According to another embodiment of the disclosure, there is provided a method for routing data packets for a client device, the method implemented in a communication node, comprising: obtaining, from a downstream communication node, NAT routing information for data packets communicated between the client device and an external node via at least the communication node and the downstream communication node; and performing, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node.

[0010] According to yet another embodiment of the disclosure, there is provided a computer program product for routing data packets for a client device, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor of a communication node to cause the processor to: obtain, from a downstream communication node, NAT routing information for data packets communicated between the client device and an external node via at least the communication node and the downstream communication node; and perform, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node.

[0011] According to still another embodiment of the disclosure, there is provided a data routing system comprising at least an upstream communication node and a downstream communication node. Each of the upstream communication node and the downstream communication node comprises: one or more processors; a memory coupled to at least one of the processors; and a set of computer program instructions stored in the memory, the set of instructions, when executed by at least one of the processors, performing a series of actions. The downstream communication node is configured to generate NAT routing information for data packets communicated between a client device and an external node via at least the upstream communication node and the downstream communication node; and provide the NAT routing information to the upstream communication node. The upstream communication node is configured to obtain, from the downstream communication node, the NAT routing information; and perform, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node on behalf of the downstream communication node.

[0012] Based at least on the above embodiments of the present disclosure, an improved mechanism can be implemented for routing data packets for client devices through a plurality of communication nodes of a data routing network while effectively utilizing the capabilities of the communication nodes, addressing latency caused by a less capable downstream communication node, and accordingly speeding up the transmission of data traffic.

[0013] According to embodiments of the present disclosure, an improvement in data throughput is achieved by shifting NAT-related tasks from less capable downstream communication nodes to more capable upstream communication nodes. In a conventional data routing network, the bottleneck of the overall system performance is limited by the capabilities of the downstream communication nodes. However, in the present disclosure, the more demanding NAT-related tasks are shifted to the upstream communication nodes, such that data packets are not stalled at the downstream communication nodes waiting for NAT processing, thereby improving the overall data throughput of the system. BRIEF DESCRIPTION OF DRAWINGS

[0014] The above and other objects, features and advantages of the present disclosure will become more apparent from the following detailed description of embodiments of the present disclosure taken in conjunction with the accompanying drawings. The drawings provided herein are for illustration purposes only and constitute part of the detailed description of the present disclosure and not a limitation of the present disclosure. In the drawings, like reference numerals refer to like objects, steps or elements, unless otherwise specified. The drawings provided herein are used for illustrative purposes only and constitute part of the detailed description of the present disclosure and not a limitation of the present disclosure. In the drawings, like reference numerals refer to like objects, steps or elements, unless otherwise specified.

[0015] Figure 1 An exemplary architecture for routing data packets for client devices is shown in accordance with embodiments of the present disclosure;

[0016] Figure 2A An exemplary schematic diagram for routing downlink data packets for client devices is shown in accordance with embodiments of the present disclosure;

[0017] Figure 2B An exemplary schematic diagram for an example of network address translation (NAT) routing information for routing downlink data packets for client devices is shown in accordance with embodiments of the present disclosure;

[0018] Figure 3 An exemplary schematic diagram for routing uplink data packets for client devices is shown in accordance with embodiments of the present disclosure;

[0019] Figure 4 An exemplary schematic diagram for routing data packets for client devices in a data routing network including upstream and downstream routers is shown in accordance with embodiments of the present disclosure;

[0020] Figure 5An exemplary schematic diagram showing routing of data packets for a client device in a cellular router comprising a cellular module and a Wi-Fi routing module is shown;

[0021] Figure 6 Another exemplary architecture for routing data packets for one or more client devices is shown, in accordance with an embodiment of the present disclosure;

[0022] Figure 7 A flowchart of a computer-implemented method for routing data packets for a client device is shown, in accordance with an embodiment of the present disclosure; and

[0023] Figure 8 is an exemplary block diagram showing a computing device, in accordance with an embodiment of the present disclosure. DETAILED DESCRIPTION

[0024] The technical solutions of the present disclosure will be described clearly and completely below in conjunction with the accompanying drawings. Obviously, the described embodiments are part of the embodiments of the present disclosure, rather than all the embodiments. Based on the embodiments in the present disclosure, all other embodiments obtained by those of ordinary skill in the art without making creative efforts fall within the scope of protection of the present disclosure.

[0025] In the description of the present disclosure, it should be noted that terms such as "center", "upper", "lower", "left", "right", "vertical", "horizontal", "inner", "outer" and the like indicate the orientation or positional relationship shown in the drawings, and are only for the convenience of describing the present disclosure and simplifying the description, and do not indicate or imply that the devices or elements referred to must have a particular orientation. In addition, terms such as "first", "second", "third" and the like are only for the purpose of description and cannot be understood as indicating or implying relative importance. Similarly, the words "one", "a" or "the" and the like do not represent quantity limitation, but represent the existence of at least one. The words "include" or "contain" and the like mean that the elements or objects before them encompass the elements listed after them and their equivalents, without excluding other elements or objects. The words "connected" or "linked" and the like are not limited to physical or mechanical connections, but can also include electrical connections, whether direct or indirect.

[0026] In the description of the present disclosure, it should be noted that unless otherwise explicitly specified and limited, the terms "mounting", "linking" and "connecting" should be understood broadly. For example, they can be fixed connection, detachable connection or integral connection; can be mechanical connection, or electrical connection; can be direct connection, or indirect connection through intermediate medium, or connection inside two elements. Those of ordinary skill in the art can understand the meaning of the above terms in the present disclosure according to the specific circumstances.

[0027] In addition, the technical features involved in the different embodiments of the present disclosure described below can be combined with each other as long as there is no conflict between them.

[0028] In the present disclosure, an AP (interchangeably referred to as a wireless access point (WAP)) is a communication device capable of communicating with a non-AP (e.g., a station (STA) or a client device) in a WLAN and allowing the non-AP to connect to a wired network. The AP is usually connected to a router (via a wired network) as a standalone device, but can also be integrated into or used in a router. Also, in the present disclosure, a non-AP (e.g., a client device or a station, interchangeably referred to as a STA) is a communication device capable of communicating with an AP to obtain various communication services such as voice, video, packet data, messaging, broadcasting, etc. The STA can be any device containing an IEEE 802.11-compliant medium access control (MAC) and a physical layer (PHY) interface to a wireless medium (WM). For example, in a WLAN environment, the STA can be a notebook computer, a desktop personal computer (PC), a personal digital assistant (PDA), an access point, or a Wi-Fi phone. The STA can be fixed or mobile. In a WLAN environment, the terms "STA", "client device", "wireless client", "user", and "user device" are often used interchangeably.

[0029] In the present disclosure, a STA in a WLAN can work as an AP in different situations, and vice versa. This is because in the context of IEEE 802.11 (Wi-Fi) technology, a communication device can include both STA hardware components and AP hardware components. In this way, the communication device can switch between STA mode and AP mode based on actual WLAN conditions and / or requirements. In the following various embodiments, a non-AP STA can refer to a STA in a WLAN that is not implemented as an AP.

[0030] Figure 1 An exemplary architecture for routing data packets for a client device according to embodiments of the present disclosure is shown.

[0031] As Figure 1As shown, a network topology 100 is depicted showing three client devices 101a, 101b, and 101c (collectively, client devices 101), such as smartphones, tablets, computers, and other network-capable devices, connected to a downstream communication node 102 (also referred to as a downstream node) via wired or wireless interfaces, such as Ethernet interfaces and Wi-Fi interfaces (e.g., 2.4G, 5G, and other available bands). The downstream communication node 102, in turn, is connected to an upstream communication node 103 (also referred to as an upstream node or simply a communication node). The upstream communication node 103 is further connected to an external node 105, which can be, for example, an external website or an external server, via the Internet 104. The network topology 100 facilitates the exchange of data packets between the client devices 101, which have private IP addresses, and the external node 105 through the upstream communication node 103 and the downstream communication node 102, and possibly other communication nodes not shown in Figure 1

[0032] However, the network topology 100 described above can face the following challenges. In the network topology 100, multiple communication nodes, such as the upstream communication node 103 and the downstream communication node 102, are required to successfully transmit uplink packets from the client devices 101 to the external node 105, or downlink packets from the external node 105 to the client devices 101. However, the performance of the downstream communication node 102 can be weaker than that of the upstream communication node 103. The downstream communication node 102, particularly when performing NAT translation on data packets, can consume a large amount of CPU resources, thus becoming a bottleneck for the overall system performance.

[0033] For example, for downlink traffic, along a segment between the upstream communication node 103 and the client devices 101 in the data routing path, when routing a downlink data packet originating from the external node 105 and intended for the client devices 101, the downstream communication node 102 needs to perform NAT translation on the destination IP address of the downlink packet before routing the packet to the client devices 101. Similarly, for uplink traffic, along a segment between the client devices 101 and the upstream communication node 103 in the data routing path, when routing an uplink data packet originating from the client devices 101 and intended for the external node 105, the downstream communication node 102 needs to perform NAT translation on the source IP address of the uplink packet before routing the packet to the upstream communication node 103.

[0034] In a conventional method for routing data packets along a data routing path that includes multiple communication nodes, the NAT-related processing that needs to be performed by the weaker-performing downstream node can exceed the processing capacity of the downstream node, resulting in a bottleneck for the overall system.

[0035] ​At least in view of the aforementioned problems, the general concept of this disclosure is to leverage the superior performance of upstream nodes to process uplink / downlink data packets on behalf of downstream nodes, such as performing NAT-related tasks on data packets. For example, a downstream node may first learn NAT-related information (also referred to herein as "NAT routing information") and then share that information with its upstream node so that the upstream node can take over NAT-related tasks on behalf of the downstream node. In an illustrative example, a downstream node may learn NAT-related information for initial data packets routed between its connected client device and its upstream node, and the learned NAT-related information may be provided from the downstream node to the upstream node so that the upstream node can use this NAT-related information to process packets subsequently transmitted between the client device and external nodes via communication nodes.

[0036] It's important to note that NAT-related information can be generated in various ways, as long as it contains useful clues that help upstream nodes take over NAT task execution. In one example, NAT-related information could indicate NAT-related changes made to the initial data packet, such as NAT changes to the source or destination IP of the initial data packet. By offloading NAT-related tasks to upstream nodes, downstream nodes can bypass CPU-intensive NAT tasks when forwarding subsequent packets between their connected client devices and their upstream nodes, thus saving CPU overhead, avoiding becoming a performance bottleneck, and improving overall network performance (such as the system's overall data throughput).

[0037] like Figure 1 As shown, downstream communication node 102 can be configured to generate NAT routing information for initial data packets transmitted between client device 101 and external node 105 via at least downstream communication node 102 and upstream communication node 103. For example, NAT routing information can be generated by downstream communication node 102 based on one or more NAT-related changes made to the initial data packets when routing data packets between client device 101 and upstream communication node 103. In other words, initially, for data packets that need to be routed between the client device and the external node, the downstream node is responsible for learning the necessary processing that should be performed on these packets when routing them between the client device and the upstream node. This includes NAT-related changes (also called NAT changes) made to the data packets during the NAT task. The downstream node can process and route the initial data packets between the client device and the upstream node independently, while learning the NAT-related changes made to these initial data packets.

[0038] Subsequently, downstream communication node 102 can be configured to provide NAT routing information to upstream communication node 103, which inFigure 1 The NAT routing information is shown in the middle as being synchronized to the upstream communication node 103. Accordingly, the upstream communication node 103 can be configured to obtain this NAT routing information from the downstream communication node 102. In other words, the downstream node can synchronize and share its learned NAT-related changes to the upstream node. This synchronization ensures that the upstream node is aware of the specific NAT-related changes (e.g., NAT-related changes made to the destination IP or source IP of the packet) that the downstream node should make to the data packet, so that the upstream node can then implement this NAT-related change on behalf of the downstream node.

[0039] Finally, based on this NAT routing information, the upstream communication node 103 can be configured to perform NAT on behalf of the downstream communication node 102 for subsequent data packets to be communicated between the client device 101 and the external node 105. For example, the initial data packet and the subsequent data packets can correspond to the same UDP or TCP session, and thus share the same tuple consisting of source IP, source port, destination IP, destination port, and protocol. In this case, if the subsequent data packets correspond to the same UDP or TCP session as the initial data packet, the subsequent data packets will match the information recorded in the NAT routing information (e.g., certain data fields of the subsequent data packets match the information recorded in the NAT routing information), and the overhead of performing NAT can be offloaded to the upstream node. In other words, when the upstream node encounters a data packet with attributes that match the attributes recorded in the NAT routing information (e.g., the tuple consisting of source IP, source port, destination IP, destination port, and protocol matches), it can perform the NAT processing on behalf of the downstream node. The downstream communication node 102 is now relieved of the NAT processing burden and can simply forward the NAT-converted data packet to the next hop, meaning that the downstream communication node 102 transparently forwards the subsequent data packets between the client device 101 and the upstream communication node 103 without performing additional NAT on the subsequent data packets.

[0040] This approach allows the downstream communication node 102 to bypass its NAT task and directly forward the data packet without additional NAT processing, as Figure 1 The bypassed “NAT task” is indicated by the dashed box in the middle. When the subsequent data packet arrives at the upstream communication node 103, it references the stored NAT routing information and successfully takes over the NAT task on behalf of the downstream communication node 102, as Figure 1The arrow marked as "offload" indicates. Based on the synchronization of the NAT-related information recorded by the downstream communication node 102, the upstream communication node 103 can take over the CPU-intensive NAT processing of the subsequent data packets, ensuring that the downstream communication node 102 will not become a bottleneck. This method not only saves the CPU resources of the downstream node, but also reduces the delay caused thereby. By utilizing the processing capacity of the upstream node, the problem of NAT processing bottleneck in the data routing network can be effectively solved.

[0041] In addition, no additional hardware acceleration engine or hardware cost is required. The present disclosure employs a software mechanism to transfer CPU-intensive tasks from low-performance nodes to high-performance nodes. This method can improve the overall performance of the network without additional hardware costs, making it a cost-effective network optimization solution.

[0042] It should be noted that, Figure 1 The number of client devices and communication nodes and the specific connection topology shown in FIG. 1 are exemplary. There can be different numbers of client devices, additional communication nodes facilitating data packet routing between clients and external nodes, and different connection topologies than those shown in FIG. 1. The present disclosure does not impose restrictions on the specific configuration of the network topology or interconnections. Figure 1

[0043] The term "node" used in the context of the present disclosure can refer to various granularities of network devices. As an example, a node can represent a device-level entity, such as a router. In a scenario where multiple routers are connected in cascade, each router acts as an independent node in the network system, as will be described below with respect to FIG. 2. Figure 4 As another example, the granularity of a node can also be at the chip or module level. In a scenario where a cellular router can have a dedicated 4G / 5G chip for providing 4G / 5G access capability and a Wi-Fi routing chip for providing local area network (LAN) extension functionality, a node can correspond to individual chips of the cellular router, as will be described below with respect to FIG. 3. Figure 5

[0044] In addition, the present disclosure relates to packet routing along multiple communication nodes, but does not impose restrictions on the physical medium through which the nodes are interconnected. The nodes can be connected through a variety of physical media, including but not limited to: Wi-Fi connection for wireless communication, Ethernet cable for wired LAN connection, USB interface for general and energy-efficient data transmission, and PCIe (Peripheral Component Interconnect Express) interface for high-speed data communication, etc.

[0045] Figure 2A An exemplary schematic diagram for routing downlink data packets for client devices according to an embodiment of the present disclosure is shown.

[0046] As​​Figure 2A As shown, the described network topology 200 involves the transmission of a downlink data packet from an external node 205, via the Internet 204, through two communication nodes 203 and 202, and finally to a client device 201. It is noted that elements 201-205 are substantially the same as elements 101-105 in Figure 1 , and detailed descriptions are omitted for brevity. In Figure 2A , the client device 201 has a private IP address of 192.168.1.100, and the downstream communication node 202 has an IP address of 10.0.0.100.

[0047] The processing of the downlink data packet will be described from two perspectives: the NAT entry learning and synchronization phase (as shown in Phase 1), and the data packet acceleration processing phase (as shown in Phase 2).

[0048] Phase 1: NAT Entry Learning and Synchronization

[0049] As shown in Phase 1 of Figure 2A , the downstream communication node 202 initially performs NAT processing on the downlink data packet by itself. Specifically, for an incoming packet that arrives at the downstream communication node 202 (which originated from the external node 205 and was routed to the downstream communication node 202 via the upstream communication node 203), the source IP and source port are 8.8.8.8:1000, the destination IP and destination port are 10.0.0.100:2000, and the protocol is UDP. In order to ensure that the packet successfully reaches the client device (which uses a private IP of 192.168.1.100), the destination IP needs to be modified to 192.168.1.100, as shown by the “destination IP” before / after NAT changes. After completing this NAT processing and learning the required NAT-related changes for this packet, the downstream communication node 202 can then synchronize and share the NAT routing information related to this NAT change to the upstream communication node 203. This NAT routing information will then be used by the upstream communication node 203 for the subsequent NAT processing of downstream packets, as described in Phase 2.

[0050] Phase 2: Data Packet Acceleration Processing

[0051] As shown in Phase 2 of Figure 2AAs shown in stage 2, at point A, for subsequent downlink packets (e.g., those with the same tuple of source IP, source port, destination IP, destination port, and protocol as the downlink packet initially processed by the downstream node in stage 1), the upstream communication node 203 can use the NAT routing information synchronized from the downstream node 203 to perform the NAT processing that would otherwise be performed by the downstream communication node 202. At point B, the NAT task operation at the upstream communication node 203 results in the generation of a NAT- translated packet, in which the destination IP address has been modified. As a result, at point C, upon receiving the NAT-translated packet, the downstream communication node 202 can directly forward it to the client device 201 without further NAT-related changes, as indicated by the dashed box representing the bypassed NAT task.

[0052] In embodiments of the present disclosure, to allow the synchronization of the NAT routing information for downlink traffic, the data packet initially processed by the downstream communication node 202 should be a downlink data packet, and the one or more NAT-related changes indicated by the NAT routing information should include at least a change to the destination IP of the downlink data packet. Accordingly, to perform NAT on a subsequent downlink data packet to be communicated between the client device 201 and the external node 205 based on the obtained NAT routing information, the upstream communication node 203 performs the following actions.

[0053] First, the upstream communication node 203 obtains a subsequent downlink data packet, which originates from the external node 205 and is routed to the upstream communication node 203. Subsequently, in response to a match between the subsequent downlink data packet and the NAT routing information (e.g., certain fields of the subsequent downlink data packet match the information contained in the NAT routing information), the upstream communication node 203 generates a NAT-translated downlink packet by replacing the destination IP of the subsequent downlink data with the NAT-translated destination IP based on the change to the destination IP of the initially processed downlink data packet indicated by the NAT routing information. Finally, the upstream communication node 203 transmits the NAT-translated downlink packet to the downstream communication node 202 for forwarding to the client device 201.

[0054] According to embodiments of the present disclosure, by utilizing the excess processing capacity of the upstream node to pre-process traffic for the downstream node, the downstream node is relieved of the CPU-intensive NAT processing task, thereby avoiding becoming a performance bottleneck in the data routing system, improving the overall network performance, and speeding up the routing of subsequent data packets.

[0055] Figure 2BAn exemplary diagram showing an example of NAT routing information for routing downlink data packets for a client device is shown in accordance with embodiments of the present disclosure.

[0056] As Figure 2B shown and described in connection with Figure 2A , the NAT routing information contains information about the NAT-related changes made to the downlink packets. For example, for a downlink data packet with a source IP and source port of 8.8.8.8: 1000, a destination IP and destination port of 10.0.0.100: 2000, and a UDP protocol, the destination IP should be changed from 10.0.0.100 to 192.168.1.100. Accordingly, for a subsequent downlink data packet also with a source IP and source port of 8.8.8.8: 1000, a destination IP and destination port of 10.0.0.100: 2000, and a UDP protocol, the destination IP should also be changed from 10.0.0.100 to 192.168.1.100. Thus, the NAT routing information synchronized from the downstream node containing the NAT-related change to the destination IP can be effectively used by the upstream node for the NAT processing of the subsequent downlink data packet.

[0057] Optionally, the NAT routing information synchronized from the downstream node not only indicates the change of the destination address involved in the NAT processing (indicated in the “NATed IP: Port” column), but also can indicate the modification of the MAC address (indicated in the “Translated MAC Address” column) and the correct client interface (indicated in the “Client Interface” column) for forwarding the downlink data packet to the correct client device. It is noted that in the conventional method, the MAC address modification and the client interface lookup operation are supposed to be performed by the downstream node itself, which puts a great burden on its limited processing capability.

[0058] Specifically, in the conventional method, the downstream communication node 102, when routing data packets between the client device 101 and the upstream communication node 103, for downlink traffic, needs to perform tasks including at least: (1) performing NAT translation on the destination IP address of a downlink packet originating from an external node and intended for the client device; (2) looking up a routing table to find out the appropriate client interface to forward the downlink packet to the client interface connected to the client device; (3) modifying the source MAC address and the destination MAC address of the downlink packet; and (4) delivering the downlink packet to the appropriate client interface for transmission to the client device. However, in accordance with embodiments of the present disclosure, at least part of the tasks of the downstream communication node 102 can be offloaded to the upstream communication node 103, thereby reducing the CPU consumption of the downstream node.

[0059] According to a first example, in addition to the Layer 3 NAT operation, the upstream communication node 203 can also take over the Layer 2 MAC address modification.

[0060] First, the upstream communication node 203 obtains from the downstream communication node 202 the MAC address related information of the data packet which is initially processed by the downstream communication node 202 itself. Specifically, the MAC address related information is generated by the downstream communication node 202 based on one or more MAC address related modifications made to the data packet when routing the data packet between the client device 201 and the upstream communication node 203. For example, the destination MAC address of the downlink packet should be modified to "MAC A" of the client device 201 in order to successfully reach the client device 201. Then, the upstream communication node 203 performs one or more modifications to the MAC address of the subsequent data packet on behalf of the downstream communication node 202 based on the MAC address related information obtained from the downstream communication node 202.

[0061] In this example, in order to ensure that the downlink packet successfully reaches the client device 201, the destination MAC address should be modified to "MAC A" of the client device 201. Therefore, the downstream communication node 202 can synchronize the modification made in its own MAC address modification process with the upstream communication node 203. This enables the upstream communication node 203 to share the processing burden required for the MAC address modification, thereby reducing the CPU consumption of the downstream communication node 202.

[0062] According to a second example, the upstream communication node 203 can also tag the subsequent data packet with the appropriate client interface, simplifying the task of the downstream communication node 202 to find the correct client interface.

[0063] In this example, the client device 201 is connected to one of the multiple client interfaces (e.g. Ethernet interface, 2.4G Wi-Fi interface, 5G Wi-Fi interface, etc.) of the downstream communication node 202. In the traditional approach, the downstream communication node 202 usually needs to look up the routing table to determine the appropriate interface for forwarding the downlink packet to the client device. However, in the present disclosure, the downstream communication node 202 can record the client interface when initially processing the data packet and synchronize this information with the upstream communication node 203. Accordingly, the NAT routing information shared from the downstream communication node 202 also indicates the correct client interface for communicating data packets for the client device 201. In this case, based on the obtained NAT routing information, the upstream communication node 203 tags the subsequent data packet with the indicated client interface of the downstream communication node 202, so that the downstream communication node 202 does not have to look up the routing table to find the correct client interface.

[0064] This allows the upstream node to share the burden of finding the correct client interface, further reducing CPU consumption of the downstream node, preventing the downstream node from becoming a performance bottleneck, and improving data throughput.

[0065] Figure 3 An exemplary diagram for routing uplink data packets for a client device is shown in accordance with embodiments of the present disclosure.

[0066] As Figure 3 shown, the described network topology 300 involves uplink data packets originating from a client device 301, passing through two communication nodes 302 and 303, and finally reaching an external node 305 via the Internet 304. It is noted that, Figure 3 elements 301-305 in Figure 1 elements 101-105 in Figure 2A elements 202-205 in are substantially the same, and detailed descriptions are omitted for brevity.

[0067] Similar to Figure 2A , the processing of uplink data packets will also be described from the perspective of two stages: a NAT entry learning and synchronization stage (as shown in Stage 1) and a data packet acceleration processing stage (as shown in Stage 2).

[0068] Stage 1: NAT entry learning and synchronization

[0069] As shown in Stage 1 of Figure 3 , the downstream communication node 302 initially performs NAT processing on the uplink data packets by itself. Specifically, for an incoming packet that arrives at the downstream communication node 302 (which originates from the client device 301), the source IP and source port are 192.168.1.100:1000, the destination IP and destination port are 8.8.8.8:2000, and the protocol is UDP. In order for the data packet from the client device 301 using the private IP address 192.168.1.100 to be successfully transmitted externally, the source IP of the packet should be changed from the client's private address to the IP address 10.0.0.100 of the downstream communication node 302, as shown by the contents of the "source IP" before / after NAT change. After completing the NAT processing and learning the required NAT change for this packet, the downstream communication node 302 can then synchronize and share the NAT routing information related to this NAT change to the upstream communication node 303, which will be used by the upstream communication node 303 for the subsequent NAT processing of uplink packets, as described in Stage 2.

[0070] Stage 2: Data packet acceleration processing

[0071] As Figure 3As shown in stage 2, at point A, for a subsequent uplink packet, downstream communication node 302, upon receiving the subsequent data packet from client device 301, can forego NAT-related processing and directly forward it to upstream communication node 203, as it knows that upstream communication node 303 will handle the NAT-related changes on behalf of downstream communication node 302. This approach defers the NAT processing (as shown by the dashed box representing the bypassed NAT task) as shown between point A and point B. Subsequently, as shown at point C, upstream communication node 303 can perform the NAT processing normally performed by downstream communication node 302 using the NAT routing information previously synchronized from downstream communication node 302, thereby generating a NAT- translated packet. Accordingly, the NAT-translated packet can be transmitted from upstream communication node 303 to external node 305 via Internet 304.

[0072] In embodiments of the present disclosure, to allow synchronization of the NAT routing information for uplink traffic, the data packet that is initially processed by downstream communication node 302 on its own should be an uplink data packet, and the one or more NAT-related changes indicated by the NAT routing information should include at least a change to the source IP of the uplink data packet. Accordingly, to perform NAT on a subsequent data packet to be transmitted between client device 301 and external node 305 based on the obtained NAT routing information, upstream communication node 303 performs the following actions.

[0073] First, upstream communication node 303 obtains a subsequent uplink data packet that originates from client device 301 and is forwarded to upstream communication node 303 via downstream communication node 302. It is noted that downstream communication node 302 forwards the subsequent uplink data packet directly to upstream communication node 303 without making NAT-related changes to the subsequent uplink data packet. Subsequently, in response to a match between the subsequent uplink data packet and the NAT routing information (e.g., a particular field of the subsequent uplink data packet matches the information contained in the NAT routing information), upstream communication node 303 generates a NAT-translated uplink packet by replacing the source IP of the subsequent uplink data with a NAT-translated source IP based on the change to the source IP of the uplink data packet. Finally, upstream communication node 303 provides the NAT-translated uplink packet to external node.

[0074] According to embodiments of the present disclosure, by deferring or shifting the performance of the NAT operations to the upstream node, CPU consumption on the downstream node can be alleviated, preventing it from becoming a performance bottleneck and improving the efficiency of data packet routing. By offloading the NAT processing task, the downstream node can focus on the direct transmission of data packets without incurring the computational overhead associated with the NAT operations.

[0075] It is noted that in addition to the NAT handling for uplink packets described above, the downstream communication node 302 can also learn the necessary MAC address modification during its own handling of the initial uplink data packet, and synchronize this information to the upstream communication node 303, similar to the description in Figure 2B

[0076] Figure 4 An exemplary schematic diagram of routing data packets for a client device in a data routing network comprising upstream and downstream routers is shown according to embodiments of the present disclosure.

[0077] As Figure 4 The network topology of the data routing network 400 shows a cascading connection between the downstream routers 402 and the upstream routers 403, which are arranged in different layers of the hierarchical structure of the data routing network 400. These routers are responsible for routing data packets (including uplink and downlink) between the client devices 401a-c and the external node 405 via the Internet 404. The specific operations of the downstream routers 402 and the upstream routers 403 can refer to the handling of the downstream and upstream communication nodes described in Figures 1-3 For brevity, these operations are not repeated.

[0078] For example, in a network topology formed by a cascading of multiple routers, the NAT handling (and optionally, efficient MAC address modification and client interface lookup) can be performed efficiently across different routers. For example, the efficient NAT handling can be based on the NAT routing information learned and recorded by the downstream routers 402 when they route and handle the initial uplink or downlink packets between the client devices 401 and the upstream routers 403. Subsequently, the NAT routing information is shared and synchronized to the upstream routers 403, so that the upstream routers 403 handle the subsequent uplink or downlink packets to be transmitted between the client devices 401 and the external node 405 on behalf of the downstream routers 402. In this way, the NAT task for the subsequent uplink or downlink packets can be omitted or bypassed at the downstream routers 402, as shown by the dashed box representing the "NAT task" being bypassed in Figure 4 as shown by the solid box representing the "NAT task" being taken over in Figure 4 This prevents the low-performance routers in the lower layers of the hierarchical structure of the data routing network from becoming a bottleneck of the data routing network.

[0079] It is noted that, as Figure 4 ​As shown, the upstream router 403 can also be connected to multiple client devices 40 Id and 40 le. If necessary, NAT technology can also be implemented at the upstream router 403 to address the issue of IP address scarcity. In this case, it can be understood that when the NAT task of the downstream router 402 is offloaded to the upstream router 403, the upstream router 403, if its performance is sufficient, not only needs to complete the NAT task that should have been performed by the downstream router 402, but also needs to complete its own NAT task.

[0080] It should be noted that, Figure 4 The hierarchy structure depicting the data routing network 400 shown in FIG. 4 is only exemplary. The number of layers of the hierarchy structure, the number of routers, and the arrangement of different routers in various layers are provided for illustrative purposes. Embodiments of the present disclosure can be applied to different hierarchy structures, and can accommodate more routers distributed in more layers. It is understood by those skilled in the art that the proposed method can be implemented in a scenario where the downstream router has insufficient performance while the upstream router has excess performance capacity. The key requirement is that the downstream router should synchronize the NAT information it has learned and recorded during its own NAT processing with its upstream router for use by the upstream router when subsequently processing subsequent data packets on behalf of the downstream router.

[0081] The implementation of the present disclosure in a hierarchical network topology provides several technical advantages, including improved network efficiency, reduced data packet routing delay, and the ability to balance the computational load among different routers of the hierarchical network topology. This approach is particularly advantageous for networks with routers of different performance capabilities, where high-performance routers in higher layers of the hierarchy structure can help low-performance routers in lower layers, thereby improving the overall performance (such as data throughput).

[0082] Figure 5 An exemplary schematic diagram of routing data packets for client devices in a cellular router comprising a cellular module and a Wi-Fi routing module is shown according to embodiments of the present disclosure.

[0083] Figure 5 The connection topology 500 described in FIG. 5 comprises a cellular router 504 having a downstream Wi-Fi routing module 502 and an upstream cellular module 503 (such as an LTE / 5G module). Specifically, the cellular router 504 is an advanced telecommunication device, such as an LTE / 5G router, which is capable of providing Internet access by connecting to a cellular network and acting as a bridge between the cellular network infrastructure 505 and client devices 501 that need Internet access.

[0084] The Wi-Fi routing module 502 and the cellular module 503 are connected via PCI, USB or other interconnects within the cellular router 504, and each module can be implemented in the form of respective chips, circuits and units, etc., and is responsible for routing data packets (including uplink and downlink) between the client device 501 and external network entities 505 (e.g., cellular network infrastructure such as base stations). The specific operations of the Wi-Fi routing module 502 and the cellular module 503 can refer to the processing of upstream and downstream nodes described in Figures 1-3 For brevity, these operations are not repeated.

[0085] It is known that modern routers are increasingly providing multiple access methods such as xDSL, LTE / 5G, fiber and Ethernet access, and are becoming more modular to better integrate resources. Different access methods usually use corresponding chips and systems to implement their access functions. For example, a typical LTE / 5G router includes an LTE / 5G module responsible for providing LTE / 5G access functions and a Wi-Fi routing module responsible for providing routing and Wi-Fi access functions. In practice, manufacturers can use a Wi-Fi routing module with lower CPU performance to reduce product costs. This can lead to a situation where the LTE / 5G module is over-performing but the Wi-Fi routing module is under-performing, causing the amount of data from the LTE / 5G module to the wireless client connected to the Wi-Fi routing module to exceed the processing capacity of the Wi-Fi routing module, thereby causing a bottleneck on the data routing path between the cellular network infrastructure and the client device, and failing to achieve the peak performance that the entire cellular router can achieve.

[0086] According to the present disclosure, and as shown in Figure 5 Taking the downlink traffic handled by the cellular router 504 as an example, the data packet modification work (such as NAT processing of data packets, and optionally MAC address modification and client interface tagging of data packets) that the Wi-Fi routing module 502 would normally perform can be pre-processed by the upstream cellular module 503, so that when the data packet is passed to the Wi-Fi routing module 502, it is already a modified data packet. Then, the Wi-Fi routing module 502 only needs to forward this data packet directly to the Wi-Fi interface for transmission to the Wi-Fi client device 501, effectively reducing the CPU load on the Wi-Fi routing module 502 and improving the network performance of the downlink traffic from the cellular network 505 to the Wi-Fi client device 505.

[0087] In particular, in the cellular router 504, efficient NAT processing (and optionally, efficient MAC address modification and client interface lookup) can be performed across different modules of the router. For example, efficient NAT processing can be based on NAT routing information learned and recorded by the Wi-Fi routing module 502 as it routes and processes initial uplink or downlink packets between the client device 501 and the cellular module 503. Subsequently, the NAT routing information is shared and synchronized to the cellular module 503 so that the cellular module 503 handles subsequent uplink or downlink packets to be communicated between the cellular network 505 and the Wi-Fi client 501 on behalf of the Wi-Fi routing module 502. In this way, the NAT task for subsequent uplink or downlink packets can be omitted or bypassed at the Wi-Fi routing module 502, as Figure 5 The bypassed "NAT task" is represented by the dashed box in Figure 5 The taken-over "NAT task" is represented by the solid box in

[0088] Although Figure 5 A single client device is shown, but it is understood that multiple client devices can connect to the cellular router for Internet access. These client devices can connect to the cellular router through wired or wireless interfaces. The cellular router is designed to accommodate multiple client devices and provide them with Internet access through appropriate wired or wireless interfaces. The present disclosure does not impose any restriction on how the client devices connect to the cellular router.

[0089] This implementation allows the cellular router to efficiently perform NAT processing (and optionally, MAC address modification and client interface lookup), thereby avoiding the bottleneck caused by a low-performance Wi-Fi routing module. The cellular module, which has excess performance, takes over the NAT and other tasks that the Wi-Fi routing module would otherwise struggle to handle, thereby improving overall network performance (such as data throughput) and enabling efficient data packet routing.

[0090] Figure 6 Another exemplary architecture for routing data packets for one or more client devices according to embodiments of the present disclosure is shown;

[0091] Figure 6The connection topology 600 described in FIG. 6 includes an upstream communication node 603 connected to two downstream nodes 602a and 602b, with IP addresses of 10.0.0.100 and 10.0.0.200, respectively. In addition, the downstream communication node 602a is connected to two client devices 601a and 601b, with private IP addresses of 192.168.1.100 and 192.168.1.200. Through the downstream communication node 602a and the upstream communication node 603, the clients 601a-601b exchange data packets with an external node 605 via the Internet 604, including uplink and downlink traffic.

[0092] Similarly, the downstream communication node 602b is connected to two client devices 601c and 601d, with private IP addresses of 192.168.0.100 and 192.168.0.200. Through the downstream communication node 602b and the upstream communication node 603, the clients 601c and 601d also exchange data packets with the external node 605 via the Internet 604, including uplink and downlink traffic.

[0093] In a conventional approach, the downstream node 602a would perform NAT operations when routing data between the clients 601a-601b and the upstream communication node 603. Similarly, the downstream node 602b would also need to perform NAT operations when routing data between the clients 601c-601d and the upstream communication node 603. However, in the present disclosure, the downstream nodes 602a and 602b can learn and record the NAT-related changes they perform and pass this information to the upstream communication node 603 in the form of NAT routing information. This allows the upstream communication node 603 to maintain and generate a list of NAT-related changes based on the information synchronized from the downstream nodes 602a and 602b, thereby performing NAT operations for subsequent packets that would normally be performed by the downstream nodes 602a and 602b.

[0094] In particular, in the connection topology 600, the upstream communication node 603 is responsible for maintaining NAT entries for its downstream nodes 602 so that it can take over the NAT task of its downstream nodes 602. The downstream nodes 602a and 602b can delegate the NAT operation to the upstream communication node 603 by synchronizing the NAT routing information indicating the NAT-related changes made to the packets. In turn, the upstream communication node 603 can obtain the NAT routing information from its downstream nodes 602a and 602b and generate a plurality of NAT routing entries for the data packets communicated between the client device 601 and the external node 605 based on the NAT routing information received from the downstream nodes 602a and 602b. In this way, the upstream communication node 603 maintains a comprehensive list of NAT entries that encompass the necessary modifications to the data packets originating from or destined for the client device. With the offloading of the NAT operation, the downstream nodes 602a and 602b can efficiently forward the data packets without performing the CPU-intensive NAT processing, enabling the downstream nodes to operate without becoming a bottleneck.

[0095] As Figure 6 illustrated and indicated by reference number 606, the list of NAT entries is generated and maintained by the upstream communication node 603, which integrates the NAT change information for the data packets of the client devices served by the downstream nodes 602 connected to the upstream communication node 603. For example, for downlink traffic, the list indicates the destination addresses before and after the NAT operation, as well as the optional MAC address modification and the tagged client interface. This eliminates the need for the downstream nodes to perform the packet modification work.

[0096] According to a first example, each of the plurality of NAT routing entries indicates one or more of the following: source IP address, source port, destination IP address, destination port, protocol, and NAT-translated address of the respective data packet. This approach ensures that each entry contains the essential elements of the data packet that can undergo translation in the NAT process. Notably, for downlink traffic, the NAT-translated address refers to the NAT-translated destination IP address, while for uplink traffic, the NAT-translated address refers to the NAT-translated source IP address.

[0097] According to a second example, each of the plurality of NAT routing entries further indicates the modified MAC address of the data packet. This feature allows the upstream node to not only manage the NAT translation but also perform the modification at the data link layer, specifically updating the MAC address as needed. As Figure 6 illustrated by the dashed box in

[0098] In addition to the NAT and MAC address information, each entry can also specify the client interface of the downstream node to which the data packet should be forwarded. This information enables the downstream node to efficiently route the data packet to the appropriate client interface without the need for additional lookup operations. This feature is particularly useful in scenarios where the downstream node has multiple client interfaces and a client device can be connected to one of the interfaces, and forwarding the data packet via the correct interface is critical for reliably delivering the packet to the client device.

[0099] By incorporating these aspects into the NAT routing entries, the upstream node can efficiently manage the NAT operations of the network on behalf of the downstream nodes and ensure efficient data packet routing. This centralized approach relieves the processing burden of the downstream nodes, improves network performance, and provides a scalable solution for networks with multiple client devices while supporting the NAT technology.

[0100] According to the present disclosure, the communication node (which can be an upstream node, such as an upstream router or an upstream module of a router of a data routing network) is also responsible for the periodic cleanup of these NAT routing entries.

[0101] According to a first example, the upstream node can delete one or more of the plurality of NAT routing entries upon receiving an indication from the downstream node, which can indicate that the data packets corresponding to the one or more NAT routing entries will no longer be communicated between the client device and the external site. For example, a data flow (such as a UDP and TCP session) corresponding to a particular application or service can end, and thus the NAT routing entry indicating the corresponding tuple of source IP, source port, destination IP, destination port, protocol will no longer be used. This can occur, for example, in the case where the client device actively stops a data session, program, or service through a four-way handshake, and the downstream node can report this information to the upstream node to delete the relevant NAT entry.

[0102] According to a second example, the upstream node can delete one or more of the plurality of NAT routing entries based on aging information of the plurality of NAT routing entries. According to embodiments of the present disclosure, the upstream node evaluates the aging information of the plurality of NAT routing entries. For example, the aging information is a timestamp or counter that indicates a length of time that a particular NAT entry has been stored in the memory of the upstream node but not used. Based on the aging information, the upstream node identifies those NAT routing entries that exceed a predetermined time threshold. Accordingly, the upstream node deletes the identified NAT routing entries that are deemed outdated. Additionally or alternatively, the downstream node evaluates the aging information of the plurality of NAT routing entries and reports to the upstream node which NAT routing entries should be deleted. This can occur, for example, in the event that the client device unexpectedly ends a data session, program, or service without an explicit four-way handshake process, such as the client device being powered off or otherwise disconnected from the communication node, and cleanup should be based on the aging information.

[0103] The cleanup process helps to clear outdated NAT-related information and free up memory resources within the upstream communication node, and also helps to speed up NAT translation as there are fewer outdated NAT entries to search through.

[0104] Figure 7 A flowchart illustrating a computer-implemented method for routing data packets for a client device according to embodiments of the present disclosure is shown.

[0105] The method can be implemented in a communication node (i.e., an upstream communication node), and detailed descriptions of the method 700 can refer to the above descriptions regarding Figures 1-6 The method 700 can be performed in the architecture described regarding Figures 1-6 and in accordance with the interactions between communication nodes when routing data packets between a client device and an external node described regarding Figures 1-6 Further, each step of the method 700 can be performed by one or more processing units, such as a central processing unit (CPU) of the communication node.

[0106] Referring to Figure 7 , the method 700 includes steps S710-S720.

[0107] In step S710, the upstream communication node can obtain, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between a client device and an external node at least through the upstream communication node and the downstream communication node. In one example of step S710, the NAT routing information can be generated by the downstream communication node based on one or more NAT-related changes made to the data packets when routing the data packets between the client device and the upstream communication node.

[0108] In step S720, the upstream communication node can perform NAT on subsequent data packets to be communicated between the client device and the external node based on the NAT routing information. Accordingly, the downstream communication node is configured to transparently forward the subsequent data packets between the client device and the upstream communication node without performing NAT on the subsequent data packets.

[0109] According to one embodiment, the data packets are downlink data packets, and the one or more NAT-related changes comprise at least a change to a destination IP of the downlink data packets. In this embodiment, performing NAT on subsequent data packets to be communicated between the client device and the external node based on the NAT routing information comprises the steps of: obtaining the subsequent data packets, the subsequent data packets being subsequent downlink data packets originating from the external node; in response to a match of the subsequent downlink data packets and the NAT routing information, generating a NAT-converted downlink packet by replacing a destination IP of the subsequent downlink data with a NAT-converted destination IP based on the change to the destination IP of the downlink data packets; and sending the NAT-converted downlink packet to the downstream communication node for forwarding to the client device.

[0110] According to another embodiment, the data packets are uplink data packets, and the one or more NAT-related changes comprise at least a change to a source IP of the uplink data packets. In this embodiment, performing NAT on subsequent data packets to be communicated between the client device and the external node based on the NAT routing information comprises the steps of: receiving the subsequent data packets, the subsequent data packets being subsequent uplink data packets from the downstream communication node, the subsequent uplink data packets originating from the client device and being forwarded to the upstream communication node; in response to a match of the subsequent uplink data packets and the NAT routing information, generating a NAT-converted uplink packet by replacing a source IP of the subsequent uplink data with a NAT-converted source IP based on the change to the source IP of the uplink data packets; and providing the NAT-converted uplink packet to the external node.

[0111] According to one scenario of the present disclosure, the upstream communication node and the downstream communication node are implemented as an upstream router and a downstream router in different layers of a hierarchical structure of a data routing network.

[0112] According to another scenario of the present disclosure, the upstream communication node and the downstream communication node are respectively implemented as a cellular module and a Wi-Fi routing module of a cellular router.

[0113] Optionally, the method 700 further includes the steps of obtaining, from the downstream communication node, media access control (MAC) address related information of the data packet, the MAC address related information being generated by the downstream communication node based on one or more MAC address related changes made to the data packet when routing the data packet between the client device and the upstream communication node; and performing one or more modifications to a MAC address of the subsequent data packet based on the MAC address related information.

[0114] According to an embodiment of the present disclosure, the client device is connected to one of a plurality of client interfaces of the downstream communication node. In this case, the NAT routing information further indicates a client interface of the plurality of client interfaces of the downstream communication node used for routing the data packet to the client device. Optionally, the method 700 further includes the step of marking the subsequent data packet with the indicated client interface of the downstream communication node based on the NAT routing information.

[0115] Optionally, the method 700 further includes the step of generating a plurality of NAT routing entries for one or more data packets communicated between one or more client devices and one or more external nodes based on the NAT routing information obtained from one or more downstream communication nodes of the upstream communication node.

[0116] According to an embodiment of the present disclosure, each of the plurality of NAT routing entries indicates one or more of a source IP, a source port, a destination IP, a destination port, a protocol, and a NAT translated IP of a respective data packet.

[0117] According to an embodiment of the present disclosure, each of the plurality of NAT routing entries further indicates a changed MAC address of a respective data packet.

[0118] Optionally, the method 700 further includes the step of deleting one or more of the plurality of NAT routing entries based on aging information of the plurality of NAT routing entries.

[0119] Based at least on the above embodiments of the present disclosure, an improved mechanism is implemented for routing data packets for a client device through a plurality of communication nodes of a data routing network while effectively utilizing the capabilities of the communication nodes, addressing latency caused by a less capable downstream communication node, and accordingly speeding up the transmission of data traffic.

[0120] According to an embodiment of the present disclosure, by transferring the NAT related tasks from the less capable downstream communication node to the more capable upstream communication node, an improvement in data throughput is achieved such that the data packets do not stall at the downstream communication node waiting for NAT processing, and the overall data throughput of the system can be improved.

[0121] Figure 8 is an exemplary block diagram illustrating a computing device, in accordance with an embodiment of the present disclosure.

[0122] It is noted that, Figure 8 the computing device depicted in FIG. 8 can correspond to one or more of the client devices, upstream and downstream communication nodes, and external nodes described above with respect to Figures 1-6 the method 700 described above, and can be used to perform actions involving routing data packets for a client device.

[0123] As Figure 8 shown, the computing device 800 can include a processor 810 and a memory 820. The processor 810 is communicatively coupled with the memory and is configured to perform the methods discussed above.

[0124] Examples of the processor 810 include a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), a programmable logic device (PLD), a state machine, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.

[0125] The processor 810 can execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The software can reside on the memory 820.

[0126] The memory 820 can be a non-transitory computer-readable medium. A non-transitory computer-readable medium includes, for example, magnetic storage devices (such as hard disks, floppy disks, magnetic strips), optical disks (such as compact discs (CDs) or digital versatile discs (DVDs)), smart cards, flash devices (such as card, stick, or key drive), random access memories (RAMs), read-only memories (ROMs), programmable ROMs (PROMs), erasable PROMs (EPROMs), electrically erasable PROMs (EEPROMs), registers, removable disk, and any other suitable medium for storing software and / or instructions that can be accessed and read by a computer. The memory 820 can reside within the processor 810, external to the processor 810, or distributed across multiple entities including the processor 810. The memory 820 can be embodied in a computer program product. For example, a computer program product can include a computer-readable medium in packaging material. Those skilled in the art will recognize how to implement the described functionality presented throughout this disclosure using the

[0127] Further, according to another embodiment of the disclosure, a computer program product for routing data packets for a client device is disclosed. As an example, the computer program product includes a non-transitory computer-readable storage medium having program instructions embodied therewith, the program instructions executable by a processor. When executed, the program instructions cause the processor to perform one or more processes described above, details of which are omitted herein for brevity.

[0128] The present disclosure can be a system, a method, and / or a computer program product at any possible technical detail level of integration. The computer program product can include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.

[0129] The expressions such as “according to,” “based on,” “in accordance with,” “dependent on,” and the like used in the present disclosure do not mean “only according to,” “only based on,” or “only dependent on” unless explicitly stated otherwise. In other words, in the present disclosure, such expressions generally mean “at least according to,” “at least based on,” or “at least dependent on.”

[0130] Any elements specified in the present disclosure with “first,” “second,” or the like are not intended to limit the number or order of these elements in general. These expressions can be used in the present disclosure as a convenient method of distinguishing two or more units. Thus, reference to first units and second units does not mean that only two units can be employed, or that a first unit must precede a second unit in some form.

[0131] The term “determining” used in the present disclosure can include various operations. For example, as to “determining,” calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like are considered “determining.” Also, as to “determining,” receiving (e.g., receiving information), transmitting (e.g., transmitting information), inputting, outputting, accessing (e.g., accessing data in a memory) and the like are also considered “determining.” Further, as to “determining,” resolving, selecting, choosing, establishing and the like are also considered “determining.” That is, as to “determining,” several actions can be considered “determining.”

[0132] The terms such as "connected", "coupled" or any variant thereof used in the present disclosure are used to indicate any connection or coupling between two or more elements, which can include the possibility of having one or more intermediate elements between the two "connected" or "coupled" elements. The coupling or connection between the elements can be physical or logical, or can also be a combination of both. As used in the present disclosure, two elements can be considered to be electrically connected by using one or more conductive wires, cables and / or printed lines, and as a plurality of non-limiting and non-exhaustive examples, "connected" or "coupled" together by using electromagnetic energy in the radio frequency region, the microwave region and / or the light (visible and invisible) region, etc.

[0133] When "comprise", "include" and variants thereof are used in the present disclosure or claims, these terms are open-ended as the terms "have" and "contain". In addition, the term "or" used in the present disclosure or claims is not exclusive "or".

[0134] The present disclosure has been described in detail above, but it will be apparent to those skilled in the art that the present disclosure is not limited to the embodiments described in the present disclosure. The present disclosure can be implemented in modified and changed forms without departing from the spirit and scope of the present disclosure defined by the description of the claims. Therefore, the description in the present disclosure is for illustrative purposes, and does not have any limiting meaning on the present disclosure.

Claims

1. A communication node for routing data packets for a client device, comprising: one or more processors; a memory coupled to at least one of the one or more processors; and a set of computer program instructions stored in the memory, which when executed by at least one of the one or more processors, performs the following acts: obtaining, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between the client device and an external node at least through the communication node and the downstream communication node; and performing, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node.

2. The communication node of claim 1, wherein the NAT routing information is generated by the downstream communication node based on one or more NAT-related changes made to the data packets when routing the data packets between the client device and the communication node.

3. The communication node of claim 2, wherein, the data packets are downlink data packets and the one or more NAT-related changes include at least a change to a destination IP of the downlink data packets, and wherein performing, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node comprises: obtaining the subsequent data packets, the subsequent data packets being subsequent downlink data packets originating from the external node; in response to a match of the subsequent downlink data packets to the NAT routing information, generating a NAT- translated downlink packet by replacing a destination IP of the subsequent downlink data with a NAT- translated destination IP based on the change to the destination IP of the downlink data packets; and sending the NAT- translated downlink packet to the downstream communication node for forwarding to the client device.

4. The communication node of claim 2, wherein, the data packets are uplink data packets and the one or more NAT-related changes include at least a change to a source IP of the uplink data packets, and wherein performing, based on the NAT routing information, NAT for subsequent data packets to be communicated between the client device and the external node comprises: receiving the subsequent data packets, the subsequent data packets being subsequent uplink data packets from the downstream communication node, the subsequent uplink data packets originating from the client device and being forwarded to the communication node; in response to a match of the subsequent uplink data packets to the NAT routing information, generating a NAT- translated uplink packet by replacing a source IP of the subsequent uplink data with a NAT- translated source IP based on the change to the source IP of the uplink data packets; and providing the NAT- translated uplink packet to the external node.

5. The communication node of claim 1, wherein, the communication node and the downstream communication node are implemented as upstream and downstream routers of different layers in a hierarchy of a data routing network.

6. The communication node of claim 1, wherein, The communication node and the downstream communication node are implemented as a cellular module and a Wi-Fi routing module of a cellular router, respectively.

7. The communication node of claim 1, wherein, The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: obtain, from the downstream communication node, media access control, MAC, address related information of the data packet, the MAC address related information being generated by the downstream communication node based on one or more MAC address related changes made to the data packet when routing the data packet between the client device and the communication node; and perform one or more modifications to a MAC address of the subsequent data packet based on the MAC address related information.

8. The communication node of claim 1, wherein, The client device is connected to one of a plurality of client interfaces of the downstream communication node, and the NAT routing information further indicates a client interface of the plurality of client interfaces of the downstream communication node used to route the data packet to the client device, and wherein the set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: mark the subsequent data packet with the indicated client interface of the downstream communication node based on the NAT routing information.

9. The communication node of claim 1, wherein, The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: generate a plurality of NAT routing entries for one or more data packets communicated between one or more client devices and one or more external nodes based on the NAT routing information obtained from one or more downstream communication nodes of the communication node, including the downstream communication node.

10. The communication node of claim 9, wherein, Each of the plurality of NAT routing entries indicates one or more of a source IP, a source port, a destination IP, a destination port, a protocol, and a NAT translated IP of a respective data packet.

11. The communication node of claim 10, wherein, Each of the plurality of NAT routing entries further indicates a changed MAC address of the respective data packet.

12. The communication node of claim 9, wherein, The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: delete one or more of the plurality of NAT routing entries based on aging information of the plurality of NAT routing entries.

13. The communication node of claim 1, wherein, The downstream communication node is configured to transparently forward the subsequent data packet between the client device and the communication node without performing NAT on the subsequent data packet.

14. A method for routing data packets for a client device, the method implemented in a communication node and comprising: obtaining, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between the client device and an external node at least through the communication node and the downstream communication node; and performing NAT on a subsequent data packet to be communicated between the client device and the external node based on the NAT routing information. The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: mark the subsequent data packet with the indicated client interface of the downstream communication node based on the NAT routing information. The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: generate a plurality of NAT routing entries for one or more data packets communicated between one or more client devices and one or more external nodes based on the NAT routing information obtained from one or more downstream communication nodes of the communication node, including the downstream communication node. Each of the plurality of NAT routing entries indicates one or more of a source IP, a source port, a destination IP, a destination port, a protocol, and a NAT translated IP of a respective data packet. Each of the plurality of NAT routing entries further indicates a changed MAC address of the respective data packet. The set of computer program instructions stored in the memory, when executed by at least one of the one or more processors, further cause the communication node to: delete one or more of the plurality of NAT routing entries based on aging information of the plurality of NAT routing entries. The downstream communication node is configured to transparently forward the subsequent data packet between the client device and the communication node without performing NAT on the subsequent data packet.

14. A method for routing data packets for a client device, the method implemented in a communication node and comprising: obtaining, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between the client device and an external node at least through the communication node and the downstream communication node; and performing NAT on a subsequent data packet to be communicated between the client device and the external node based on the NAT routing information.

15. The method of claim 14, wherein, The NAT routing information is generated by the downstream communication node based on one or more NAT-related changes made to the data packet when routing the data packet between the client device and the communication node.

16. The method of claim 15, wherein, The data packet is a downlink data packet, and the one or more NAT-related changes include at least a change to a destination IP of the downlink data packet, and wherein Performing NAT on a subsequent data packet to be communicated between the client device and the external node based on the NAT routing information includes: receiving the subsequent data packet, the subsequent data packet being a subsequent uplink data packet from the downstream communication node, the subsequent uplink data packet originating from the client device and being forwarded to the communication node; in response to a match of the subsequent uplink data packet to the NAT routing information, generating a NAT-converted uplink packet by replacing a source IP of the subsequent uplink data with a NAT-converted source IP based on the change to the source IP of the uplink data packet; and providing the NAT-converted uplink packet to the external node.

17. The method of claim 15, wherein, 18. The method of claim 14, further comprising: obtaining, from the downstream communication node, media access control (MAC) address related information for the data packet, the MAC address related information being generated by the downstream communication node based on one or more MAC address related changes made to the data packet when routing the data packet between the client device and the communication node; and performing one or more modifications to a MAC address of the subsequent data packet based on the MAC address related information.

19. The method of claim 14, further comprising: generating a plurality of NAT routing entries for one or more data packets to be communicated between one or more client devices and one or more external nodes based on the NAT routing information obtained from one or more downstream communication nodes of the communication node, including the downstream communication node. ​ ​ ​ ​ ​ 20. A computer program product for routing data packets for a client device, the computer program product comprising a non-transitory computer-readable storage medium having program instructions embodied therewith, the program instructions executable by a processor of a communication node to cause the processor to: obtain, from a downstream communication node, network address translation (NAT) routing information for data packets communicated between the client device and an external node at least through the communication node and the downstream communication node; and perform NAT for subsequent data packets to be communicated between the client device and the external node based on the NAT routing information.