WO2013052898A2 - Systems and methods for data packet processing - Google Patents

Systems and methods for data packet processing Download PDF

Info

Publication number
WO2013052898A2
WO2013052898A2 PCT/US2012/059103 US2012059103W WO2013052898A2 WO 2013052898 A2 WO2013052898 A2 WO 2013052898A2 US 2012059103 W US2012059103 W US 2012059103W WO 2013052898 A2 WO2013052898 A2 WO 2013052898A2
Authority
WO
WIPO (PCT)
Prior art keywords
data packet
fragments
nat
packet fragments
fragment
Prior art date
Application number
PCT/US2012/059103
Other languages
French (fr)
Other versions
WO2013052898A3 (en
Inventor
Alok MITRA
Venkata Satish Kumar Vangala
Rohit TRIPATHI
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Priority to CN201280049250.3A priority Critical patent/CN103918246B/en
Priority to IN2179CHN2014 priority patent/IN2014CN02179A/en
Priority to JP2014534805A priority patent/JP5796135B2/en
Priority to EP12787189.5A priority patent/EP2764681B1/en
Publication of WO2013052898A2 publication Critical patent/WO2013052898A2/en
Publication of WO2013052898A3 publication Critical patent/WO2013052898A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2557Translation policies or rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Definitions

  • the present application relates generally to communications, and more specifically to systems, methods, and device (such as routers) for efficient processing of internet protocol (IP) fragments using network address translation (NAT) functionality.
  • IP internet protocol
  • NAT network address translation
  • Communication systems are widely deployed to provide various types of communication (e.g., voice, data, multimedia services, etc.) between communication devices (e.g., mobile handsets, PDAs (Personal Data Assistants), personal computers, smart phones, servers, or any other electronic device capable of communicating via a network).
  • the devices may transmit/receive data between each other via a network of interconnected devices.
  • client devices may exchange data with server devices over a network.
  • NAT devices may provide public domain access to a group of client devices (which may be grouped in a local area network (LAN)).
  • LAN local area network
  • a single publicly routeable IPv4 address may be assigned to the NAT device for the group of client devices to access the public network, instead of each client device having its own publicly routeable IPv4 address. This saves on the assignment of IPv4 addresses.
  • using a NAT device allows security protocols to be established at the NAT device that help protect all the client devices, since all the traffic flows through the NAT device.
  • the data sent from client devices to the server device is routed through the NAT device.
  • the server devices send data to the NAT device, and the NAT device sends the data to the client devices.
  • the NAT device may perform network address translation for the data exchanged between the client devices and server devices. Utilizing NAT, the NAT device may modify the internet protocol (IP) addresses of data packets from the client devices before sending the data packets to the server. Similarly, the NAT device may modify the IP addresses of data packets from the server before sending the data packets to the clients.
  • IP internet protocol
  • the client devices may be part of a local network that uses
  • the NAT device may be associated with a public IP address and enabled to communicate with devices on the public network. Accordingly, the NAT device may receive data packets from the client devices with private IP address, the packets being destined for devices on the public network. The NAT device may modify the private IP addresses of the data packets to reflect the public IP address of the NAT device and send the data packets to a server on the public network.
  • the NAT device may further modify other information in the data packets, such as transport layer port information in order to, for example, monitor multiple traffic flows from a single client device.
  • the server may then send data packets in response to the NAT device using the public IP address.
  • the NAT device must then determine to which client devices each response data packet belongs, and modify the response data packets to have the appropriate private IP addresses of the client devices.
  • the NAT device may need to wait before all the IP fragments of a data packet have arrived at the NAT from a client device before performing NAT and sending the data packet to the server, which may lead to delay sin communication and increased memory buffering requirements in the NAT device. This may be especially true where IP fragments arrive at the NAT device out of order with the first IP fragment arriving at the NAT device last as further discussed herein.
  • two or more client devices that are associated with the same NAT device may send IP datagrams or fragments to the same server using the same IP-ID for the datagrams or fragments.
  • the server may not be able to distinguish between the datagrams or fragments from a first client and a second client device sent via the NAT device. This leads to inefficiencies and errors in communications. Thus, enhanced systems and methods of performing NAT are needed.
  • One embodiment of the disclosure provides a method for communicating in a network.
  • the method comprises receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet.
  • IP internet protocol
  • the method comprises transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
  • Another embodiment of the disclosure provides a method for communicating in a network.
  • the method comprises receiving data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow.
  • IP-ID internet protocol identifier
  • the method comprises generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow.
  • the method comprises transmitting the data packet fragments with the second IP-ID.
  • the apparatus comprises a receiver configured to receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet.
  • IP internet protocol
  • the apparatus comprises a transmitter configured to transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
  • the apparatus comprises a receiver configured to receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow.
  • IP-ID internet protocol identifier
  • the apparatus comprises a processor configured to generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow.
  • the apparatus comprises a transmitter configured to transmit the data packet fragments with the second IP-ID.
  • Another embodiment of the disclosure provides an apparatus for communicating in a network.
  • the apparatus comprises means for receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet.
  • IP internet protocol
  • the apparatus comprises means for transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
  • Another embodiment of the disclosure provides an apparatus for communicating in a network.
  • the apparatus comprises means for receiving data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow.
  • IP-ID internet protocol identifier
  • the apparatus comprises means for generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow.
  • the apparatus comprises means for transmitting the data packet fragments with the second IP-ID.
  • Another embodiment of the disclosure provides a computer readable medium comprising instructions.
  • the instructions when executed cause an apparatus to receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet.
  • IP internet protocol
  • the instructions when executed cause the apparatus to transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
  • Another embodiment of the disclosure provides a computer readable medium comprising instructions.
  • the instructions when executed cause an apparatus to receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow.
  • IP-ID internet protocol identifier
  • the instructions when executed cause the apparatus to generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow.
  • the instructions when executed cause the apparatus to transmit the data packet fragments with the second IP-ID.
  • FIG. 1 illustrates exemplary interoperations of devices of a private network with devices of a public network via a network address translation (NAT) device.
  • NAT network address translation
  • FIG. 2 is a flowchart illustrating an exemplary process for performing NAT using partial NAT entries.
  • FIG. 3 is a flowchart illustrating an exemplary process 300 for replacing the IP-
  • IP fragment ID of an IP fragment with a new IP-ID unique to a flow associated with the IP fragment is a new IP-ID unique to a flow associated with the IP fragment.
  • FIG. 4 is a functional block diagram of an exemplary NAT device of FIG. 1.
  • FIG. 5 is a functional block diagram of another exemplary NAT device of FIG.
  • FIG. 6 is a functional block diagram of yet another exemplary NAT device of
  • CDMA Code Division Multiple Access
  • TDMA Time Division Multiple Access
  • FDMA Frequency Division Multiple Access
  • OFDMA Orthogonal FDMA
  • SC-FDMA Single- Carrier FDMA
  • LAN Local Area Networks
  • PAN Personal Area Networks
  • WAN Wide Area Networks
  • wired networks etc.
  • CDMA network may implement a radio technology such as Universal Terrestrial Radio Access (UTRA), cdma2000, etc.
  • UTRA includes Wideband-CDMA (W-CDMA) and Low Chip Rate (LCR).
  • cdma2000 covers IS-2000, IS-95 and IS-856 standards.
  • a TDMA network may implement a radio technology such as Global System for Mobile Communications (GSM).
  • GSM Global System for Mobile Communications
  • An OFDMA network may implement a radio technology such as Evolved UTRA (E-UTRA), IEEE 802.9, IEEE 802.16, IEEE 802.20, Flash-OFDM", etc.
  • E-UTRA, and GSM are part of Universal Mobile Telecommunication System (UMTS).
  • UMTS Universal Mobile Telecommunication System
  • LTE Long Term Evolution
  • UTRA, E-UTRA, GSM, UMTS and LTE are described in documents from an organization named "3rd Generation Partnership Project" (3GPP).
  • cdma2000 is described in documents from an organization named "3rd Generation Partnership Project 2" (3GPP2). These various radio technologies and standards are known in the art.
  • SC-FDMA Single carrier frequency division multiple access
  • SC-FDMA utilizes single carrier modulation and frequency domain equalization.
  • SC-FDMA has similar performance and essentially similar overall complexity as an OFDMA system.
  • An SC- FDMA signal has lower peak-to-average power ratio (PAPR) because of its inherent single carrier structure.
  • PAPR peak-to-average power ratio
  • SC-FDMA has drawn significant attention, especially in uplink communications where lower PAPR greatly benefits the mobile terminal in terms of transmit power efficiency. It is currently a working assumption for an uplink multiple access scheme in 3GPP Long Term Evolution (LTE), or Evolved UTRA (E-UTRA).
  • LTE Long Term Evolution
  • E-UTRA Evolved UTRA
  • IP internet protocol
  • NAT network address translation
  • IP internet protocol
  • SoftAP software access point
  • the NAT discussed herein may be a "symmetric" type NAT, which involves storing transport header information in a NAT entry.
  • FIG. 1 illustrates exemplary interoperations of devices of a private network with devices of a public network via a NAT device.
  • FIG. 1 illustrates a private network (e.g., a LAN, a PAN, a WAN, etc.) that is configured to support communication between a number of communication devices 102a-102c (e.g., mobile handsets, PDAs (Personal Data Assistants), personal computers, smart phones, servers, or any other electronic device capable of communicating via a network).
  • the devices 102a-102c may communicate with each other in the private network using private IP addresses.
  • the communication devices 102a- 102c may be interconnected by one or more wired or wireless communications links.
  • the communications links may include one or more of the following types of communications links: GSM (Global System for Mobile communications), UMTS (Universal Mobile Telecommunications System), UMTS- TDD (UMTS-Time Division Duplexing), CDMA (Code Division Multiple Access), CDMA2000, WCDMA (Wideband CDMA), TDMA (Time Division Multiple Access), FDMA (Frequency Division Multiple Access), lxEV-DO (Evolution-Data Optimized), Wi-Fi, Wi-Max, Bluetooth, or IEEE 802.11, telephone (e.g., POTS), cable, Ethernet, PLC (Power Line Communication), or fiber optic links, or any other link that allows a connection between devices.
  • GSM Global System for Mobile communications
  • UMTS Universal Mobile Telecommunications System
  • UMTS- TDD UMTS-Time Division Duplexing
  • CDMA Code Division Multiple Access
  • CDMA2000 Code Division Multiple Access
  • WCDMA Wideband CDMA
  • TDMA Time Division Multiple Access
  • FDMA Frequency Division Multiple Access
  • the communication devices 102 may further be configured to communicate with a NAT device 104 in the private network using a private IP address of the NAT device via one or more wireless and/or wired communication links such as those described above.
  • the NAT device 104 may further be connected to a public network, such as the Internet 105 via one or more wireless and/or wired communication links such as those described above.
  • the NAT device 104 may be a SoftAP, an access point, or some other suitable device configured to perform NAT of data packets transmitted from the client devices 102 and destined for devices (e.g., servers or other devices) on the Internet 105.
  • the client devices 102 may transmit data packets (e.g., IP data packets) for the server 106a and/or the server 106b that get routed to the NAT device 104.
  • the data packets may include a private IP address of the client device 102 that transmitted the data packet to indicate the source of the data packet.
  • the NAT device 104 may change the private IP address of the data packet that is used for communication in the private network to a public IP address that is used for communication on the Internet.
  • the public IP address may be a public IP address associated with the NAT device 104.
  • the NAT device 104 may further translate transport level information of the data packet such as a private port used for communication on the private network to a public port used for communication on the Internet 105.
  • the NAT device 104 may further transmit the data packets from the client devices 102 to the devices on the Internet 105 such as the servers 106a and/or 106b.
  • the servers 106a and/or 106b may process the data packets and send response data packets to the NAT device 104 destined for the client devices 102.
  • the NAT device 104 may change the public IP addresses of the response data packets to the appropriate private IP addresses of the client devices 102 and transmit the response data packets to the client devices 102.
  • the NAT device 104 may further translate transport level information of the data packet such as a public port used for communication on the Internet 105 to a private port used for communication on the private network.
  • the NAT device 104 may receive a data packet as a series of IP fragments from the client devices 102a. In some aspects, the NAT device 104 waits until all the IP fragments of the data packet arrive at the NAT device 104 before performing NAT and sending the data packet to its destination, for example, server 106a. Accordingly, the NAT device 104 may store the IP fragments in memory until they are transmitted. This may occur because the transport header information (which may be needed for port translation) needed to perform NAT on the IP fragments is only contained in the first IP fragment of a data packet, and not the remaining IP fragments. Thus, the NAT device 104 waits until all IP fragments of a data packet are received to determine the needed transport header information and NAT the data packet.
  • the NAT device 104 uses the transport header information along with other information to create a NAT entry for the data packet.
  • the NAT entry may be stored in a NAT database located on a memory of the NAT device 104.
  • the data packet is then transmitted to the server 106a.
  • the NAT entry is used by the NAT device 104 when a response is received from the server 106a to determine which client device 102 the response is associated with in order to send the response to the appropriate client device 102.
  • Each NAT entry at the NAT device 104 may be for a particular packet flow (e.g., for data packets having the same characteristics such as local IP address, local port, target IP address, target port, global IP address, global port, and IP-ID). Accordingly, each NAT entry may correspond to and identify a particular IP/transport packet flow.
  • the NAT device 104 may be configured to NAT a data packet before all IP fragments (e.g., before the first IP fragment of a series of IP fragments) of the data packet arrive at the NAT device 104. Accordingly, the NAT device 104 performs NAT on IP fragments as they arrive at the NAT device 104 (e.g., from the client 102a), and the IP fragments are sent to the destination device (e.g., the server 106a) before all the IP fragments of a packet are received at the NAT device 104.
  • the destination device e.g., the server 106a
  • the NAT device 104 creates a full NAT entry for the data packet as the transport header is included in the first IP fragment.
  • the full NAT entry may include information such as a local IP address, local port, target IP address, target port, global IP address, global port, and IP-ID.
  • the NAT device 104 before the first IP fragment (e.g., 1) of the packet is received, the NAT device 104 creates a partial NAT entry including only the information the NAT device 104 has based on the IP fragment and not the information from the transport header.
  • the partial NAT entry may include information such as a local IP address, target IP address, global IP address, global port, and IP-ID.
  • the partial NAT entry may be missing a local port and a target port that would be included in a complete NAT entry.
  • the NAT device 104 updates the partial NAT entry to a complete NAT entry.
  • a partial NAT entry should not be problematic, on the basis that the destination device (e.g., server 106a) will not respond until all IP fragments of the packet are received by the destination, meaning that by the time the server 106a responds, the NAT device 104 will have a complete NAT entry.
  • the server 106a may transmit an internet control message protocol (ICMP) error message before receiving all of the IP fragments of the packet.
  • ICMP internet control message protocol
  • the NAT device 104 can NAT such ICMP error messages and transmit them back to the appropriate client device 102 based on the partial NAT entry.
  • the use of a partial NAT entry allows the NAT device 104 to distinguish between IP fragments of different packets from different client devices 102 by determining which IP fragments have information that match the partial NAT entry. Therefore, the NAT device 104 can keep track of where the IP fragments and responses should be routed. Further, the partial NAT entry allows an error response received from a destination device such as the server 106a to be correctly routed to a client device 102 based on the information in the partial NAT entry.
  • the NAT device 104 may receive first IP fragments with a first
  • the NAT device 104 may, in some aspects, NAT both the first IP fragments and the second IP fragments so they both have the same source and destination addresses (the source address being the NAT device 104 address and the destination address being the server 106a address) when sent to the server 106a.
  • the server 106a When the server 106a then receives the first IP fragments and the second IP fragments, the server 106a cannot distinguish that they are for different packets as the source address, destination address, and IP-ID for both sets of IP fragments is the same.
  • the server 106a assumes that both sets of IP fragments are from the same client device 102, and therefore are part of the same packet. The server 106a will try to use both sets of IP fragments to then reassemble a single packet. This results in reassembly errors and causes the packets to be dropped at the server 106a.
  • the NAT device 104 replaces the original IP-ID of the packet with a generated IP-ID. For example, a first client device 102a may send data packet fragments with a first IP-ID to the NAT device 104 to be sent to the server 106a. Further, a second client device 102b may send data packet fragments with the first IP-ID to the NAT device 104 to be sent to the server 106a.
  • the NAT device 104 may generate a first new IP-ID that is unique to data packets sent from the first client 102a to the server 106a and a second new IP-ID that is unique to data packets sent from the second client 102b to the server 106a.
  • the NAT device 104 may then replace the first IP-ID in the IP fragments for the first client device 102a with the first new IP-ID and replace the first IP-ID in the IP fragments for the second client device 102b with the second new IP-ID.
  • the NAT device 104 may select the new IP-IDs based on any appropriate algorithm such as selecting IP-IDs in increasing order, random, pseudorandom, hash function, etc.
  • the first new IP-ID and the second new IP-ID may each be different than the first IP-ID.
  • one of either the first new IP-IP or the second new IP-ID may be the same as the first IP-ID and the other of the first new IP-IP or the second new IP-ID may be different than the first IP-ID.
  • the server 106a receives IP fragments with different IP-IDs for data packets from each of the first client device 102a and the second client device 102b and can differentiate between them.
  • a partial NAT entry allows the NAT device 104 to keep track of which IP-ID is generated for which IP fragments as all the IP fragments for a given packet from a given client device 102 may have the same IP-ID.
  • the NAT device 104 may have reduced memory requirements as it does not need to store/queue IP fragments before transmission. Further, the NAT device 104 may not need to perform reassembly/re-fragmentations of IP fragments of a data packet when utilizing partial NAT entries. Accordingly, the number of operations to be performed by a CPU or processor of the NAT device 104 may be reduced. The lower CPU usage may also result in lower power consumption. In addition, by avoiding reassembly/fragmentation, data packets are transmitted with less delay, therefore increasing throughput at the NAT device 104.
  • FIG. 2 is a flowchart illustrating an exemplary process 200 for performing NAT using partial NAT entries.
  • the NAT device 104 receives an IP fragment of a data packet from a client device 102. Further, at a block 207, the NAT device 104 determines if the IP fragment corresponds to a data packet for which there is already a corresponding NAT entry at the NAT device 104. If at block 207, the NAT device 104 determines there is no corresponding NAT entry, the process 200 continues to a block 209. If at the block 207, the NAT device 104 determines there is a corresponding NAT entry, the process 200 continues to a block 215.
  • the NAT device 104 determines whether the IP fragment of the data packet is the first IP fragment in order of the data packet. If at the block 209 the NAT device 104 determines the IP fragment of the data packet is the first IP fragment in order of the data packet, the process continues to a block 211. At the block 211, the NAT device 104 creates a complete NAT entry for the IP fragment based on the transport header in the IP fragment. If at the block 209 the NAT device 104 determines the IP fragment of the data packet is not the first IP fragment in order of the data packet, the process continues to a block 213. At the block 213, the NAT device 104 creates a partial NAT entry for the IP fragment. The process 200 then continues to a block 221. [0040] At the block 215, the NAT device 104 determines whether the corresponding IP fragment in order of the data packet.
  • NAT entry is a complete NAT entry or a partial NAT entry. If the NAT device 104 determines the corresponding NAT entry is a partial NAT entry, the process 200 continues to a block 217. If the NAT device 104 determines the corresponding NAT entry is a complete NAT entry, the process 200 continues to a block 221
  • the NAT device 104 determines whether the IP fragment of the data packet is the first IP fragment in order of the data packet. If the NAT device 104 determines the IP fragment of the data packet is the first IP fragment in order of the data packet, the process 200 continues to a block 219. At the block 219, the NAT device 104 converts the partial NAT entry to a complete NAT entry based on the transport header in the IP fragment. The process 200 then continues to a block 221. If the NAT device 104 determines the IP fragment of the data packet is not the first IP fragment in order of the data packet, the process 200 continues to a block 221.
  • the NAT device 104 performs NAT of the IP fragment.
  • the NAT device 104 transmits the IP fragment to its destination (e.g., the server 106a).
  • FIG. 3 is a flowchart illustrating an exemplary process 300 for replacing the IP-
  • the NAT device 104 receives an IP fragment having a first IP-ID over a first traffic flow. Continuing at a block 310, the NAT device 104 generates a second IP- ID for the IP fragment that is unique to the first traffic flow. Further, at a block 315, the NAT device 104 stores a mapping of the first IP-ID to the second IP-ID, for example as part of a partial or a complete NAT entry. Next, at a block 320, the NAT device 104 performs NAT of the IP fragment using the second IP-ID. Further, at a block 325, the NAT device 104 transmits the IP fragment to its destination (e.g., the server 106a).
  • its destination e.g., the server 106a
  • FIG. 4 is a functional block diagram of an exemplary NAT device 104 of FIG. 1.
  • the NAT device 104 is an example of a device that may be configured to implement the various methods described herein.
  • the NAT device 104 may comprise an AP or a computing device such as a mobile phone operating as a SoftAP.
  • the NAT device 104 may include a processor 405 which controls operation of the NAT device 104.
  • the processor 405 may also be referred to as a central processing unit (CPU).
  • a portion of the memory 406 may also include non-volatile random access memory (NVRAM).
  • the processor 405 typically performs logical and arithmetic operations based on program instructions stored within the memory 406.
  • the instructions in the memory 406 may be executable to implement the methods described herein.
  • the processor 405 may be configured to generate data, process data, and control operation of the NAT device 104, as discussed in further detail above.
  • the processor 405 may be configured to generate data, process data, and control operation of the NAT device 104, as discussed in further detail above.
  • the processor 405 may comprise or be a component of a processing system implemented with one or more processors.
  • the one or more processors may be implemented with any combination of general-purpose microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate array (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic, discrete hardware components, dedicated hardware finite state machines, or any other suitable entities that can perform calculations or other manipulations of information.
  • the processing system may also include machine -readable media for storing software.
  • Software shall be construed broadly to mean any type of instructions, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Instructions may include code (e.g., in source code format, binary code format, executable code format, or any other suitable format of code). The instructions, when executed by the one or more processors, cause the processing system to perform the various functions described herein.
  • the NAT device 104 may also include a housing 408 that may include a transmitter 410 and/or a receiver 414 to allow transmission and reception of data between the NAT device 104 and a remote location.
  • the transmitter 410 and receiver 414 may be combined into a transceiver 415.
  • An antenna 416 may be attached to the housing 408 and electrically coupled to the transceiver 415.
  • the NAT device 104 may also include (not shown) multiple transmitters, multiple receivers, multiple transceivers, and/or multiple antennas.
  • the transmitter 410 may be configured to wirelessly transmit data.
  • the receiver 414 may be configured to receive data.
  • the NAT device 104 may also include a signal detector 418 that may be used in an effort to detect and quantify the level of signals received by the transceiver 415.
  • the signal detector 418 may detect such signals as total energy, energy per subcarrier per symbol, power spectral density and other signals.
  • the NAT device 104 may also include a digital signal processor (DSP) 440 for use in processing signals.
  • DSP 440 may be configured to generate a packet for transmission.
  • the NAT device 104 may further comprise a user interface 444 in some aspects.
  • the user interface 444 may comprise a keypad, a microphone, a speaker, and/or a display.
  • the user interface 444 may include any element or component that conveys information to a user of the NAT device 104 and/or receives input from the user.
  • the various components of the NAT device 104 may be coupled together by a bus system 446.
  • the bus system 446 may include a data bus, for example, as well as a power bus, a control signal bus, and a status signal bus in addition to the data bus.
  • a data bus for example, as well as a power bus, a control signal bus, and a status signal bus in addition to the data bus.
  • Those of skill in the art will appreciate the components of the NAT device 104 may be coupled together or accept or provide inputs to each other using some other mechanism.
  • processor 405 may be used to implement not only the functionality described above with respect to the processor 405, but also to implement the functionality described above with respect to the signal detector 418 and/or the DSP 440. Further, each of the components illustrated in FIG. 4 may be implemented using a plurality of separate elements.
  • FIG. 4 is just one example of a NAT device 104.
  • the NAT device 104 may also comprise any suitable communication device as discussed above and may further comprise a memory for storing data and/or instructions, a processor for executing instructions and performing the methods described herein, and a transceiver (or a receiver and a transmitter) for communicating data and/or some other communication interface.
  • FIG. 5 is a functional block diagram of another exemplary NAT device of FIG.
  • Device 500 comprises means 505, 510, 515, and 520 for performing the various actions discussed with respect to Fig. 2.
  • FIG. 6 is a functional block diagram of yet another exemplary NAT device of
  • Device 600 comprises means 606, 610, 616, and 620 for performing the various actions discussed with respect to Fig. 3.
  • any reference to an element herein using a designation such as “first,” “second,” and so forth does not generally limit the quantity or order of those elements. Rather, these designations may be used herein as a convenient method of distinguishing between two or more elements or instances of an element. Thus, a reference to first and second elements does not mean that only two elements may be employed there or that the first element must precede the second element in some manner. Also, unless stated otherwise a set of elements may comprise one or more elements. In addition, terminology of the form “at least one of: A, B, or C" used in the description or the claims means “A or B or C or any combination of these elements.”
  • DSP digital signal processor
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • a general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
  • a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP communication, or any other such configuration.
  • a software module e.g., including executable instructions and related data
  • other data may reside in a data memory such as RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer-readable storage medium known in the art.
  • a sample storage medium may be coupled to a machine such as, for example, a computer/processor (which may be referred to herein, for convenience, as a "processor") such the processor can read information (e.g., code) from and write information to the storage medium.
  • a sample storage medium may be integral to the processor.
  • the processor and the storage medium may reside in an ASIC.
  • the ASIC may reside in user equipment.
  • the processor and the storage medium may reside as discrete components in user equipment.
  • any suitable computer-program product may comprise a computer-readable medium comprising codes (e.g., executable by at least one computer) relating to one or more of the aspects of the disclosure.
  • a computer program product may comprise packaging materials.
  • the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium.
  • Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
  • a storage media may be any available media that can be accessed by a computer.
  • such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer.
  • any connection is properly termed a computer-readable medium.
  • the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave
  • the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium.
  • Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers.
  • computer readable medium may comprise non-transitory computer readable medium (e.g., tangible media).
  • computer readable medium may comprise transitory computer readable medium (e.g., a signal). Combinations of the above should also be included within the scope of computer-readable media.

Abstract

Systems and methods for performing efficient network address (NAT) translation are described herein. In some aspects, partial NAT entries are created for data packets before all the IP fragments of the data packets are received. Further, the IP fragments are transmitted before all the IP fragments of the data packets are received. In some aspects, unique IP-IDs are generated for IP fragments and/or data packets at a NAT device.

Description

SYSTEMS AND METHODS FOR DATA PACKET PROCESSING
BACKGROUND
Field
[0001] The present application relates generally to communications, and more specifically to systems, methods, and device (such as routers) for efficient processing of internet protocol (IP) fragments using network address translation (NAT) functionality.
Background
[0002] Communication systems are widely deployed to provide various types of communication (e.g., voice, data, multimedia services, etc.) between communication devices (e.g., mobile handsets, PDAs (Personal Data Assistants), personal computers, smart phones, servers, or any other electronic device capable of communicating via a network). The devices may transmit/receive data between each other via a network of interconnected devices. For example, client devices may exchange data with server devices over a network.
[0003] Due to the limited availability of IPv4 addresses for devices, client devices may access a network through another device, such as a device running network address translation (NAT) functionality (herein referred to as a "NAT device"). NAT devices may provide public domain access to a group of client devices (which may be grouped in a local area network (LAN)). A single publicly routeable IPv4 address may be assigned to the NAT device for the group of client devices to access the public network, instead of each client device having its own publicly routeable IPv4 address. This saves on the assignment of IPv4 addresses. Further, using a NAT device allows security protocols to be established at the NAT device that help protect all the client devices, since all the traffic flows through the NAT device.
[0004] For the client devices to communicate with a server device, the data sent from client devices to the server device is routed through the NAT device. For the server to communicate with the client devices, the server devices send data to the NAT device, and the NAT device sends the data to the client devices. [0005] The NAT device may perform network address translation for the data exchanged between the client devices and server devices. Utilizing NAT, the NAT device may modify the internet protocol (IP) addresses of data packets from the client devices before sending the data packets to the server. Similarly, the NAT device may modify the IP addresses of data packets from the server before sending the data packets to the clients.
[0006] For example, the client devices may be part of a local network that uses
"private" IP addresses for each of the client devices to communicate within the local network. These private IP addresses, however, may not enable the client devices to communicate with devices that reside on a "public" network, such as server devices that reside on the Internet. The NAT device, however, may be associated with a public IP address and enabled to communicate with devices on the public network. Accordingly, the NAT device may receive data packets from the client devices with private IP address, the packets being destined for devices on the public network. The NAT device may modify the private IP addresses of the data packets to reflect the public IP address of the NAT device and send the data packets to a server on the public network. The NAT device (e.g., a symmetric NAT device) may further modify other information in the data packets, such as transport layer port information in order to, for example, monitor multiple traffic flows from a single client device. The server may then send data packets in response to the NAT device using the public IP address. The NAT device must then determine to which client devices each response data packet belongs, and modify the response data packets to have the appropriate private IP addresses of the client devices.
[0007] In order to be able to perform NAT, the NAT device may need to wait before all the IP fragments of a data packet have arrived at the NAT from a client device before performing NAT and sending the data packet to the server, which may lead to delay sin communication and increased memory buffering requirements in the NAT device. This may be especially true where IP fragments arrive at the NAT device out of order with the first IP fragment arriving at the NAT device last as further discussed herein.
[0008] Further, in some instances, two or more client devices that are associated with the same NAT device may send IP datagrams or fragments to the same server using the same IP-ID for the datagrams or fragments. In such instances, after NAT is performed by the NAT device and the datagrams or fragments are sent to the server, the server may may not be able to distinguish between the datagrams or fragments from a first client and a second client device sent via the NAT device. This leads to inefficiencies and errors in communications. Thus, enhanced systems and methods of performing NAT are needed.
SUMMARY
[0009] The systems, methods, and devices of the invention each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this invention as expressed by the claims which follow, some features will now be discussed briefly. After considering this discussion, and particularly after reading the section entitled "Detailed Description" one will understand how the features of this invention provide advantages that include efficient network address translation (NAT).
[0010] One embodiment of the disclosure provides a method for communicating in a network. The method comprises receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet. The method comprises transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
[0011] Another embodiment of the disclosure provides a method for communicating in a network. The method comprises receiving data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow. The method comprises generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow. The method comprises transmitting the data packet fragments with the second IP-ID.
[0012] Another embodiment of the disclosure provides an apparatus for communicating in a network. The apparatus comprises a receiver configured to receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet. The apparatus comprises a transmitter configured to transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
[0013] Another embodiment of the disclosure provides an apparatus for communicating in a network. The apparatus comprises a receiver configured to receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow. The apparatus comprises a processor configured to generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow. The apparatus comprises a transmitter configured to transmit the data packet fragments with the second IP-ID.
[0014] Another embodiment of the disclosure provides an apparatus for communicating in a network. The apparatus comprises means for receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet. The apparatus comprises means for transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
[0015] Another embodiment of the disclosure provides an apparatus for communicating in a network. The apparatus comprises means for receiving data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow. The apparatus comprises means for generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow. The apparatus comprises means for transmitting the data packet fragments with the second IP-ID.
[0016] Another embodiment of the disclosure provides a computer readable medium comprising instructions. The instructions when executed cause an apparatus to receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet. The instructions when executed cause the apparatus to transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
[0017] Another embodiment of the disclosure provides a computer readable medium comprising instructions. The instructions when executed cause an apparatus to receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow. The instructions when executed cause the apparatus to generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow. The instructions when executed cause the apparatus to transmit the data packet fragments with the second IP-ID. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] FIG. 1 illustrates exemplary interoperations of devices of a private network with devices of a public network via a network address translation (NAT) device.
[0019] FIG. 2 is a flowchart illustrating an exemplary process for performing NAT using partial NAT entries.
[0020] FIG. 3 is a flowchart illustrating an exemplary process 300 for replacing the IP-
ID of an IP fragment with a new IP-ID unique to a flow associated with the IP fragment.
[0021] FIG. 4 is a functional block diagram of an exemplary NAT device of FIG. 1.
[0022] FIG. 5 is a functional block diagram of another exemplary NAT device of FIG.
1.
[0023] FIG. 6 is a functional block diagram of yet another exemplary NAT device of
FIG. 1.
DETAILED DESCRIPTION
[0024] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments. The following description is presented to enable any person skilled in the art to make and use the invention. Details are set forth in the following description for purpose of explanation. It should be appreciated that one of ordinary skill in the art would realize that the invention may be practiced without the use of these specific details. In other instances, well known structures and processes are not elaborated in order not to obscure the description of the invention with unnecessary details. Thus, the present invention is not intended to be limited by the embodiments shown, but is to be accorded with the widest scope consistent with the principles and features disclosed herein.
[0025] The techniques described herein may be used for various communication networks such as Code Division Multiple Access (CDMA) networks, Time Division Multiple Access (TDMA) networks, Frequency Division Multiple Access (FDMA) networks, Orthogonal FDMA (OFDMA) networks, Single- Carrier FDMA (SC-FDMA) networks, Local Area Networks (LAN), Personal Area Networks (PAN), Wide Area Networks (WAN), wired networks, etc. The terms "networks" and "systems" are often used interchangeably. A CDMA network may implement a radio technology such as Universal Terrestrial Radio Access (UTRA), cdma2000, etc. UTRA includes Wideband-CDMA (W-CDMA) and Low Chip Rate (LCR). cdma2000 covers IS-2000, IS-95 and IS-856 standards. A TDMA network may implement a radio technology such as Global System for Mobile Communications (GSM). An OFDMA network may implement a radio technology such as Evolved UTRA (E-UTRA), IEEE 802.9, IEEE 802.16, IEEE 802.20, Flash-OFDM", etc. UTRA, E-UTRA, and GSM are part of Universal Mobile Telecommunication System (UMTS). Long Term Evolution (LTE) is an upcoming release of UMTS that uses E-UTRA. UTRA, E-UTRA, GSM, UMTS and LTE are described in documents from an organization named "3rd Generation Partnership Project" (3GPP). cdma2000 is described in documents from an organization named "3rd Generation Partnership Project 2" (3GPP2). These various radio technologies and standards are known in the art.
[0026] Single carrier frequency division multiple access (SC-FDMA) utilizes single carrier modulation and frequency domain equalization. SC-FDMA has similar performance and essentially similar overall complexity as an OFDMA system. An SC- FDMA signal has lower peak-to-average power ratio (PAPR) because of its inherent single carrier structure. SC-FDMA has drawn significant attention, especially in uplink communications where lower PAPR greatly benefits the mobile terminal in terms of transmit power efficiency. It is currently a working assumption for an uplink multiple access scheme in 3GPP Long Term Evolution (LTE), or Evolved UTRA (E-UTRA).
[0027] Systems and methods are described herein that perform efficient processing of internet protocol (IP) fragments through network address translation (NAT). In some aspects, the NAT may be performed by a SoftAP (software access point) device. The NAT discussed herein may be a "symmetric" type NAT, which involves storing transport header information in a NAT entry.
[0028] FIG. 1 illustrates exemplary interoperations of devices of a private network with devices of a public network via a NAT device. FIG. 1 illustrates a private network (e.g., a LAN, a PAN, a WAN, etc.) that is configured to support communication between a number of communication devices 102a-102c (e.g., mobile handsets, PDAs (Personal Data Assistants), personal computers, smart phones, servers, or any other electronic device capable of communicating via a network). The devices 102a-102c may communicate with each other in the private network using private IP addresses. [0029] The communication devices 102a- 102c may be interconnected by one or more wired or wireless communications links. The communications links may include one or more of the following types of communications links: GSM (Global System for Mobile communications), UMTS (Universal Mobile Telecommunications System), UMTS- TDD (UMTS-Time Division Duplexing), CDMA (Code Division Multiple Access), CDMA2000, WCDMA (Wideband CDMA), TDMA (Time Division Multiple Access), FDMA (Frequency Division Multiple Access), lxEV-DO (Evolution-Data Optimized), Wi-Fi, Wi-Max, Bluetooth, or IEEE 802.11, telephone (e.g., POTS), cable, Ethernet, PLC (Power Line Communication), or fiber optic links, or any other link that allows a connection between devices. It should be noted that the private network may include more or less communication devices 102, and that there may be a different arrangement of links between the communication devices 102.
[0030] The communication devices 102 may further be configured to communicate with a NAT device 104 in the private network using a private IP address of the NAT device via one or more wireless and/or wired communication links such as those described above. The NAT device 104 may further be connected to a public network, such as the Internet 105 via one or more wireless and/or wired communication links such as those described above. The NAT device 104 may be a SoftAP, an access point, or some other suitable device configured to perform NAT of data packets transmitted from the client devices 102 and destined for devices (e.g., servers or other devices) on the Internet 105. For example, the client devices 102 may transmit data packets (e.g., IP data packets) for the server 106a and/or the server 106b that get routed to the NAT device 104. The data packets may include a private IP address of the client device 102 that transmitted the data packet to indicate the source of the data packet. The NAT device 104 may change the private IP address of the data packet that is used for communication in the private network to a public IP address that is used for communication on the Internet. The public IP address may be a public IP address associated with the NAT device 104. The NAT device 104 may further translate transport level information of the data packet such as a private port used for communication on the private network to a public port used for communication on the Internet 105. The NAT device 104 may further transmit the data packets from the client devices 102 to the devices on the Internet 105 such as the servers 106a and/or 106b. The servers 106a and/or 106b may process the data packets and send response data packets to the NAT device 104 destined for the client devices 102. The NAT device 104 may change the public IP addresses of the response data packets to the appropriate private IP addresses of the client devices 102 and transmit the response data packets to the client devices 102. The NAT device 104 may further translate transport level information of the data packet such as a public port used for communication on the Internet 105 to a private port used for communication on the private network.
[0031] The NAT device 104 may receive a data packet as a series of IP fragments from the client devices 102a. In some aspects, the NAT device 104 waits until all the IP fragments of the data packet arrive at the NAT device 104 before performing NAT and sending the data packet to its destination, for example, server 106a. Accordingly, the NAT device 104 may store the IP fragments in memory until they are transmitted. This may occur because the transport header information (which may be needed for port translation) needed to perform NAT on the IP fragments is only contained in the first IP fragment of a data packet, and not the remaining IP fragments. Thus, the NAT device 104 waits until all IP fragments of a data packet are received to determine the needed transport header information and NAT the data packet. The NAT device 104 uses the transport header information along with other information to create a NAT entry for the data packet. The NAT entry may be stored in a NAT database located on a memory of the NAT device 104. The data packet is then transmitted to the server 106a. The NAT entry is used by the NAT device 104 when a response is received from the server 106a to determine which client device 102 the response is associated with in order to send the response to the appropriate client device 102. Each NAT entry at the NAT device 104 may be for a particular packet flow (e.g., for data packets having the same characteristics such as local IP address, local port, target IP address, target port, global IP address, global port, and IP-ID). Accordingly, each NAT entry may correspond to and identify a particular IP/transport packet flow.
[0032] In certain aspects, the NAT device 104 may be configured to NAT a data packet before all IP fragments (e.g., before the first IP fragment of a series of IP fragments) of the data packet arrive at the NAT device 104. Accordingly, the NAT device 104 performs NAT on IP fragments as they arrive at the NAT device 104 (e.g., from the client 102a), and the IP fragments are sent to the destination device (e.g., the server 106a) before all the IP fragments of a packet are received at the NAT device 104. If the first IP fragment (e.g., 1) of a series of IP fragments (e.g., fragments 1, 2, 3, and 4 in order) of a data packet is received at the NAT device 104 before other IP fragments (e.g., 2, 3, and 4), the NAT device 104 creates a full NAT entry for the data packet as the transport header is included in the first IP fragment. The full NAT entry may include information such as a local IP address, local port, target IP address, target port, global IP address, global port, and IP-ID.
[0033] If a different IP fragment (e.g., 2, 3, and/or 4) of a data packet is received at the
NAT device 104 before the first IP fragment (e.g., 1) of the packet is received, the NAT device 104 creates a partial NAT entry including only the information the NAT device 104 has based on the IP fragment and not the information from the transport header. For example, the partial NAT entry may include information such as a local IP address, target IP address, global IP address, global port, and IP-ID. However, the partial NAT entry may be missing a local port and a target port that would be included in a complete NAT entry. When the first IP fragment of the packet is received, the NAT device 104 updates the partial NAT entry to a complete NAT entry. The use of a partial NAT entry should not be problematic, on the basis that the destination device (e.g., server 106a) will not respond until all IP fragments of the packet are received by the destination, meaning that by the time the server 106a responds, the NAT device 104 will have a complete NAT entry. In some aspects, the server 106a may transmit an internet control message protocol (ICMP) error message before receiving all of the IP fragments of the packet. However, the NAT device 104 can NAT such ICMP error messages and transmit them back to the appropriate client device 102 based on the partial NAT entry.
[0034] The use of a partial NAT entry, allows the NAT device 104 to distinguish between IP fragments of different packets from different client devices 102 by determining which IP fragments have information that match the partial NAT entry. Therefore, the NAT device 104 can keep track of where the IP fragments and responses should be routed. Further, the partial NAT entry allows an error response received from a destination device such as the server 106a to be correctly routed to a client device 102 based on the information in the partial NAT entry.
[0035] In some aspects, the NAT device 104 may receive first IP fragments with a first
IP-ID from a first client device 102a to send to a destination device such as the server 106a and also may receive second IP fragments with the first IP-ID from a second client device 102b to send to the same destination device, server 106a. The NAT device 104 may, in some aspects, NAT both the first IP fragments and the second IP fragments so they both have the same source and destination addresses (the source address being the NAT device 104 address and the destination address being the server 106a address) when sent to the server 106a. When the server 106a then receives the first IP fragments and the second IP fragments, the server 106a cannot distinguish that they are for different packets as the source address, destination address, and IP-ID for both sets of IP fragments is the same. This causes errors at the server 106a. For example, the server 106a assumes that both sets of IP fragments are from the same client device 102, and therefore are part of the same packet. The server 106a will try to use both sets of IP fragments to then reassemble a single packet. This results in reassembly errors and causes the packets to be dropped at the server 106a.
In some aspects, in order to solve the issue with the server 106a being unable to determine that different sets of IP fragments are for different packets, the NAT device 104 replaces the original IP-ID of the packet with a generated IP-ID. For example, a first client device 102a may send data packet fragments with a first IP-ID to the NAT device 104 to be sent to the server 106a. Further, a second client device 102b may send data packet fragments with the first IP-ID to the NAT device 104 to be sent to the server 106a. Accordingly, the NAT device 104 may generate a first new IP-ID that is unique to data packets sent from the first client 102a to the server 106a and a second new IP-ID that is unique to data packets sent from the second client 102b to the server 106a. The NAT device 104 may then replace the first IP-ID in the IP fragments for the first client device 102a with the first new IP-ID and replace the first IP-ID in the IP fragments for the second client device 102b with the second new IP-ID. The NAT device 104 may select the new IP-IDs based on any appropriate algorithm such as selecting IP-IDs in increasing order, random, pseudorandom, hash function, etc. The first new IP-ID and the second new IP-ID may each be different than the first IP-ID. Alternatively, one of either the first new IP-IP or the second new IP-ID may be the same as the first IP-ID and the other of the first new IP-IP or the second new IP-ID may be different than the first IP-ID. Accordingly, the server 106a receives IP fragments with different IP-IDs for data packets from each of the first client device 102a and the second client device 102b and can differentiate between them. Further, in some aspects, a partial NAT entry allows the NAT device 104 to keep track of which IP-ID is generated for which IP fragments as all the IP fragments for a given packet from a given client device 102 may have the same IP-ID.
[0037] As discussed above, the use of partial NAT entries may allow the NAT device
104 to transmit IP fragments of a data packet before all of the IP fragments of the data packet are received at the NAT device 104. Accordingly, the NAT device 104 may have reduced memory requirements as it does not need to store/queue IP fragments before transmission. Further, the NAT device 104 may not need to perform reassembly/re-fragmentations of IP fragments of a data packet when utilizing partial NAT entries. Accordingly, the number of operations to be performed by a CPU or processor of the NAT device 104 may be reduced. The lower CPU usage may also result in lower power consumption. In addition, by avoiding reassembly/fragmentation, data packets are transmitted with less delay, therefore increasing throughput at the NAT device 104.
[0038] FIG. 2 is a flowchart illustrating an exemplary process 200 for performing NAT using partial NAT entries. At a block 205, the NAT device 104 receives an IP fragment of a data packet from a client device 102. Further, at a block 207, the NAT device 104 determines if the IP fragment corresponds to a data packet for which there is already a corresponding NAT entry at the NAT device 104. If at block 207, the NAT device 104 determines there is no corresponding NAT entry, the process 200 continues to a block 209. If at the block 207, the NAT device 104 determines there is a corresponding NAT entry, the process 200 continues to a block 215.
[0039] At the block 209, the NAT device 104 determines whether the IP fragment of the data packet is the first IP fragment in order of the data packet. If at the block 209 the NAT device 104 determines the IP fragment of the data packet is the first IP fragment in order of the data packet, the process continues to a block 211. At the block 211, the NAT device 104 creates a complete NAT entry for the IP fragment based on the transport header in the IP fragment. If at the block 209 the NAT device 104 determines the IP fragment of the data packet is not the first IP fragment in order of the data packet, the process continues to a block 213. At the block 213, the NAT device 104 creates a partial NAT entry for the IP fragment. The process 200 then continues to a block 221. [0040] At the block 215, the NAT device 104 determines whether the corresponding
NAT entry is a complete NAT entry or a partial NAT entry. If the NAT device 104 determines the corresponding NAT entry is a partial NAT entry, the process 200 continues to a block 217. If the NAT device 104 determines the corresponding NAT entry is a complete NAT entry, the process 200 continues to a block 221
[0041] At the block 217, the NAT device 104 determines whether the IP fragment of the data packet is the first IP fragment in order of the data packet. If the NAT device 104 determines the IP fragment of the data packet is the first IP fragment in order of the data packet, the process 200 continues to a block 219. At the block 219, the NAT device 104 converts the partial NAT entry to a complete NAT entry based on the transport header in the IP fragment. The process 200 then continues to a block 221. If the NAT device 104 determines the IP fragment of the data packet is not the first IP fragment in order of the data packet, the process 200 continues to a block 221.
[0042] At the block 221, the NAT device 104 performs NAT of the IP fragment.
Continuing at block 223, the NAT device 104 transmits the IP fragment to its destination (e.g., the server 106a).
[0043] FIG. 3 is a flowchart illustrating an exemplary process 300 for replacing the IP-
ID of an IP fragment with a new IP-ID unique to a flow associated with the IP fragment. At a block 305, the NAT device 104 receives an IP fragment having a first IP-ID over a first traffic flow. Continuing at a block 310, the NAT device 104 generates a second IP- ID for the IP fragment that is unique to the first traffic flow. Further, at a block 315, the NAT device 104 stores a mapping of the first IP-ID to the second IP-ID, for example as part of a partial or a complete NAT entry. Next, at a block 320, the NAT device 104 performs NAT of the IP fragment using the second IP-ID. Further, at a block 325, the NAT device 104 transmits the IP fragment to its destination (e.g., the server 106a).
[0044] One or ordinary skill in the art should recognize that various steps may by added or omitted from the processes 200 and 300. Further, the various steps of the processes 200 and 300 may be performed in a different order than described above.
[0045] FIG. 4 is a functional block diagram of an exemplary NAT device 104 of FIG. 1.
The NAT device 104 is an example of a device that may be configured to implement the various methods described herein. The NAT device 104 may comprise an AP or a computing device such as a mobile phone operating as a SoftAP. [0046] The NAT device 104 may include a processor 405 which controls operation of the NAT device 104. The processor 405 may also be referred to as a central processing unit (CPU). Memory 406, which may include both read-only memory (ROM) and random access memory (RAM), provides instructions and data to the processor 405. A portion of the memory 406 may also include non-volatile random access memory (NVRAM). The processor 405 typically performs logical and arithmetic operations based on program instructions stored within the memory 406. The instructions in the memory 406 may be executable to implement the methods described herein.
[0047] When the NAT device 104 is implemented or used as a transmitting node, the processor 405 may be configured to generate data, process data, and control operation of the NAT device 104, as discussed in further detail above.
[0048] When the NAT device 104 is implemented or used as a receiving node, the processor 405 may be configured to generate data, process data, and control operation of the NAT device 104, as discussed in further detail above.
[0049] The processor 405 may comprise or be a component of a processing system implemented with one or more processors. The one or more processors may be implemented with any combination of general-purpose microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate array (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic, discrete hardware components, dedicated hardware finite state machines, or any other suitable entities that can perform calculations or other manipulations of information.
[0050] The processing system may also include machine -readable media for storing software. Software shall be construed broadly to mean any type of instructions, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Instructions may include code (e.g., in source code format, binary code format, executable code format, or any other suitable format of code). The instructions, when executed by the one or more processors, cause the processing system to perform the various functions described herein.
[0051] The NAT device 104 may also include a housing 408 that may include a transmitter 410 and/or a receiver 414 to allow transmission and reception of data between the NAT device 104 and a remote location. The transmitter 410 and receiver 414 may be combined into a transceiver 415. An antenna 416 may be attached to the housing 408 and electrically coupled to the transceiver 415. The NAT device 104 may also include (not shown) multiple transmitters, multiple receivers, multiple transceivers, and/or multiple antennas. The transmitter 410 may be configured to wirelessly transmit data. The receiver 414 may be configured to receive data.
[0052] The NAT device 104 may also include a signal detector 418 that may be used in an effort to detect and quantify the level of signals received by the transceiver 415. The signal detector 418 may detect such signals as total energy, energy per subcarrier per symbol, power spectral density and other signals. The NAT device 104 may also include a digital signal processor (DSP) 440 for use in processing signals. The DSP 440 may be configured to generate a packet for transmission.
[0053] The NAT device 104 may further comprise a user interface 444 in some aspects.
The user interface 444 may comprise a keypad, a microphone, a speaker, and/or a display. The user interface 444 may include any element or component that conveys information to a user of the NAT device 104 and/or receives input from the user.
[0054] The various components of the NAT device 104 may be coupled together by a bus system 446. The bus system 446 may include a data bus, for example, as well as a power bus, a control signal bus, and a status signal bus in addition to the data bus. Those of skill in the art will appreciate the components of the NAT device 104 may be coupled together or accept or provide inputs to each other using some other mechanism.
[0055] Although a number of separate components are illustrated in FIG. 4, those of skill in the art will recognize that one or more of the components may be combined or commonly implemented. For example, the processor 405 may be used to implement not only the functionality described above with respect to the processor 405, but also to implement the functionality described above with respect to the signal detector 418 and/or the DSP 440. Further, each of the components illustrated in FIG. 4 may be implemented using a plurality of separate elements.
[0056] It should be understood that FIG. 4 is just one example of a NAT device 104.
The NAT device 104may also comprise any suitable communication device as discussed above and may further comprise a memory for storing data and/or instructions, a processor for executing instructions and performing the methods described herein, and a transceiver (or a receiver and a transmitter) for communicating data and/or some other communication interface. [0057] FIG. 5 is a functional block diagram of another exemplary NAT device of FIG.
1. Device 500 comprises means 505, 510, 515, and 520 for performing the various actions discussed with respect to Fig. 2.
[0058] FIG. 6 is a functional block diagram of yet another exemplary NAT device of
FIG. 1. Device 600 comprises means 606, 610, 616, and 620 for performing the various actions discussed with respect to Fig. 3.
[0059] It should be understood that any reference to an element herein using a designation such as "first," "second," and so forth does not generally limit the quantity or order of those elements. Rather, these designations may be used herein as a convenient method of distinguishing between two or more elements or instances of an element. Thus, a reference to first and second elements does not mean that only two elements may be employed there or that the first element must precede the second element in some manner. Also, unless stated otherwise a set of elements may comprise one or more elements. In addition, terminology of the form "at least one of: A, B, or C" used in the description or the claims means "A or B or C or any combination of these elements."
[0060] Those skilled in the art will understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0061] Those skilled in the art will further appreciate that the various illustrative logical blocks, modules, circuits, methods and algorithms described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, methods and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
[0062] The various illustrative logical blocks, modules, and circuits described in connection with the examples disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP communication, or any other such configuration.
[0063] The steps of a method or algorithm described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module (e.g., including executable instructions and related data) and other data may reside in a data memory such as RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer-readable storage medium known in the art. A sample storage medium may be coupled to a machine such as, for example, a computer/processor (which may be referred to herein, for convenience, as a "processor") such the processor can read information (e.g., code) from and write information to the storage medium. A sample storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in user equipment. In the alternative, the processor and the storage medium may reside as discrete components in user equipment. Moreover, in some aspects any suitable computer-program product may comprise a computer-readable medium comprising codes (e.g., executable by at least one computer) relating to one or more of the aspects of the disclosure. In some aspects a computer program product may comprise packaging materials. [0064] In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Thus, in some aspects computer readable medium may comprise non-transitory computer readable medium (e.g., tangible media). In addition, in some aspects computer readable medium may comprise transitory computer readable medium (e.g., a signal). Combinations of the above should also be included within the scope of computer-readable media.
[0065] The previous description of the disclosed examples is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these examples will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other examples without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the examples shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
WHAT IS CLAIMED IS:

Claims

1. A method for communicating in a network, the method comprising: receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet; and
transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
2. The method of Claim 1, wherein transmitting the data packet fragment before receipt of the entire sequence of data packet fragments comprises transmitting the data packet fragment before receipt of a first sequential data packet fragment of the sequence of data packet fragments.
3. The method of Claim 1, wherein the receiving and transmitting are performed by a software access point (SoftAP).
4. The method of Claim 1, further comprising performing network address translation of the data packet fragment before receipt of the entire sequence of data packet fragments.
5. The method of Claim 4, further comprising creating a partial network address translation entry for the data packet fragment.
6. The method of Claim 5, wherein the partial network address translation entry includes a local IP address, target IP address, global IP address, global port, and IP identifier (IP-ID).
7. A method for communicating in a network, the method comprising: receiving data packet fragments having a first internet protocol identifier
(IP-ID) over a first traffic flow;
generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow; and
transmitting the data packet fragments with the second IP-ID.
8. The method of Claim 7, wherein the receiving and generating are performed by a software access point (SoftAP).
9. The method of Claim 7, further comprising performing network address translation of the data packet fragments.
10. An apparatus for communicating in a network, the apparatus comprising: a receiver configured to receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet; and
a transmitter configured to transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
11. The apparatus of Claim 10, wherein transmitting the data packet fragment before receipt of the entire sequence of data packet fragments comprises transmitting the data packet fragment before receipt of a first sequential data packet fragment of the sequence of data packet fragments.
12. The apparatus of Claim 10, wherein the apparatus comprises a software access point (SoftAP).
13. The apparatus of Claim 10, further comprising a processor configured to perform network address translation of the data packet fragment before receipt of the entire sequence of data packet fragments.
14. The apparatus of Claim 13, wherein the processor is further configured to create a partial network address translation entry for the data packet fragment.
15. The apparatus of Claim 14, wherein the partial network address translation entry includes a local IP address, target IP address, global IP address, global port, and IP identifier (IP-ID).
16. An apparatus for communicating in a network, the apparatus comprising: a receiver configured to receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow;
a processor configured to generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow; and
a transmitter configured to transmit the data packet fragments with the second IP-ID.
17. The apparatus of Claim 16, wherein the apparatus comprises a software access point (SoftAP).
18. The apparatus of Claim 16, wherein the processor is further configured to perform network address translation of the data packet fragments.
19. An apparatus for communicating in a network, the apparatus comprising: means for receiving a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet; and means for transmitting the data packet fragment before receipt of the entire sequence of data packet fragments.
20. The apparatus of Claim 19, wherein means for transmitting the data packet fragment before receipt of the entire sequence of data packet fragments comprises means for transmitting the data packet fragment before receipt of a first sequential data packet fragment of the sequence of data packet fragments.
21. The apparatus of Claim 19, wherein the apparatus comprises a software access point (SoftAP).
22. The apparatus of Claim 19, further comprising means for performing network address translation of the data packet fragment before receipt of the entire sequence of data packet fragments.
23. The apparatus of Claim 22, further comprising means for creating a partial network address translation entry for the data packet fragment.
24. The apparatus of Claim 23, wherein the partial network address translation entry includes a local IP address, target IP address, global IP address, global port, and IP identifier (IP-ID).
25. An apparatus for communicating in a network, the apparatus comprising: means for receiving data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow;
means for generating a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow; and
means for transmitting the data packet fragments with the second IP-ID.
26. The apparatus of Claim 25, wherein the apparatus comprises a software access point (SoftAP).
27. The apparatus of Claim 26, further comprising means for performing network address translation of the data packet fragments.
28. A computer readable medium comprising instructions that when executed cause an apparatus to:
receive a data packet fragment of a sequence of data packet fragments of an internet protocol (IP) data packet; and
transmit the data packet fragment before receipt of the entire sequence of data packet fragments.
29. The computer readable medium of Claim 28, wherein transmitting the data packet fragment before receipt of the entire sequence of data packet fragments comprises transmitting the data packet fragment before receipt of a first sequential data packet fragment of the sequence of data packet fragments.
30. The computer readable medium of Claim 28, wherein the apparatus comprises a software access point (SoftAP).
31. The computer readable medium of Claim 28, wherein the instructions when executed further cause the apparatus to perform network address translation of the data packet fragment before receipt of the entire sequence of data packet fragments.
32. The computer readable medium of Claim 31, wherein the instructions when executed further cause the apparatus to create a partial network address translation entry for the data packet fragment.
33. The computer readable medium of Claim 32, wherein the partial network address translation entry includes a local IP address, target IP address, global IP address, global port, and IP identifier (IP-ID).
34. A computer readable medium comprising instructions that when executed cause an apparatus to:
receive data packet fragments having a first internet protocol identifier (IP-ID) over a first traffic flow;
generate a second IP-ID for the data packet fragments, wherein the second IP-ID is unique to the first flow; and
transmit the data packet fragments with the second IP-ID.
35. The computer readable medium of Claim 34, wherein the apparatus comprises a software access point (SoftAP).
36. The computer readable medium of Claim 34, wherein the instructions when executed further cause the apparatus to perform network address translation of the data packet fragments.
PCT/US2012/059103 2011-10-06 2012-10-05 Systems and methods for data packet processing WO2013052898A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201280049250.3A CN103918246B (en) 2011-10-06 2012-10-05 For being segmented the system and method for carrying out packet processing to IP using network address translation function
IN2179CHN2014 IN2014CN02179A (en) 2011-10-06 2012-10-05
JP2014534805A JP5796135B2 (en) 2011-10-06 2012-10-05 System and method for data packet processing
EP12787189.5A EP2764681B1 (en) 2011-10-06 2012-10-05 Systems and methods for data packet processing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/267,863 US9185073B2 (en) 2011-10-06 2011-10-06 Systems and methods for data packet processing
US13/267,863 2011-10-06

Publications (2)

Publication Number Publication Date
WO2013052898A2 true WO2013052898A2 (en) 2013-04-11
WO2013052898A3 WO2013052898A3 (en) 2013-07-11

Family

ID=47178877

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2012/059103 WO2013052898A2 (en) 2011-10-06 2012-10-05 Systems and methods for data packet processing

Country Status (7)

Country Link
US (1) US9185073B2 (en)
EP (2) EP3065380A1 (en)
JP (1) JP5796135B2 (en)
CN (1) CN103918246B (en)
IN (1) IN2014CN02179A (en)
TW (1) TW201330554A (en)
WO (1) WO2013052898A2 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9046898B2 (en) * 2011-02-24 2015-06-02 Google Inc. Power-preserving communications architecture with long-polling persistent cloud channel for wireless network-connected thermostat
US9258272B1 (en) * 2011-10-21 2016-02-09 Juniper Networks, Inc. Stateless deterministic network address translation
US9178846B1 (en) 2011-11-04 2015-11-03 Juniper Networks, Inc. Deterministic network address and port translation
US10218756B2 (en) * 2012-01-06 2019-02-26 Comcast Cable Communications, Llc Streamlined delivery of video content
US10250559B2 (en) * 2013-09-19 2019-04-02 Cisco Technology, Inc. Reversible mapping of network addresses in multiple network environments
CN103580930A (en) * 2013-11-22 2014-02-12 汉柏科技有限公司 Method and system for controlling network management
US9525661B2 (en) * 2014-09-05 2016-12-20 Alcatel Lucent Efficient method of NAT without reassemling IPV4 fragments
US9917882B2 (en) 2014-11-30 2018-03-13 Sonicwall Inc. Transparent deferred spooling store and forward based on standard network system and client interface
US10313486B2 (en) * 2015-01-07 2019-06-04 Sonicwall Inc. Optimizing transfer of fragmented packetized data
CN104836700B (en) * 2015-04-17 2018-11-06 中国科学院信息工程研究所 NAT host number detection methods based on IPID and probability statistics model
US9813526B2 (en) 2015-05-26 2017-11-07 Sonicwall Inc. Reducing transmission pathway lengths within a distributed network
US10129207B1 (en) 2015-07-20 2018-11-13 Juniper Networks, Inc. Network address translation within network device having multiple service units
US10158735B2 (en) 2015-08-07 2018-12-18 Sonicwall Inc. Read-ahead on signed connections with unsigning, inline, transparent proxies
US10469446B1 (en) 2016-09-27 2019-11-05 Juniper Networks, Inc. Subscriber-aware network address translation
TWI622947B (en) * 2017-01-13 2018-05-01 飛捷科技股份有限公司 Composite mobile payment system and mobile pos module thereof
CN109525518B (en) * 2018-12-25 2021-01-12 北京物芯科技有限责任公司 IP message network address conversion method and device based on FPGA

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815516A (en) 1996-04-05 1998-09-29 International Business Machines Corporation Method and apparatus for producing transmission control protocol checksums using internet protocol fragmentation
US6366582B1 (en) * 1997-09-19 2002-04-02 Hitachi, Ltd. Connection switching apparatus, connection switching network control system and connection switching network control method
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6453357B1 (en) 1999-01-07 2002-09-17 Cisco Technology, Inc. Method and system for processing fragments and their out-of-order delivery during address translation
JP3017217B1 (en) 1999-03-02 2000-03-06 中国日本電気ソフトウェア株式会社 IPv4-IPv6 conversion device
US6711164B1 (en) 1999-11-05 2004-03-23 Nokia Corporation Method and apparatus for performing IP-ID regeneration to improve header compression efficiency
US7389358B1 (en) 2000-09-13 2008-06-17 Fortinet, Inc. Distributed virtual system to support managed, network-based services
US20030009561A1 (en) * 2001-06-14 2003-01-09 Sollee Patrick N. Providing telephony services to terminals behind a firewall and /or network address translator
US20030081582A1 (en) 2001-10-25 2003-05-01 Nikhil Jain Aggregating multiple wireless communication channels for high data rate transfers
US7298745B2 (en) 2001-11-01 2007-11-20 Intel Corporation Method and apparatus to manage packet fragmentation with address translation
US7500102B2 (en) 2002-01-25 2009-03-03 Microsoft Corporation Method and apparatus for fragmenting and reassembling internet key exchange data packets
US20040184455A1 (en) * 2003-03-19 2004-09-23 Institute For Information Industry System and method used by a gateway for processing fragmented IP packets from a private network
CN100505677C (en) * 2003-06-19 2009-06-24 三菱电机株式会社 Radio base station device and mobile communication system
JP2005012698A (en) 2003-06-20 2005-01-13 Furukawa Electric Co Ltd:The Data relay method, data relay equipment, and data relay signal using the same
US8325717B2 (en) * 2003-07-30 2012-12-04 Foundry Networks, Llc Method and system for IP fragmentation handling
US7474619B2 (en) * 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7801127B2 (en) * 2004-10-25 2010-09-21 Ineoquest Technologies, Inc. System and method for creating a sequence number field for streaming media in a packet-based networks utilizing internet protocol
JP2007124487A (en) * 2005-10-31 2007-05-17 Toshiba Corp Communication control method
CA2678154C (en) * 2007-02-12 2013-11-12 Huseyin Cahit Akin Access line bonding and splitting methods and apparatus
WO2008126228A1 (en) 2007-03-29 2008-10-23 Fujitsu Limited Communication apparatus
CN100562020C (en) * 2007-03-30 2009-11-18 华为技术有限公司 Detection method, statistic analysis server and detection system
US7769015B2 (en) 2007-09-11 2010-08-03 Liquid Computing Corporation High performance network adapter (HPNA)
US20090300207A1 (en) * 2008-06-02 2009-12-03 Qualcomm Incorporated Pcc enhancements for ciphering support
US8320372B2 (en) * 2008-06-23 2012-11-27 Alcatel Lucent Processing of packet fragments
US20100097931A1 (en) * 2008-10-21 2010-04-22 Shakeel Mustafa Management of packet flow in a network
JP4715937B2 (en) * 2009-03-06 2011-07-06 ブラザー工業株式会社 Terminal device and computer program
US7944924B2 (en) * 2009-04-16 2011-05-17 Alcatel-Lucent Canada Inc. Handling of received implicit null packets
JP5164953B2 (en) 2009-06-17 2013-03-21 アラクサラネットワークス株式会社 Internetwork equipment
EP2337274B1 (en) * 2009-12-17 2014-03-05 Alcatel Lucent Method for processing a plurality of data and switching device for switching communication packets
CN102148878B (en) * 2010-02-05 2013-08-14 中国移动通信集团公司 IP (internet protocol) address allocation method, system and device
US20120044354A1 (en) * 2010-08-22 2012-02-23 Fred Cheng Versatile dual mode wireless camera hotspot device
US8825839B2 (en) * 2010-11-24 2014-09-02 Unisys Corporation Snooping DNS messages in a server hosting system providing overlapping address and name spaces
WO2011103820A2 (en) * 2011-04-15 2011-09-01 华为技术有限公司 Method and apparatus for network address translation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
None

Also Published As

Publication number Publication date
TW201330554A (en) 2013-07-16
EP2764681B1 (en) 2016-08-10
US9185073B2 (en) 2015-11-10
JP2014531880A (en) 2014-11-27
CN103918246A (en) 2014-07-09
JP5796135B2 (en) 2015-10-21
US20130091303A1 (en) 2013-04-11
EP2764681A2 (en) 2014-08-13
EP3065380A1 (en) 2016-09-07
IN2014CN02179A (en) 2015-05-29
WO2013052898A3 (en) 2013-07-11
CN103918246B (en) 2017-10-27

Similar Documents

Publication Publication Date Title
US9185073B2 (en) Systems and methods for data packet processing
JP5890527B2 (en) System and method for traffic detection network control
US11528346B2 (en) IPv4 communications using 6lowpan header compression mechanisms
KR101594958B1 (en) Systems and method for reduced power wireless communication
WO2019062593A1 (en) Packet transmission method and device, and computer readable storage medium
US10021512B2 (en) Switching to advertising locator after connection establishment
CN110830356A (en) Method and device for transmitting message
JP5680771B2 (en) Apparatus and method for controlling access to a dual stack architecture using attention (AT) commands
WO2016074211A1 (en) Data forwarding method and controller
EP3716562A1 (en) Method and terminal device for data transmission
US20170048790A1 (en) Methods and apparatuses for providing quality of service dependent services to mobile clients in multiple backhaul environments
TWI580226B (en) Method for determining maximum segment size
US8966607B2 (en) Device programmable network based packet filter
US11382022B2 (en) Method, apparatus, and computer program product for packet forwarding control protocol messages bundling
WO2014067065A1 (en) Method, apparatus and system for implementing tunnel processing
CN108471633B (en) Communication method and communication system
TWI823362B (en) A communication method and device,storage medium and chip system

Legal Events

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

Ref document number: 12787189

Country of ref document: EP

Kind code of ref document: A2

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
REEP Request for entry into the european phase

Ref document number: 2012787189

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012787189

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2014534805

Country of ref document: JP

Kind code of ref document: A