US6886103B1 - Method and apparatus for extending network address translation for unsupported protocols - Google Patents

Method and apparatus for extending network address translation for unsupported protocols Download PDF

Info

Publication number
US6886103B1
US6886103B1 US09/698,973 US69897300A US6886103B1 US 6886103 B1 US6886103 B1 US 6886103B1 US 69897300 A US69897300 A US 69897300A US 6886103 B1 US6886103 B1 US 6886103B1
Authority
US
United States
Prior art keywords
nat
gpn
address
protocol
client
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related, expires
Application number
US09/698,973
Inventor
Jose C. Brustoloni
Juan Alberto Garay
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
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 Lucent Technologies Inc filed Critical Lucent Technologies Inc
Priority to US09/698,973 priority Critical patent/US6886103B1/en
Assigned to LUCENT TECHNOLOGIES, INC. reassignment LUCENT TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GARAY, JUAN ALBERTO, BRUSTOLONI, JOSE C.
Application granted granted Critical
Publication of US6886103B1 publication Critical patent/US6886103B1/en
Assigned to ALCATEL-LUCENT USA INC. reassignment ALCATEL-LUCENT USA INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: LUCENT TECHNOLOGIES INC.
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/2517Translation of Internet protocol [IP] addresses using port numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • 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/255Maintenance or indexing of mapping tables
    • 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/256NAT traversal
    • H04L61/2564NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
    • 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/256NAT traversal
    • H04L61/2585NAT traversal through application level gateway [ALG]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/663Transport layer addresses, e.g. aspects of transmission control protocol [TCP] or user datagram protocol [UDP] ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer

Definitions

  • This invention relates to packet-based data communications on IP networks, and more particularly, to network address translation that enables communications between clients on a shared line or private network and servers on a global network such as the Internet.
  • a plurality of clients can share a single access link to the Internet or other IP network by using network address and port translation (NAT).
  • NAT network address and port translation
  • the clients on a private network are assigned individual IP addresses from a pool of IP addresses reserved by the Internet Assigned Numbers Authority (IANA) for non-exclusive private network use. Private addresses are not routable on the Internet.
  • IANA Internet Assigned Numbers Authority
  • a client on the private network wants to communicate with a server on a global network, such as the Internet, a globally unique and routable IP address must be used instead of the client's local non-routable private IP address.
  • a private network is connected to the Internet via a router and shared access link to an Internet Service Provider (ISP).
  • ISP Internet Service Provider
  • NAT is a feature that may be implemented in the router and that provides unambiguous translations between private and global addresses, allowing the plural clients to share the access link.
  • NAT modifies the packet header, substituting the client's private source IP address and generalized port number (GPN) by a global IP address and GPN.
  • GPN is a certain field in the packet header. For example, for the TCP or UDP protocols, the GPN is the TCP or UDP port number. For other protocols, the GPN may be another field.
  • a single global IP address may be shared as the source address of packets sent by all or some of the clients to the Internet.
  • NAT In order to properly route incoming packets sent from a foreign address on the Internet to a client on the private network, NAT maintains in a translation table, stored in memory, the one-to-one correspondence between private and global IP addresses and GPNs.
  • NAT modifies the packet header's destination from global to private (IP address, GPN) values, according the NAT's translation table, allowing the packet to reach the respective client in the private network.
  • IP address, GPN IP address
  • Some application-layer protocols may also include IP addresses and possibly port numbers in packet payloads. Such addresses and port numbers must also be similarly translated.
  • NAT includes an Application Level Gateway (ALG) program that provides these additional necessary translations.
  • AGG Application Level Gateway
  • the packet checksum in the transport layer TCP or UDP header of the packet is correspondingly modified to reflect the changes resulting from the translations.
  • the packet checksum will be correct if there are no transmission errors.
  • IP Security operates at the network layer and therefore is independent of the transport- (e.g., TCP or UDP) or application-layer protocol (e.g., HTTP, FTP, or TELNET). It is thus application-independent and therefore capable of providing end-to-end security without modification to applications. Further, IPSec is vendor-independent and can provide end-to-end security. Disadvantageously, however, IPSec has been considered as not being interoperable with NAT. In fact, the literature has so stated (see, e.g., N. Doraswamy and D. Harkins, “IPSEC: The New Security Standard for the Internet, Intranets and Virtual Private Networks,” Prentice-Hall, 1 st ed., July 1999).
  • IPSec is an Internet standard from the IETF IPSec Working Group (see, e.g., S. Kent and R. Atkinson, “Security Architecture for the Internet Protocol,” IETF, RFC 2401, November 1998).
  • IPv6 next-generation IP protocol
  • IPv4 Internet Protocol, Version 6 (Ipv6) Specification
  • IPv4 current-generation IP
  • IPSec is essentially an encapsulation protocol, namely one that defines the syntax and semantics of placing one packet inside another.
  • IPSec defines two protocols, the Authentication Header (AH) protocol (see, e.g., S. Kent and R. Atkinson, “IP Authentication Header,” IEFT, RFC 2402, November 1998) and Encapsulating Security Payload (ESP) protocol (see, e.g., S. Kent and R. Atkinson, “IP Encapsulating Security Payload (ESP),” IEFT, RFC 2406, November 1998).
  • the AH protocol can provide authentication of packet origin, proof of integrity of packet data, and protection against packet replay.
  • the ESP protocol can provide encryption of packet data and limited traffic flow confidentiality.
  • the AH and ESP protocols can be used either in what are known as the transport or tunnel modes.
  • the transport mode provides end-to-end security between the source of the packet and its destination.
  • the tunnel mode encapsulates packets and thus provides security between the nodes where the packet is encapsulated and decapsulated, which can be any nodes (e.g., routers) on the path between the source of the packet and its destination.
  • clients might use different modes.
  • the transport mode may be used to download, via FTP, a document from a supplier's server, thus providing full authentication/security between the client and the server.
  • the tunnel mode may be used by a client to connect to an IPSec gateway into an employer's Intranet.
  • NAT In the transport mode of the ESP protocol, when NAT translates the source or destination IP address, it would need to correspondingly adjust the TCP or UDP checksum, which is calculated over the packet's IP “pseudo-header,” TCP or UDP header, and packet data.
  • the pseudo-header includes the source and destination IP addresses.
  • NAT cannot make the necessary adjustment to this checksum without having access to the encryption key.
  • the encryption key For end-to-end security, the encryption key must not be revealed to intermediate nodes including NAT. Thus, NAT is not interoperable with the ESP protocol in the transport mode.
  • the NAT is extended to be capable of providing network address translation of outgoing and incoming packets from and directed to clients, respectively, operating under a protocol that the NAT itself does not directly support such as, for example, IPSec.
  • IPSec generalized port number
  • An entry is then installed in the NAT's translation table, in memory, that defines for that protocol the association between the client's private IP address and GPN and the assigned global IP address and GPN for communication with the specified foreign address until a specified or default expiration time.
  • Outgoing packets from a client using that protocol and having as a source address that private IP address and that private GPN and having that foreign address as their destination will have their source address translated to the global IP address and their private source GPN translated to the global GPN, as defined by that entry in the translation table.
  • incoming packets using that protocol and having as their source address that foreign address, and having the global IP address as their destination address will have their destination address translated to the private IP address and their destination GPN translated to the private GPN.
  • Such translations in outgoing and incoming packets continue until the expiration time of the entry in the translation table, which may be extended in response to a request from a client.
  • the client Since the NAT does not have an ALG for an unsupported protocol, an ALG that would otherwise be implemented at the NAT is implemented instead at the client to perform any necessary functions on the packet payload and/or headers.
  • the client having a client-implemented ALG is therefore enabled to communicate with a foreign address using a protocol that is not directly supported by NAT.
  • a security protocol suite such as IPSec, which is incompatible with NAT due to the inability of NAT to perform necessary modifications within the packet, can be used in order to ensure end-to-end security.
  • the client pre-compensates outgoing packets before they are transmitted and post-compensates incoming packets for the effects on the packets of the NAT's translations.
  • each outgoing packet is modified by the client before being processed for authentication and encryption (the latter, if using ESP protocol) to pre-compensate for the effect of the NAT translations on the cryptographic or noncryptographic checksums.
  • the checksum calculated for that packet will be in accord with the transmitted checksum that was incorporated into and transmitted in the packet.
  • the packet will not be dropped by the receiver.
  • the TCP or UDP checksum is modified to account for all the translations in the packet from private IP addresses and port numbers to global IP addresses and port numbers in such a manner that when NAT performs its translation operations and the packet is sent to its destination, the modified checksum matches, absent a transmission error, the actual checksum of the packet as operated on by NAT; and the AH authentication data (for AH protocol) is computed as if the source IP address were equal to the global IP address.
  • the AH authentication data (for AH protocol) is computed as if the destination IP address were equal to the global IP address.
  • the packet is then authenticated and decrypted (the latter, if using ESP protocol) by the client, it is modified so as to post-compensate for the effect of the NAT translations on the cryptographic or noncryptographic checksums.
  • the client replaces those global IP addresses and port numbers in the packet that NAT has not translated with their corresponding private values.
  • the TCP or UDP checksum is modified to compensate for the translations made by the client and the NAT to the IP addresses and port numbers so that the modified checksum matches, absent a transmission error, the checksum calculated over the address-translated packet.
  • FIG. 1 shows a network architecture in which a plurality of clients are connected through a local high-bandwidth network to a local router/server, which is extensible to handle unsupported protocols such as IPSec and which performs the NAT operations that enable communication to and from the Internet;
  • IPSec unsupported protocols
  • FIG. 1 shows a network architecture in which a plurality of clients are connected through a local high-bandwidth network to a local router/server, which is extensible to handle unsupported protocols such as IPSec and which performs the NAT operations that enable communication to and from the Internet;
  • FIG. 2 shows the IPSec packet format for the AH protocol in the transport mode
  • FIG. 3 shows the IPSec packet format for the ESP protocol in the transport mode
  • FIG. 4 shows the IPSec packet format for the AH protocol in the tunnel mode
  • FIG. 5 shows the IPSec packet format for the ESP protocol in the tunnel mode
  • FIG. 6 shows an entry in a NAT translation table that enables unambiguous translation of IP addresses and port numbers by the NAT;
  • FIG. 7 is a flowchart showing the steps performed by the extensible router/server of the present invention that enable it to process packets to and from a client using an unsupported protocol
  • FIGS. 8-10 together are a flowchart detailing the steps, from a local client's standpoint, that provide interoperability with the extensible NAT router/server and NAT using the unsupported IPSec security protocol.
  • a plurality of clients 101 - 1 - 101 -N are connected on a local network 102 .
  • the local network 102 can be an Ethernet, a WaveLAN, or any other private network to which a plurality of operative clients can be simultaneously connected.
  • the local network 102 is connected to a local router/server 103 , which in turn is connected over a shared high-bandwidth link 104 to an ISP 105 , which provides access to the Internet 106 .
  • Link 104 can be, for example, a cable, a DSL, or a T1 line.
  • a hotel, an airport lounge, a conference center are examples of facilities at which a shared link could provide Internet connectivity to a plurality of users for connection of their portable PCs.
  • each client is assigned a private IP address by the local router/server 103 .
  • the non-permanent IP addresses assigned to these clients are from the set of non-routable IP addresses allocated by IANA for private network use.
  • Router/server 103 is assigned one or more routable IP addresses by ISP 105 .
  • router/server 103 incorporates NAT 107 software module.
  • NAT 107 translates the private IP address and GPN used by each client 101 - 1 - 101 -N to a global address and global GPN associated with router/server 103 .
  • NAT 107 For the TCP or UDP protocol, for example, where the GPN is the port number, NAT 107 translates in each outgoing packet from a client, its source private IP address and port number to a uniquely associated global IP address and port number. Incoming packets addressed to that global IP address and port number are then translated back by NAT 107 to the local private IP address and port number of the particular client to which they are properly directed. In this manner, through the use of NAT, the plural clients 101 - 1 - 101 -N can share the common link 104 .
  • authentication and encryption can be used.
  • IPSec can provide end-to-end security (authentication and/or encryption) without modifications to applications.
  • a client needs to modify each outgoing packet and incoming packet by performing IP address and GPN translations that the NAT 107 is unable to perform without having access to authentication and/or encryption/decryption keys, and by modifying a TCP or UDP checksum to compensate for the translations performed locally and by NAT 107 .
  • NAT 107 cannot incorporate an ALG to perform those functionalities that need to be performed on the outgoing packets without corrupting the packet, an outgoing packet is operated upon by the source client of that packet to process any necessary ALG.
  • each incoming packet that originated at a server 108 connected on Internet 106 and is received by a client 101 - 1 - 101 -N from the router/server 103 is post-compensated after the packet has been decrypted and authenticated.
  • the client operates on the resultant packet to process any ALG that needs to be performed and to perform translations of global IP addresses and global GPNs to local IP addresses and local GPNs that the NAT is unable to do, and to modify the TCP or UDP checksum to compensate for the translations made to the packet either locally by the client or by the NAT itself.
  • Both the pre-compensation and post compensation are effected through an IPSec/Nat interoperability client module 109 included within each client 101 - 1 - 101 -N.
  • the IPSec security format defines two protocols: the AH (Authentication Header) protocol and the ESP (Encapsulating Security Payload) protocol.
  • the AH protocol can provide authentication of packet origin, proof of integrity of packet data, and protection against packet replay.
  • the ESP protocol can provide, in addition to the AH protocol's services, encryption of packet data and limited traffic flow confidentiality.
  • the AH and ESP protocols can be used either in the transport or tunnel mode.
  • the transport mode provides end-to-end security between the source of the packet and its destination.
  • the tunnel mode encapsulates packets and thus provides security between the nodes at which the packet is encapsulated and decapsulated. These nodes can be any nodes on the path between the packet's source and destination.
  • FIG. 2 shows the packet layout for the AH protocol in the transport mode
  • FIG. 3 shows the packet layout for the ESP protocol in the transport mode
  • FIG. 4 shows the packet layout for the AH protocol in the tunnel mode
  • FIG. 5 shows the packet layout for the ESP protocol in the tunnel mode.
  • the encapsulated packets, 401 and 501 are shown in bold.
  • the portion of the packet that is authenticated or encrypted is different for the AH and ESP protocols.
  • the AH and ESP protocols insert a header ( 202 in FIG. 2 and 302 in FIG. 3 ) between the IP header and the upper-layer UDP or TCP header in the transport mode.
  • the header 402 in FIG. 4 and 502 in FIG.
  • the ESP protocol also appends a packet trailer ( 303 in FIG. 3 and 503 in FIG. 5 ).
  • the IP header ( 404 in FIG. 4 and 504 in FIG. 5 ) may have source and destination IP addresses different from those of the encapsulated packet.
  • authentication covers the entire IP datagram, as can be noted in FIGS. 2 and 4 .
  • FIGS. 3 and 5 with the ESP protocol, authentication skips the IP header and the final part of the ESP trailer, which contains the authentication data.
  • encryption skips both the IP and ESP headers and the final part of the ESP trailer.
  • Additional functionality is added to the router/server 103 in FIG. 1 through an Unsupported-Protocol Module 110 in order to provide interoperability between the NAT and those clients that are using a protocol that is not or cannot be directly supported by the NAT as, for example, the above-described IPSec AH and ESP protocols in both the transport and tunnel modes.
  • clients need a client-implemented ALG to perform necessary modifications in packet payloads to compensate for NAT translations.
  • clients communicate with the router/server 103 to install entries in the NAT's translation tables 111 , stored in memory.
  • NAT For those entries installed at the request of a client (called client-ALG entries), NAT assumes that any necessary ALG is implemented at the corresponding client. On the other hand, for protocols that are supported by directly by NAT and whose entries are installed by NAT without an explicit request by a client (designated as NAT-ALG entries), NAT performs any ALG that may be necessary.
  • NAT-ALG entries have the advantage of being transparent to end hosts, providing backward compatibility. This is only possible, however, for protocols for which the NAT implementation includes the necessary ALG.
  • Client-ALG entries advantageously provide support for those protocols that cannot otherwise be supported.
  • NAT clients communicate with module 110 in router/server 103 to define, for a specified protocol, the GPN in terms of the underlying protocol and port number, the offsets of the source and destination fields from the end of the underlying protocol's header, the field lengths, and a value range for the GPN.
  • the client also defines a GPN value that will be used to represent an “unspecified” GPN that, rather than being selected by the client, is to be selected by the NAT router/server. If the client specifies a protocol for which NAT 107 has the corresponding ALG, the router/server 103 returns an error code to the requesting client, and the client does not use client-ALG entries.
  • module 110 in router/server 103 then allocates, for the specified protocol and up to a specified expiration time, a global IP address and global GPN for communications between the client's private IP address and private GPN and a given foreign address.
  • the client needs to specify at least the protocol and the private IP address.
  • the client may, however, declare the foreign IP address to be a value that matches any foreign IP address.
  • the client leaves the global IP address and global GPN unspecified and may also leave the private GPN and/or the expiration time unspecified. If the client does not specify the private GPN, module 110 in router/server 103 selects the same value for the private and global GPNs.
  • module 110 in router/server 103 chooses the present time plus a default interval. Module 110 then selects a global IP address/global GPN combination such that, for the specified protocol and foreign address, at most one private IP address/private GPN combination is associated with that global IP address/global GPN. All selected values are returned to the client and a translation table entry of the type shown in FIG. 6 is installed in the translation table 111 of NAT 107 .
  • the entry in the translation table includes a protocol field 601 , which provides an indication of the particular protocol being used for transmission; a field 602 for the private IP address of the particular client 101 - 1 - 101 -N, for example, on the local network 102 ; a field 603 for private GPN for that particular client; a field 604 for the global IP address assigned by router/server 103 for this communication; a field 605 for the global GPN also assigned by router/server 103 ; a field 606 for the foreign address with which the client is communicating; and a field 607 for the time at which lease of these global addresses expires.
  • a protocol field 601 which provides an indication of the particular protocol being used for transmission
  • a field 602 for the private IP address of the particular client 101 - 1 - 101 -N for example, on the local network 102
  • a field 603 for private GPN for that particular client a field 604 for the global IP address assigned by router/server 103 for this communication
  • NAT 107 When NAT 107 receives a packet destined to a foreign IP address from a client, NAT 107 looks in its translation table for an entry whose protocol matches the protocol in the header of the packet, which private IP address and private GPN match the packet's source IP address and GPN, and whose foreign IP address matches the packet's destination IP address. If such an entry is found, NAT 107 translates the packet's source IP address and GPN from private to global values according to the matching entry. Otherwise, if NAT 107 has an ALG for the packet's protocol or if none is needed, NAT 107 automatically allocates a NAT-ALG entry in its translation table and translates the packet according to it, or else NAT 107 drops the packet.
  • NAT 107 looks in its translation table for an entry whose protocol matches the protocol in the packet's header, whose global IP address and global GPN match the packet's destination IP address and GPN, and whose foreign IP address matches the packet's source IP address. If such an entry is found, NAT 107 translates the packet's destination IP address and GPN from the global values to the private values according to the matching entry. Otherwise, NAT 107 drops the packet.
  • a translation table entry When a translation table entry reaches its expiration time, the entry is erased.
  • the client may renew its lease through a request for either a default period of time or a requested period of time by fully specifying the protocol, global GPN, global IP address, and foreign IP address as they already exist in the entry.
  • Module 110 in router/server 103 upon recognizing that an entry for those parameter values already exists, renews the lease for the requested or default period of time.
  • a client may alternatively request a deallocation of an entry in the translation table upon completing communication with the foreign address specified in the entry.
  • FIG. 7 is a flowchart showing some of the steps described above that are performed by the NAT router/server 103 to enable clients to use protocols that NAT 107 does not directly support.
  • the NAT router/server receives from a client the definition of the GPN for a specified protocol.
  • a determination is made whether the router/server has an ALG for that protocol. If yes, at step 703 , an error code is sent to the client.
  • the server does not have an ALG for the specified protocol
  • the NAT router/server allocates for the given protocol, a global IP address and global GPN for communication with a given foreign address using a given private IP address and private GPN until a given or default expiration time.
  • an entry is installed in the NAT's translation table and the allocated values are returned to the client.
  • the NAT server receives a packet having a destination address of the specified foreign address and using the specified protocol.
  • the NAT translates the private IP address/GPN source data to the global IP address/GPN according to translation table.
  • the NAT router/server receives a packet from the specified foreign address that is addressed to the global IP address with the global GPN and using the specified protocol.
  • the NAT finding the appropriate entry in its translation table, translates the global IP address/GPN destination data to the private IP address/GPN.
  • the packet is forwarded to its destination.
  • a determination is made whether the current time has exceeded the specified expiration time of the entry. If not, packet processing to and from the client continues. If yes, at step 712 , the entry is deleted.
  • ISAKMP Internet Security Association and Key Management Protocol
  • MD5 Internet Security Association and Key Management Protocol
  • ISAKMP is layered on top of UDP and uses UDP port 500 for both its source and destination.
  • IPSec's negotiation is more specifically defined by IKE (Internet Key Exchange) (see, e.g., D. Harkins and D. Carrel, “The Internet Key Exchange (IKE),” IETF, RFC 2409, November 1998).
  • IKE Internet Key Exchange
  • An IPSec packet's SA is uniquely identified by the protocol (AH or ESP) and destination IP address in the IP header, in conjunction with the SPI (Security Parameters Index), a 32-bit field in the AH or ESP header.
  • the GPN is an initiator cookie, a 64-bit field present in all ISKAMP packets during a negotiation session.
  • Clients declare to the router/server that ISAKMP GPNs have a 0-bit offset from the end of the UDP header both for source and destination, and have a 64-bit length. The router/server thus knows where the GPN field begins and how many bits it occupies.
  • a local client 101 - 1 - 101 -N leases the global IP address and cookie from the router/server 103 , leaving both private and global GPN unspecified.
  • the underlying protocol is IP
  • the GPN is the incoming SPI.
  • clients declare to the server that the GPN has a 0-bit offset from the end of the IP header both for source and destination, and has a 32-bit length.
  • the incoming SPI is leased from router/server 103 , again leaving both the private and global GPN unspecified. As with the initiator cookie, this guarantees that no two clients will be using the same SPI to communicate with the same foreign IP address using the same protocol, thereby avoiding potential demultiplexing errors.
  • router/server 103 chooses them to be the same.
  • NAT 107 translates only IP addresses and translates incoming SPIs to the same values.
  • the NAT is unable to perform any ALG for IPSec packets. Rather, an IPSec ALG is installed in clients to compensate for the effects of the NAT's IP address translations in IPSec packets. Such an ALG is possible at a client because the ALG is co-located with one of the IPSec endpoints and revealing the secret keys used in the secure transmission to the ALG does not violate end-to-end security. Without an ALG, however, a packet will be dropped when it arrives at its foreign address destination due to the deleterious effect that the NAT translation causes upon packet authentication verification and TCP/UDP checksum calculations.
  • module 109 in the client modifies each outgoing packet before authentication and encryption to pre-compensate for those translation-induced effects and performs any ALG that might be necessary but which cannot be performed by the NAT.
  • any necessary ALG is processed by module 109 in the client and the packet is modified to post-compensate for the effects of the NAT translations.
  • the client leases a global IP address and cookie from router/server 103 to prevent NAT demultiplexing errors due to two or more local clients from using the same global IP address and cookie.
  • the client leases the incoming SPI from the router/server 103 , keeping the global IP address as in the first step above.
  • step 4 when NAT performs its translation and the packet is received at its destination at the foreign address, the packet will be properly authenticated if no transmission errors have occurred.
  • step 3 when the TCP or UDP checksum is computed over the received authenticated and decrypted packet, it will match, absent a transmission error, the modified TCP or UDP checksum that is incorporated in the TCP or UDP header, at the client, before authentication and encryption.
  • steps 3 and 4 are replaced as follows:
  • the client computes the checksum over the received packet after translations made by NAT and steps (i′) through (iv′) above, the checksum will be correct, absent a transmission error.
  • step 801 the global IP address and initiator cookie are leased from the NAT router/server prior to an ISAKMP negotiation.
  • step 802 the incoming SPI is similarly leased from the NAT router/server.
  • step 803 a determination is made whether there is a packet to be processed under the IPSec protocol. If not, the program flow is fed back to step 803 until there is a packet to process. If, at step 803 , there is a packet to be processed, then, at step 806 , a determination is made whether the leases have expired.
  • the leases are renewed with the NAT router/server. If the leases have not expired, or after the leases have been renewed, a determination is made, at step 808 , whether the packet is incoming (received from the local network) or outgoing (received from the client's IP/TCP/UDP output). If it is an outgoing packet, then, at step 809 , a determination is made whether the transport or tunnel mode is to be used. If the transport mode is to be used, at step 810 , the source port number in the packet is replaced with a global port number.
  • the tunnel mode is to be used, then, at step 811 , the encapsulated source IP address and port number are replaced by the global IP address and global port number.
  • the difference between the global and private source IP addresses and the difference between the global and private source port numbers are added to the TCP or UDP checksum.
  • any necessary ALGs are processed.
  • a determination is made whether the AH or ESP protocol is being used. If the AH protocol is being used, then, at step 815 , the packet's authentication data is computed as if the source IP address were equal to the global IP address.
  • the authentication and encryption data for the modified packet is computed.
  • the packet is formulated according to the protocol and mode and, at step 818 , the packet is sent to the NAT router/server.
  • the program flow then returns to step 803 ( FIG. 8 ) for processing of another packet.
  • a determination is made whether the protocol of that packet is AH or ESP. If the protocol is AH, at step 820 , the packet's authentication data is computed as if the destination IP address were equal to the global IP address.
  • step 821 authentication and decryption are performed on the received incoming packet. Following either steps 820 or 821 , at step 822 , any necessary ALGs are processed.
  • step 823 a determination is made whether the transport or tunnel modes were used. If the transport mode was used, then at step 824 , the global destination port number is replaced by the corresponding private port number. If the tunnel mode was used, then at step 825 , the global destination IP address and port number are replaced in the decapsulated packet by the corresponding private address and port number.
  • step 826 the difference between the global and private destination IP addresses and the difference between the global and private port numbers are subtracted from the TCP or UDP checksum in the packet.
  • step 827 the modified packet is passed to an IP/TCP/UDP input process. The program flow then returns to step 803 ( FIG. 8 ) for processing of another packet.
  • router/server 107 are shown as a single entity, one skilled in the art will realize that the router and server could be separate entities and that the NAT and the server could be on separate entities.
  • client modules 109 and server module 110 are described as software modules and are preferably implemented as such, but they also could be implemented in hardware. As software modules, they could be implemented in RAM, ROM, or any other computer readable medium.
  • the functions of the various elements shown in the FIGS. may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software.
  • the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared.
  • any element expressed as a means for performing a specified function is intended to encompass any way of performing that function including, for example, a) a combination of circuit elements which performs that function or b) software in any form, including, therefore, firmware, microcode or the like, combined with appropriate circuitry for executing that software to perform the function.
  • the invention as defined by such claims resides in the fact that the functionalities provided by the various recited means are combined and brought together in the manner which the claims call for. Applicant thus regards any means which can provide those functionalities as equivalent as those shown herein.

Abstract

Clients that are connected on a private network and which are assigned a private IP address that is not routable on the Internet can connect to the Internet through a router/server that includes a network address translator (NAT). For outgoing packets, the NAT translates the client's private source IP address and generalized port number (GPN) to the NAT's global IP address and GPN. For incoming packets sent to the NAT's global IP address and GPN, the NAT translates the global destination IP address and GPN to the client's private IP address and GPN. For protocols which cannot be directly supported by the NAT, such as those in the IPSec security protocol suite, the NAT is extended by creating in the NAT's translation table an entry that associates, for a specific unsupported protocol, a client's private IP address and GPN, the NAT's global IP address and GPN, and a foreign address on the Internet, that is valid until a specified or default expiration time. Outgoing packets from the client to that foreign address and incoming packets from that foreign address to the NAT's global IP address and GPN are translated according to the entry until the entry expires. In associations with these translations to outgoing and incoming packets, the client implements any Application Layer Gateway (ALG) that would otherwise be implemented at the NAT. Further, at the client, outgoing packets are modified before being transmitted so as to pre-compensate for the effects of the translations. Incoming packets at the client from the NAT are similarly modified so as to post-compensate for the effects of the translations. For the IPSec protocol, these modification include adjusting the checksum in the TCP or UDP header to account for IP address and TCP or UDP port number translations.

Description

CROSS-REFERENCE
This application claims the benefit of U.S. Provisional Application No. 60/162,090, filed Oct. 28, 1999.
This application also describes and claims subject matter that is in co-pending United States patent application filed simultaneously herewith and entitled: “METHOD AND APPARATUS FOR APPLICATION-INDEPENDENT END-TO-END SECURITY IN SHARED-LINK ACCESS NETWORKS,” Ser. No. 09/698,978.
TECHNICAL FIELD
This invention relates to packet-based data communications on IP networks, and more particularly, to network address translation that enables communications between clients on a shared line or private network and servers on a global network such as the Internet.
BACKGROUND OF THE INVENTION
A plurality of clients can share a single access link to the Internet or other IP network by using network address and port translation (NAT). In accordance with NAT, the clients on a private network are assigned individual IP addresses from a pool of IP addresses reserved by the Internet Assigned Numbers Authority (IANA) for non-exclusive private network use. Private addresses are not routable on the Internet. When a client on the private network wants to communicate with a server on a global network, such as the Internet, a globally unique and routable IP address must be used instead of the client's local non-routable private IP address. Typically, a private network is connected to the Internet via a router and shared access link to an Internet Service Provider (ISP). NAT is a feature that may be implemented in the router and that provides unambiguous translations between private and global addresses, allowing the plural clients to share the access link. When a client sends a packet to a foreign address (i.e., one not in the private network), NAT modifies the packet header, substituting the client's private source IP address and generalized port number (GPN) by a global IP address and GPN. Depending upon the protocol being used, GPN is a certain field in the packet header. For example, for the TCP or UDP protocols, the GPN is the TCP or UDP port number. For other protocols, the GPN may be another field. A single global IP address may be shared as the source address of packets sent by all or some of the clients to the Internet. In order to properly route incoming packets sent from a foreign address on the Internet to a client on the private network, NAT maintains in a translation table, stored in memory, the one-to-one correspondence between private and global IP addresses and GPNs. When NAT receives a packet from the Internet, NAT modifies the packet header's destination from global to private (IP address, GPN) values, according the NAT's translation table, allowing the packet to reach the respective client in the private network. Some application-layer protocols may also include IP addresses and possibly port numbers in packet payloads. Such addresses and port numbers must also be similarly translated. For each such protocol, NAT includes an Application Level Gateway (ALG) program that provides these additional necessary translations. Furthermore, when the NAT performs its translations, the packet checksum in the transport layer TCP or UDP header of the packet is correspondingly modified to reflect the changes resulting from the translations. Thus, when the packet is eventually received at its destination, its checksum will be correct if there are no transmission errors.
The use of network address translation presents difficulties when it does not or cannot support a particular protocol that a client is desirous of using. As an example, certain security architectures have not been able to be fully interoperable with NAT. Security protocols are extremely useful in determining whether or not a received packet has been corrupted in some manner between the client/servers from which it is transmitted and received. In order to prevent packet forgery and snooping, authentication and encryption of packets may be used, respectively. Various security protocols may be used for authentication and/or encryption. Some protocols can be used in conjunction with NAT, for example the Secure Shell (SSH), Secure Sockets Layers (SSL), and Point-to-Point Tunneling Protocol (PPTP). Disadvantageously, however, SSH and SSL implement security in the application layer and are thus application-dependent, whereas PPTP's security is often considered deficient. On the other hand, IP Security (IPSec) operates at the network layer and therefore is independent of the transport- (e.g., TCP or UDP) or application-layer protocol (e.g., HTTP, FTP, or TELNET). It is thus application-independent and therefore capable of providing end-to-end security without modification to applications. Further, IPSec is vendor-independent and can provide end-to-end security. Disadvantageously, however, IPSec has been considered as not being interoperable with NAT. In fact, the literature has so stated (see, e.g., N. Doraswamy and D. Harkins, “IPSEC: The New Security Standard for the Internet, Intranets and Virtual Private Networks,” Prentice-Hall, 1st ed., July 1999).
IPSec is an Internet standard from the IETF IPSec Working Group (see, e.g., S. Kent and R. Atkinson, “Security Architecture for the Internet Protocol,” IETF, RFC 2401, November 1998). IPSec is a mandatory part of the next-generation IP protocol (IPv6, see, e.g., S. Deering and R. Hinden, “Internet Protocol, Version 6 (Ipv6) Specification,” IETF, RFC 2460, December 1998), but most existing IPSec implementations assume current-generation IP (IPv4). IPSec is essentially an encapsulation protocol, namely one that defines the syntax and semantics of placing one packet inside another. IPSec defines two protocols, the Authentication Header (AH) protocol (see, e.g., S. Kent and R. Atkinson, “IP Authentication Header,” IEFT, RFC 2402, November 1998) and Encapsulating Security Payload (ESP) protocol (see, e.g., S. Kent and R. Atkinson, “IP Encapsulating Security Payload (ESP),” IEFT, RFC 2406, November 1998). The AH protocol can provide authentication of packet origin, proof of integrity of packet data, and protection against packet replay. In addition to that which the AH protocol can provide, the ESP protocol can provide encryption of packet data and limited traffic flow confidentiality. The AH and ESP protocols can be used either in what are known as the transport or tunnel modes. The transport mode provides end-to-end security between the source of the packet and its destination. In contrast, the tunnel mode encapsulates packets and thus provides security between the nodes where the packet is encapsulated and decapsulated, which can be any nodes (e.g., routers) on the path between the source of the packet and its destination. Depending on the situation, clients might use different modes. Thus, for example, the transport mode may be used to download, via FTP, a document from a supplier's server, thus providing full authentication/security between the client and the server. On the other hand, the tunnel mode may be used by a client to connect to an IPSec gateway into an employer's Intranet.
Several problems hamper the interoperation of IPSec and NAT. For the AH protocol, when NAT translates an address, it would need to correspondingly adjust, through an ALG, the packet's authentication data, which depends on the packet's address. If the authentication data is not adjusted the packet will be rejected at the destination. In order for the NAT to modify the authentication data, however, the NAT would need to know the authentication key. Since that key is maintained private in order to protect the integrity of the security architecture, NAT is unable to modify the authentication data in the packet to compensate for the address translations. For the ESP protocol, interoperability with NAT is problematic in the transport mode. In the transport mode of the ESP protocol, when NAT translates the source or destination IP address, it would need to correspondingly adjust the TCP or UDP checksum, which is calculated over the packet's IP “pseudo-header,” TCP or UDP header, and packet data. The pseudo-header includes the source and destination IP addresses. However, since the checksum is encrypted, along with the rest of the TCP or UDP header and data, NAT cannot make the necessary adjustment to this checksum without having access to the encryption key. For end-to-end security, the encryption key must not be revealed to intermediate nodes including NAT. Thus, NAT is not interoperable with the ESP protocol in the transport mode.
A problem therefore exists with respect to using network address translation with protocols, such as IPSec, that the NAT does not or cannot support.
SUMMARY OF THE INVENTION
In accordance with the present invention, the NAT is extended to be capable of providing network address translation of outgoing and incoming packets from and directed to clients, respectively, operating under a protocol that the NAT itself does not directly support such as, for example, IPSec. This is achieved with the extensible NAT of the present invention which, upon receiving a request from a client that defines for an unsupported protocol, a generalized port number (GPN) and its location within the packet. A global IP address and global GPN are then assigned and associated with the client's private IP address and GPN for packets sent to and received from a specified foreign address. An entry is then installed in the NAT's translation table, in memory, that defines for that protocol the association between the client's private IP address and GPN and the assigned global IP address and GPN for communication with the specified foreign address until a specified or default expiration time. Outgoing packets from a client using that protocol and having as a source address that private IP address and that private GPN and having that foreign address as their destination, will have their source address translated to the global IP address and their private source GPN translated to the global GPN, as defined by that entry in the translation table. Similarly, incoming packets using that protocol and having as their source address that foreign address, and having the global IP address as their destination address, will have their destination address translated to the private IP address and their destination GPN translated to the private GPN. Such translations in outgoing and incoming packets continue until the expiration time of the entry in the translation table, which may be extended in response to a request from a client.
Since the NAT does not have an ALG for an unsupported protocol, an ALG that would otherwise be implemented at the NAT is implemented instead at the client to perform any necessary functions on the packet payload and/or headers. The client having a client-implemented ALG is therefore enabled to communicate with a foreign address using a protocol that is not directly supported by NAT. In particular, a security protocol suite, such as IPSec, which is incompatible with NAT due to the inability of NAT to perform necessary modifications within the packet, can be used in order to ensure end-to-end security. Besides implementing the necessary ALGs, the client pre-compensates outgoing packets before they are transmitted and post-compensates incoming packets for the effects on the packets of the NAT's translations. The inclusion at the client of the necessary ALGs and pre and post compensation by the client is the subject of the afore-noted co-pending patent application Ser. No. 09/698,978, filed on even date hereof. Specifically, for the IPSec protocol, each outgoing packet is modified by the client before being processed for authentication and encryption (the latter, if using ESP protocol) to pre-compensate for the effect of the NAT translations on the cryptographic or noncryptographic checksums. Thus, when the packet is received at its destination and authenticated and decrypted (the latter, if using ESP protocol), the checksum calculated for that packet will be in accord with the transmitted checksum that was incorporated into and transmitted in the packet. Thus, absent a transmission error, the packet will not be dropped by the receiver. Specifically, before the packet is authenticated and encrypted (the latter, if using ESP protocol), private IP addresses and port numbers that NAT will not translate are replaced by corresponding assigned global values; the TCP or UDP checksum is modified to account for all the translations in the packet from private IP addresses and port numbers to global IP addresses and port numbers in such a manner that when NAT performs its translation operations and the packet is sent to its destination, the modified checksum matches, absent a transmission error, the actual checksum of the packet as operated on by NAT; and the AH authentication data (for AH protocol) is computed as if the source IP address were equal to the global IP address. For an incoming packet from the network, in a similar manner, the AH authentication data (for AH protocol) is computed as if the destination IP address were equal to the global IP address. After the packet is then authenticated and decrypted (the latter, if using ESP protocol) by the client, it is modified so as to post-compensate for the effect of the NAT translations on the cryptographic or noncryptographic checksums. Specifically, the client replaces those global IP addresses and port numbers in the packet that NAT has not translated with their corresponding private values. Further, the TCP or UDP checksum is modified to compensate for the translations made by the client and the NAT to the IP addresses and port numbers so that the modified checksum matches, absent a transmission error, the checksum calculated over the address-translated packet.
BRIEF DESCRIPTION OF THE DRAWING
FIG. 1 shows a network architecture in which a plurality of clients are connected through a local high-bandwidth network to a local router/server, which is extensible to handle unsupported protocols such as IPSec and which performs the NAT operations that enable communication to and from the Internet;
FIG. 2 shows the IPSec packet format for the AH protocol in the transport mode;
FIG. 3 shows the IPSec packet format for the ESP protocol in the transport mode;
FIG. 4 shows the IPSec packet format for the AH protocol in the tunnel mode;
FIG. 5 shows the IPSec packet format for the ESP protocol in the tunnel mode;
FIG. 6 shows an entry in a NAT translation table that enables unambiguous translation of IP addresses and port numbers by the NAT;
FIG. 7 is a flowchart showing the steps performed by the extensible router/server of the present invention that enable it to process packets to and from a client using an unsupported protocol; and
FIGS. 8-10 together are a flowchart detailing the steps, from a local client's standpoint, that provide interoperability with the extensible NAT router/server and NAT using the unsupported IPSec security protocol.
DETAILED DESCRIPTION
With reference to FIG. 1, a plurality of clients 101-1-101-N are connected on a local network 102. The local network 102 can be an Ethernet, a WaveLAN, or any other private network to which a plurality of operative clients can be simultaneously connected. The local network 102 is connected to a local router/server 103, which in turn is connected over a shared high-bandwidth link 104 to an ISP 105, which provides access to the Internet 106. Link 104 can be, for example, a cable, a DSL, or a T1 line. A hotel, an airport lounge, a conference center, are examples of facilities at which a shared link could provide Internet connectivity to a plurality of users for connection of their portable PCs. In order to enable the plural clients 101-1-101-N to share the link 104, each client is assigned a private IP address by the local router/server 103. As previously noted, the non-permanent IP addresses assigned to these clients are from the set of non-routable IP addresses allocated by IANA for private network use. Router/server 103 is assigned one or more routable IP addresses by ISP 105. In order for the plural clients 101-1-101-N to share link 104, router/server 103 incorporates NAT 107 software module. As previously noted, NAT 107 translates the private IP address and GPN used by each client 101-1-101-N to a global address and global GPN associated with router/server 103. For the TCP or UDP protocol, for example, where the GPN is the port number, NAT 107 translates in each outgoing packet from a client, its source private IP address and port number to a uniquely associated global IP address and port number. Incoming packets addressed to that global IP address and port number are then translated back by NAT 107 to the local private IP address and port number of the particular client to which they are properly directed. In this manner, through the use of NAT, the plural clients 101-1-101-N can share the common link 104.
In order to prevent one client from forging or snooping on the packets sent or received from another one of the clients connected on the same private network, authentication and encryption can be used. As previously mentioned, IPSec can provide end-to-end security (authentication and/or encryption) without modifications to applications. In order to use an authentication/encryption security protocol suite such as IPSec, however, a client needs to modify each outgoing packet and incoming packet by performing IP address and GPN translations that the NAT 107 is unable to perform without having access to authentication and/or encryption/decryption keys, and by modifying a TCP or UDP checksum to compensate for the translations performed locally and by NAT 107. Further, since NAT 107 cannot incorporate an ALG to perform those functionalities that need to be performed on the outgoing packets without corrupting the packet, an outgoing packet is operated upon by the source client of that packet to process any necessary ALG. In a similar manner, each incoming packet that originated at a server 108 connected on Internet 106 and is received by a client 101-1-101-N from the router/server 103, is post-compensated after the packet has been decrypted and authenticated. As in the outgoing case, the client operates on the resultant packet to process any ALG that needs to be performed and to perform translations of global IP addresses and global GPNs to local IP addresses and local GPNs that the NAT is unable to do, and to modify the TCP or UDP checksum to compensate for the translations made to the packet either locally by the client or by the NAT itself. Both the pre-compensation and post compensation, to be described in more detail herein below, are effected through an IPSec/Nat interoperability client module 109 included within each client 101-1-101-N.
As previously mentioned, the IPSec security format defines two protocols: the AH (Authentication Header) protocol and the ESP (Encapsulating Security Payload) protocol. The AH protocol can provide authentication of packet origin, proof of integrity of packet data, and protection against packet replay. The ESP protocol can provide, in addition to the AH protocol's services, encryption of packet data and limited traffic flow confidentiality. The AH and ESP protocols can be used either in the transport or tunnel mode. The transport mode provides end-to-end security between the source of the packet and its destination. In contrast, the tunnel mode encapsulates packets and thus provides security between the nodes at which the packet is encapsulated and decapsulated. These nodes can be any nodes on the path between the packet's source and destination. FIG. 2 shows the packet layout for the AH protocol in the transport mode; FIG. 3 shows the packet layout for the ESP protocol in the transport mode; FIG. 4 shows the packet layout for the AH protocol in the tunnel mode; and FIG. 5 shows the packet layout for the ESP protocol in the tunnel mode. In the tunnel mode, in FIGS. 4 and 5, the encapsulated packets, 401 and 501, respectively, are shown in bold. The portion of the packet that is authenticated or encrypted is different for the AH and ESP protocols. The AH and ESP protocols insert a header (202 in FIG. 2 and 302 in FIG. 3) between the IP header and the upper-layer UDP or TCP header in the transport mode. In the tunnel mode the header (402 in FIG. 4 and 502 in FIG. 5) is inserted between the IP header and the encapsulated IP datagram. The ESP protocol also appends a packet trailer (303 in FIG. 3 and 503 in FIG. 5). In the tunnel mode, the IP header (404 in FIG. 4 and 504 in FIG. 5), may have source and destination IP addresses different from those of the encapsulated packet. In the AH protocol, authentication covers the entire IP datagram, as can be noted in FIGS. 2 and 4. On the other hand, as can be seen in FIGS. 3 and 5, with the ESP protocol, authentication skips the IP header and the final part of the ESP trailer, which contains the authentication data. In the ESP protocol, encryption skips both the IP and ESP headers and the final part of the ESP trailer.
Additional functionality is added to the router/server 103 in FIG. 1 through an Unsupported-Protocol Module 110 in order to provide interoperability between the NAT and those clients that are using a protocol that is not or cannot be directly supported by the NAT as, for example, the above-described IPSec AH and ESP protocols in both the transport and tunnel modes. For any such protocol that is not supported by NAT, clients need a client-implemented ALG to perform necessary modifications in packet payloads to compensate for NAT translations. To implement such an ALG, clients communicate with the router/server 103 to install entries in the NAT's translation tables 111, stored in memory. For those entries installed at the request of a client (called client-ALG entries), NAT assumes that any necessary ALG is implemented at the corresponding client. On the other hand, for protocols that are supported by directly by NAT and whose entries are installed by NAT without an explicit request by a client (designated as NAT-ALG entries), NAT performs any ALG that may be necessary. NAT-ALG entries have the advantage of being transparent to end hosts, providing backward compatibility. This is only possible, however, for protocols for which the NAT implementation includes the necessary ALG. Client-ALG entries advantageously provide support for those protocols that cannot otherwise be supported.
In order to enable NAT 107 to properly handle protocols which NAT does not directly support, NAT clients communicate with module 110 in router/server 103 to define, for a specified protocol, the GPN in terms of the underlying protocol and port number, the offsets of the source and destination fields from the end of the underlying protocol's header, the field lengths, and a value range for the GPN. The client also defines a GPN value that will be used to represent an “unspecified” GPN that, rather than being selected by the client, is to be selected by the NAT router/server. If the client specifies a protocol for which NAT 107 has the corresponding ALG, the router/server 103 returns an error code to the requesting client, and the client does not use client-ALG entries. Assuming that NAT does not have the corresponding ALG, module 110 in router/server 103 then allocates, for the specified protocol and up to a specified expiration time, a global IP address and global GPN for communications between the client's private IP address and private GPN and a given foreign address. In such an allocation request, the client needs to specify at least the protocol and the private IP address. The client may, however, declare the foreign IP address to be a value that matches any foreign IP address. The client leaves the global IP address and global GPN unspecified and may also leave the private GPN and/or the expiration time unspecified. If the client does not specify the private GPN, module 110 in router/server 103 selects the same value for the private and global GPNs. If the expiration time is left unspecified, module 110 in router/server 103 chooses the present time plus a default interval. Module 110 then selects a global IP address/global GPN combination such that, for the specified protocol and foreign address, at most one private IP address/private GPN combination is associated with that global IP address/global GPN. All selected values are returned to the client and a translation table entry of the type shown in FIG. 6 is installed in the translation table 111 of NAT 107.
As can be noted in FIG. 6, the entry in the translation table includes a protocol field 601, which provides an indication of the particular protocol being used for transmission; a field 602 for the private IP address of the particular client 101-1-101-N, for example, on the local network 102; a field 603 for private GPN for that particular client; a field 604 for the global IP address assigned by router/server 103 for this communication; a field 605 for the global GPN also assigned by router/server 103; a field 606 for the foreign address with which the client is communicating; and a field 607 for the time at which lease of these global addresses expires.
When NAT 107 receives a packet destined to a foreign IP address from a client, NAT 107 looks in its translation table for an entry whose protocol matches the protocol in the header of the packet, which private IP address and private GPN match the packet's source IP address and GPN, and whose foreign IP address matches the packet's destination IP address. If such an entry is found, NAT 107 translates the packet's source IP address and GPN from private to global values according to the matching entry. Otherwise, if NAT 107 has an ALG for the packet's protocol or if none is needed, NAT 107 automatically allocates a NAT-ALG entry in its translation table and translates the packet according to it, or else NAT 107 drops the packet.
Conversely, when router/server 104 receives from a foreign address a packet destined to one of its global IP addresses, NAT 107 looks in its translation table for an entry whose protocol matches the protocol in the packet's header, whose global IP address and global GPN match the packet's destination IP address and GPN, and whose foreign IP address matches the packet's source IP address. If such an entry is found, NAT 107 translates the packet's destination IP address and GPN from the global values to the private values according to the matching entry. Otherwise, NAT 107 drops the packet.
When a translation table entry reaches its expiration time, the entry is erased. Alternatively, the client may renew its lease through a request for either a default period of time or a requested period of time by fully specifying the protocol, global GPN, global IP address, and foreign IP address as they already exist in the entry. Module 110 in router/server 103 upon recognizing that an entry for those parameter values already exists, renews the lease for the requested or default period of time. A client may alternatively request a deallocation of an entry in the translation table upon completing communication with the foreign address specified in the entry.
FIG. 7 is a flowchart showing some of the steps described above that are performed by the NAT router/server 103 to enable clients to use protocols that NAT 107 does not directly support. At step 701, the NAT router/server receives from a client the definition of the GPN for a specified protocol. At step 702, a determination is made whether the router/server has an ALG for that protocol. If yes, at step 703, an error code is sent to the client. If, at step 702, the server does not have an ALG for the specified protocol, then, at step 704, in response to an allocation request from the client, the NAT router/server allocates for the given protocol, a global IP address and global GPN for communication with a given foreign address using a given private IP address and private GPN until a given or default expiration time. At step 705, an entry is installed in the NAT's translation table and the allocated values are returned to the client. At step 706, the NAT server receives a packet having a destination address of the specified foreign address and using the specified protocol. At step 707, the NAT translates the private IP address/GPN source data to the global IP address/GPN according to translation table. Thereafter, or in parallel, at step 708, the NAT router/server receives a packet from the specified foreign address that is addressed to the global IP address with the global GPN and using the specified protocol. At step 709, the NAT, finding the appropriate entry in its translation table, translates the global IP address/GPN destination data to the private IP address/GPN. Following step 707 or 709, at step 710, the packet is forwarded to its destination. At step 711, a determination is made whether the current time has exceeded the specified expiration time of the entry. If not, packet processing to and from the client continues. If yes, at step 712, the entry is deleted.
The preceding methodology can be applied to the previously described unsupported IPSec protocol. In addition to the AH and ESP protocols in the tunnel or transport mode, the ISAKMP (Internet Security Association and Key Management Protocol) (see, e.g., D. Maughan, M. Schertler, M. Schneider and J. Turner, “Internet Security Association and Key Management Protocol (ISAKMP),” IETF, RFC 2408, November 1998), is part of the IPSec protocol suite used by IPSec peers to negotiate which security services to implement (e.g., authentication and/or encryption) and which algorithms and keys to use. In addition to MD5 (see, e.g., C. Madson and R. Glenn, “The Use of HMAC-MD5-96 within ESP and AH,” IETF, RFC 2403, November 1998) and SHA (see, e.g., C. Madson and R. Glenn, “The Use of HMAC-SHA-1-96 within ESP and AH,” IETF, RFC 2404, November 1998) for authentication and DES (see, e.g., C. Madson and N. Doraswamy, “The ESP DES-CBC Cipher Algorithm with Explicit IV,” IETF, RFC 2405, November 1998) for encryption, IPSec implementations may support other algorithms. The choice of services, algorithms, and keys is called a security association (SA). The framework for SA negotiation is defined by ISAKMP. ISAKMP is layered on top of UDP and uses UDP port 500 for both its source and destination. IPSec's negotiation is more specifically defined by IKE (Internet Key Exchange) (see, e.g., D. Harkins and D. Carrel, “The Internet Key Exchange (IKE),” IETF, RFC 2409, November 1998). An IPSec packet's SA is uniquely identified by the protocol (AH or ESP) and destination IP address in the IP header, in conjunction with the SPI (Security Parameters Index), a 32-bit field in the AH or ESP header.
During the negotiation governed by the ISAKMP protocol, the GPN is an initiator cookie, a 64-bit field present in all ISKAMP packets during a negotiation session. Clients declare to the router/server that ISAKMP GPNs have a 0-bit offset from the end of the UDP header both for source and destination, and have a 64-bit length. The router/server thus knows where the GPN field begins and how many bits it occupies. Before using an initiator cookie in an ISAKMP negotiation, a local client 101-1-101-N leases the global IP address and cookie from the router/server 103, leaving both private and global GPN unspecified. This prevents NAT demultiplexing errors due to two or more of the local clients 101-1-101-N using the same global IP address and cookie to communicate with a same foreign address using the same protocol. Because the client leaves both the private and global GPNs unspecified, the router/server 103 chooses them to be the same. The NAT thus translates only IP addresses, the cookie being translated to its same value.
For the IPSec AH and ESP protocols, the underlying protocol is IP, and the GPN is the incoming SPI. For these protocols clients declare to the server that the GPN has a 0-bit offset from the end of the IP header both for source and destination, and has a 32-bit length. Before an SPI is selected in an ISAKMP negotiation, the incoming SPI is leased from router/server 103, again leaving both the private and global GPN unspecified. As with the initiator cookie, this guarantees that no two clients will be using the same SPI to communicate with the same foreign IP address using the same protocol, thereby avoiding potential demultiplexing errors. By leaving both the private and global GPNs unspecified, router/server 103 chooses them to be the same. Thus, as with the cookie, NAT 107 translates only IP addresses and translates incoming SPIs to the same values.
Since, as previously described, due to the proper lack of access to the authentication and encryption codes used in a secure IPSec protocol-based communication, the NAT is unable to perform any ALG for IPSec packets. Rather, an IPSec ALG is installed in clients to compensate for the effects of the NAT's IP address translations in IPSec packets. Such an ALG is possible at a client because the ALG is co-located with one of the IPSec endpoints and revealing the secret keys used in the secure transmission to the ALG does not violate end-to-end security. Without an ALG, however, a packet will be dropped when it arrives at its foreign address destination due to the deleterious effect that the NAT translation causes upon packet authentication verification and TCP/UDP checksum calculations. Accordingly, in order to avoid the effects of NAT translations, module 109 in the client modifies each outgoing packet before authentication and encryption to pre-compensate for those translation-induced effects and performs any ALG that might be necessary but which cannot be performed by the NAT. Similarly, after each incoming packet from the foreign address is authenticated and decrypted, any necessary ALG is processed by module 109 in the client and the packet is modified to post-compensate for the effects of the NAT translations.
For full interoperability with NAT, clients using an unsupported protocol such as the IPSec security protocol suite, should follow the prescribed methodology when the source IP address is private but the destination IP address is global, or vice-versa. In such cases, as when as previously described the clients are connected on a private network, NAT is necessary. The following procedures should then be followed when using IPSec:
1. As previously described, before using an initiator cookie in an ISAKMP negotiation, the client leases a global IP address and cookie from router/server 103 to prevent NAT demultiplexing errors due to two or more local clients from using the same global IP address and cookie.
2. For similar reasons, and as previously noted, before selecting an incoming SPI in an ISAKMP negotiation, the client leases the incoming SPI from the router/server 103, keeping the global IP address as in the first step above.
3. For each outgoing packet, before authentication and encryption, the following steps are performed:
    • (i) in the transport mode, replace the source port number by a global port number since the NAT will not translate that port number in the TCP or UDP header;
    • (ii) in the tunnel mode, replace the encapsulated source IP address and port number by a global IP address and port number so that when the packet is decapsulated at the receiving end, a reply packet can properly have as its destination address that global address and global port number rather than the unaddressable private IP address on local network 102;
    • (iii) modify the TCP or UDP checksum by adding to the TCP or UDP checksum incorporated in the TCP or UDP header: (a) the difference between the global and private source IP addresses, and (b) the difference between the global and private source port numbers in order to compensate for the changes made to the packet in these steps or that will be made to the packet by the NAT translation; and
    • (iv) process any ALG that may be necessary.
4. Then, for the AH protocol, given that NAT will be translating the source IP address to the previously leased global IP address, compute the packet's AH authentication data as if the source IP address were equal to that global IP address and incorporate that authentication data into the AH header.
5. As previously noted, periodically renew leases for global IP addresses, initiator cookies, incoming SPIs, and global port number, while needed.
From step 4, when NAT performs its translation and the packet is received at its destination at the foreign address, the packet will be properly authenticated if no transmission errors have occurred. From step 3, when the TCP or UDP checksum is computed over the received authenticated and decrypted packet, it will match, absent a transmission error, the modified TCP or UDP checksum that is incorporated in the TCP or UDP header, at the client, before authentication and encryption.
For incoming packets, steps 3 and 4 are replaced as follows:
3′. For the AH protocol, compute each packet's authentication data as if the destination IP address were equal to the global IP address, since it was with that global IP address as the destination that the authentication data was originally computed when the packet was sent from the foreign address.
4′. After authentication and decryption, the following steps are performed:
    • (i′) process any necessary ALG;
    • (ii′) in the transport mode, replace the global destination port number by the corresponding private port number, since NAT did not perform such translation;
    • (iii′) in the tunnel mode, replace in the decapsulated packet the global destination IP address and port number by the corresponding private address and port number, since such translations are not performed by NAT; and
    • (iv′) subtract from the TCP or UDP checksum in the packet (a) the difference between global and private destination IP addresses, and (b) the difference between global and private destination port number, to compensate for the translations made in the packet by the client or by NAT.
When the client computes the checksum over the received packet after translations made by NAT and steps (i′) through (iv′) above, the checksum will be correct, absent a transmission error.
With reference to the flowchart in FIGS. 8-10, the steps from a local client's standpoint are shown that provide interoperability of NAT and IPSec, as described above. At step 801, the global IP address and initiator cookie are leased from the NAT router/server prior to an ISAKMP negotiation. At step 802, the incoming SPI is similarly leased from the NAT router/server. At step 803, a determination is made whether there is a packet to be processed under the IPSec protocol. If not, the program flow is fed back to step 803 until there is a packet to process. If, at step 803, there is a packet to be processed, then, at step 806, a determination is made whether the leases have expired. If yes, then, at step 807, the leases are renewed with the NAT router/server. If the leases have not expired, or after the leases have been renewed, a determination is made, at step 808, whether the packet is incoming (received from the local network) or outgoing (received from the client's IP/TCP/UDP output). If it is an outgoing packet, then, at step 809, a determination is made whether the transport or tunnel mode is to be used. If the transport mode is to be used, at step 810, the source port number in the packet is replaced with a global port number. If the tunnel mode is to be used, then, at step 811, the encapsulated source IP address and port number are replaced by the global IP address and global port number. After either steps 810 or 811, at step 812 (FIG. 9), the difference between the global and private source IP addresses and the difference between the global and private source port numbers are added to the TCP or UDP checksum. At step 813, any necessary ALGs are processed. At step 814, a determination is made whether the AH or ESP protocol is being used. If the AH protocol is being used, then, at step 815, the packet's authentication data is computed as if the source IP address were equal to the global IP address. If the ESP protocol is being used, at step 816, the authentication and encryption data for the modified packet is computed. After either steps 815 or 816, at step 817, the packet is formulated according to the protocol and mode and, at step 818, the packet is sent to the NAT router/server. The program flow then returns to step 803 (FIG. 8) for processing of another packet. If, at step 808, an incoming packet is to be processed, then, at step 819 (FIG. 10), a determination is made whether the protocol of that packet is AH or ESP. If the protocol is AH, at step 820, the packet's authentication data is computed as if the destination IP address were equal to the global IP address. If the protocol is ESP, at step 821, authentication and decryption are performed on the received incoming packet. Following either steps 820 or 821, at step 822, any necessary ALGs are processed. At step 823, a determination is made whether the transport or tunnel modes were used. If the transport mode was used, then at step 824, the global destination port number is replaced by the corresponding private port number. If the tunnel mode was used, then at step 825, the global destination IP address and port number are replaced in the decapsulated packet by the corresponding private address and port number. Following either steps 824 or 825, at step 826, the difference between the global and private destination IP addresses and the difference between the global and private port numbers are subtracted from the TCP or UDP checksum in the packet. At step 827, the modified packet is passed to an IP/TCP/UDP input process. The program flow then returns to step 803 (FIG. 8) for processing of another packet.
Although described in conjunction with the IPSec security protocol, it should be apparent to one skilled in the art that network address translation can be extended to handle any protocol that the NAT and its associated server do not themselves support. Similarly the pre and post compensation and the incorporation of necessary ALGs at a client that is using a protocol not supported by the NAT and which the client needs to connect to the Internet or other packet-based network can likewise be extended to any such unsupported protocol.
Although router/server 107 are shown as a single entity, one skilled in the art will realize that the router and server could be separate entities and that the NAT and the server could be on separate entities. Further, the client modules 109 and server module 110 are described as software modules and are preferably implemented as such, but they also could be implemented in hardware. As software modules, they could be implemented in RAM, ROM, or any other computer readable medium.
The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements which, although not explicitly described or shown herein, embody the principles of the invention and are included within its spirit and scope. Furthermore, all examples and conditional language that were recited herein were principally intended expressly to be only for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor(s) to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Moreover, all statements herein reciting principles, aspects, and embodiments of the invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents include both currently known equivalents as well as equivalents developed in the future, i.e., any elements developed that perform the same function, regardless of structure.
Thus, for example, it will be appreciated by those skilled in the art that the block diagrams herein represent conceptual views embodying the principles of the invention. Similarly, it will be appreciated that any flowcharts, and the like represent various processes which may be substantially represented in computer readable medium and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.
The functions of the various elements shown in the FIGS., may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared.
In the claims hereof any element expressed as a means for performing a specified function is intended to encompass any way of performing that function including, for example, a) a combination of circuit elements which performs that function or b) software in any form, including, therefore, firmware, microcode or the like, combined with appropriate circuitry for executing that software to perform the function. The invention as defined by such claims resides in the fact that the functionalities provided by the various recited means are combined and brought together in the manner which the claims call for. Applicant thus regards any means which can provide those functionalities as equivalent as those shown herein.

Claims (27)

1. A method comprising:
receiving a request from a client at a network address translator (NAT) that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address, said entry being used for translating in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively, and for translating in incoming packets sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
2. A method comprising:
receiving a request from a client at a network address translator (NAT) that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, NAT's assigned global IP address and GPN, and a foreign IP address; and
in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, translating in accordance with the entry, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively.
3. A method comprising:
receiving a request from a client at a network address translator (NAT) that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address; and
in incoming packets received by the NAT and sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, translating in accordance with the entry, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
4. The method of claim 1, 2 or 3 wherein the entry further defines an expiration time until which the entry is valid for translating packets.
5. The method of claim 1, 2 or 3 wherein the unsupported protocol is a protocol in the IP Security (IPSec) security protocol suite.
6. The method of claim 5 wherein the unsupported protocol in the IPSec security suite is the Internet Security Association and Key Management Protocol (ISAKMP) and the GPN is an initiator cookie leased from the NAT to be unique to the client.
7. The method of claim 6 wherein the leased initiator cookie is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
8. The method of claim 5 wherein the unsupported protocol in the IPSec security suite is the AH or ESP protocol in either the tunnel or transport modes, and the GPN is an incoming Security Parameter Index (SPI) leased from the NAT to be unique to the client.
9. The method of claim 8 wherein the leased SPI is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
10. A network address translator (NAT) comprising:
means for receiving a request from a client that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
memory means for storing a translation table;
means for creating an entry in the translation table that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address, said entry being used for translating in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively, and for translating in incoming packets sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
11. A network address translator (NAT) comprising:
means for receiving a request from a client at a network address translator (NAT) that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each received packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
memory means for storing a translation table;
means for creating an entry in the translation table that defines for that protocol an association between a client's private IP address and GPN, NAT's assigned global IP address and GPN, and a foreign IP address; and
means for, in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, translating in accordance with the entry, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively.
12. A network address translator (NAT) comprising:
means for receiving a request from a client that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
memory means for storing a translation table;
means for creating an entry in the translation table that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address; and
means for, in incoming packets received by the NAT and sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, translating in accordance with the entry, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
13. The NAT of claim 10, 11 or 12 wherein the entry further defines an expiration time until which the entry is valid for translating packets.
14. The NAT of claim 10, 11 or 12 wherein the unsupported protocol is a protocol in the IP Security (IPSec) security protocol suite.
15. The NAT of claim 14 wherein the unsupported protocol in the IPSec security suite is the Internet Security Association and Key Management Protocol (ISAKMP) and the GPN is an initiator cookie leased from the NAT to be unique to the client.
16. The NAT of claim 15 wherein the leased initiator cookie is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
17. The NAT of claim 14 wherein the unsupported protocol in the IPSec security suite is the AH or ESP protocols in tunnel or transport modes, and the GPN is an incoming Security Parameter Index (SPI) leased from the NAT to be unique to the client.
18. The NAT of claim 17 wherein the leased SPI is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
19. A computer readable media tangibly embodying a program of instructions executable by a computer to perform a method at a network address translator (NAT), the method comprising:
receiving a request from a client that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address, said entry being used for translating in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively, and for translating in incoming packets sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
20. A computer readable media tangibly embodying a program of instructions executable by a computer to perform a method at a network address translator (NAT), the method comprising:
receiving a request from a client that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an indication of a bit position within a packet of where the GPN begins and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, NAT's assigned global IP address and GPN, and a foreign IP address; and
in outgoing packets received by the NAT from the client using that protocol and having the foreign IP address as their destination, translating in accordance with the entry, the client's private source IP address and GPN to the NAT's global IP address and GPN, respectively.
21. A computer readable media tangibly embodying a program of instructions executable by a computer to perform a method at a network address translator (NAT), the method comprising:
receiving a request from a client that defines for a protocol not directly supported by the NAT a generalized port number (GPN) associated with that unsupported protocol and its location in each packet, the location comprising an offset of the GPN within each packet and a length of the GPN;
creating an entry in a translation table of the NAT that defines for that protocol an association between a client's private IP address and GPN, a NAT's assigned global IP address and GPN, and a foreign IP address; and
in incoming packets received by the NAT and sent from the foreign IP address using that protocol to the NAT's global destination IP address and GPN, translating in accordance with the entry, the NAT's global destination IP address and GPN to the client's private destination IP address and GPN, respectively.
22. The media of claim 19, 20 or 21 where in the method the entry further defines an expiration time until which the entry is valid for translating packets.
23. The media of claim 19, 20 or 21 where in the method the unsupported protocol is a protocol in the IP Security (IPSec) security protocol suite.
24. The media of claim 23 wherein the unsupported protocol in the IPSec security suite is the Internet Security Association and Key Management Protocol (ISAKMP) and the GPN is an initiator cookie leased from the NAT to be unique to the client.
25. The media of claim 24 wherein the leased initiator cookie is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
26. The media of claim 23 wherein the unsupported protocol in the IPSec security suite is the AH or ESP protocol in either the tunnel or transport modes, and the GPN is an incoming Security Parameter Index (SPI) leased from the NAT to be unique to the client.
27. The method of claim 26 wherein the leased SPI is chosen by the NAT to be used as both the client's GPN and the NAT's GPN.
US09/698,973 1999-10-28 2000-10-27 Method and apparatus for extending network address translation for unsupported protocols Expired - Fee Related US6886103B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/698,973 US6886103B1 (en) 1999-10-28 2000-10-27 Method and apparatus for extending network address translation for unsupported protocols

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16209099P 1999-10-28 1999-10-28
US09/698,973 US6886103B1 (en) 1999-10-28 2000-10-27 Method and apparatus for extending network address translation for unsupported protocols

Publications (1)

Publication Number Publication Date
US6886103B1 true US6886103B1 (en) 2005-04-26

Family

ID=34437150

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/698,973 Expired - Fee Related US6886103B1 (en) 1999-10-28 2000-10-27 Method and apparatus for extending network address translation for unsupported protocols

Country Status (1)

Country Link
US (1) US6886103B1 (en)

Cited By (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046348A1 (en) * 2000-07-13 2002-04-18 Brustoloni Jose?Apos; C. Method and apparatus for robust NAT interoperation with IPSEC'S IKE and ESP tunnel mode
US20020085562A1 (en) * 2000-12-13 2002-07-04 International Business Machines Corporation IP headers for remote direct memory access and upper level protocol framing
US20020154624A1 (en) * 2001-04-18 2002-10-24 Hitachi. Ltd. Method of translating protecol at translator, method of providing protocol translation information at translation server, and address translation server
US20030016653A1 (en) * 2001-07-19 2003-01-23 International Business Machines Corporation Method and system for providing a symmetric key for more efficient session identification
US20030126467A1 (en) * 2001-07-17 2003-07-03 Yotta Yotta, Inc. Network security devices and methods
US20030177253A1 (en) * 2002-08-15 2003-09-18 Schuehler David V. TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20030212907A1 (en) * 2002-05-09 2003-11-13 International Business Machines Corporation Secure IPsec tunnels with a background system accessible via a gateway implementing NAT
US20030233576A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Detection of support for security protocol and address translation integration
US20040088537A1 (en) * 2002-10-31 2004-05-06 Microsoft Corporation Method and apparatus for traversing a translation device with a security protocol
US20040103212A1 (en) * 2002-11-26 2004-05-27 Keisuke Takeuchi Address translator and method for management of address translation rules
US20040128345A1 (en) * 2002-12-27 2004-07-01 Robinson Scott H. Dynamic service registry
US20040199666A1 (en) * 2001-08-24 2004-10-07 King John R Apparatus and method of coordinating network events
US20040210660A1 (en) * 2000-03-29 2004-10-21 Microsoft Corporation Network address translator application programming interface
US20040230688A1 (en) * 2000-03-06 2004-11-18 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US20040264449A1 (en) * 2001-08-30 2004-12-30 Karl Klaghofer Pre-processing of nat addresses
US20050089031A1 (en) * 2003-10-23 2005-04-28 Jon Krueger Determining a checksum from packet data
US20050223095A1 (en) * 2002-04-08 2005-10-06 Bernie Volz Method and system for enabling connections into networks with local address realms
US20050238034A1 (en) * 2004-04-12 2005-10-27 Brian Gillespie System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20050251611A1 (en) * 2004-04-27 2005-11-10 Creta Kenneth C Transmitting peer-to-peer transactions through a coherent interface
US20060053289A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Peer-to-peer communications
US20060059076A1 (en) * 2004-09-13 2006-03-16 Peter Hansen System for aggregating executions in a communication network for securities transactions and the like
US7133404B1 (en) * 2000-08-11 2006-11-07 Ip Dynamics, Inc. Communication using two addresses for an entity
US20060294059A1 (en) * 2000-04-07 2006-12-28 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US7181612B1 (en) * 2002-01-17 2007-02-20 Cisco Technology, Inc. Facilitating IPsec communications through devices that employ address translation in a telecommunications network
US7188250B1 (en) * 2002-12-13 2007-03-06 Nvidia Corporation Method and apparatus for performing network processing functions
KR100706339B1 (en) 2005-10-27 2007-04-13 주식회사 케이티프리텔 Method for connecting with other network in wireless packet switching network system based on sip and the system thereof
US20070133576A1 (en) * 2005-12-12 2007-06-14 Hitachi Communication Technologies, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US20070277036A1 (en) * 2003-05-23 2007-11-29 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US20070288606A1 (en) * 2004-10-01 2007-12-13 Matsushita Electric Industrial Co., Ltd. Communication Terminal Apparatus, Electric Device And Communication Method
DE102006029441A1 (en) * 2006-06-21 2007-12-27 Siemens Ag System and method for data transmission in a secured network, in particular a network of rail-bound traffic with a high level of security
US20080052509A1 (en) * 2006-08-24 2008-02-28 Microsoft Corporation Trusted intermediary for network data processing
US20080080508A1 (en) * 2006-10-03 2008-04-03 Ranadip Das Integrated Tunneling and Network Address Translation: Performance Improvement for an Interception Proxy Server
US20080109413A1 (en) * 2000-04-07 2008-05-08 Indeck Ronald S Associative Database Scanning and Information Retrieval
US7376750B1 (en) * 2002-10-02 2008-05-20 Cisco Technology, Inc. Method and apparatus for generic application layer gateway
US7480305B1 (en) * 2002-02-19 2009-01-20 Cisco Technology, Inc. Apparatus and methods for maintaining the registration state of an IP device in a network address port translation (NAPT) environment
WO2009071830A1 (en) * 2007-11-30 2009-06-11 France Telecom Method and device for maintaining an address translation table
US20090182683A1 (en) * 2008-01-11 2009-07-16 Exegy Incorporated Method and System for Low Latency Basket Calculation
US20090210556A1 (en) * 2005-05-31 2009-08-20 Access Co., Ltd Time division address management device and time division routing information management device
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US7716330B2 (en) 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
CN101217435B (en) * 2008-01-16 2011-03-16 中兴通讯股份有限公司 L2TP over IPSEC remote access method and device
US7917299B2 (en) 2005-03-03 2011-03-29 Washington University Method and apparatus for performing similarity searching on a data stream with respect to a query string
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
JP2011172201A (en) * 2010-01-19 2011-09-01 Alaxala Networks Corp Address translation apparatus and method of managing address translation table
US20110243065A1 (en) * 2010-04-02 2011-10-06 Venkitaraman Sarma Packet Routing Method, Proxy Server And Apparatus
US20110255540A1 (en) * 2010-04-20 2011-10-20 Tal Mizrahi System and Method for Adapting a Packet Processing Pipeline
US8069102B2 (en) 2002-05-21 2011-11-29 Washington University Method and apparatus for processing financial information at hardware speeds using FPGA devices
US20120294310A1 (en) * 2011-05-18 2012-11-22 Chia-Wei Yen Wide Area Network Interface Selection Method and Wide Area Network System Using the Same
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8762249B2 (en) 2008-12-15 2014-06-24 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
CN104125151A (en) * 2014-08-06 2014-10-29 汉柏科技有限公司 IPSec (Internet protocol security) packet forwarding method and system
US8879727B2 (en) 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US20140330886A1 (en) * 2000-12-19 2014-11-06 Rockstar Consortium Us Lp Distributed network address translation control
US9288288B2 (en) 2011-06-27 2016-03-15 Marvell Israel (M.I.S.L) Ltd. FCoE over trill
US9633097B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for record pivoting to accelerate processing of data fields
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US20180152484A1 (en) * 2012-02-29 2018-05-31 Microsoft Technology Licensing, Llc Dynamic Selection of Security Protocol
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US10146845B2 (en) 2012-10-23 2018-12-04 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
CN110086702A (en) * 2019-04-04 2019-08-02 杭州迪普科技股份有限公司 Message forwarding method, device, electronic equipment and machine readable storage medium
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10680998B2 (en) 2015-11-10 2020-06-09 International Business Machines Corporation Method, system, and computer program product for a network device in switchless networks
US10846624B2 (en) 2016-12-22 2020-11-24 Ip Reservoir, Llc Method and apparatus for hardware-accelerated machine learning
US10902013B2 (en) 2014-04-23 2021-01-26 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
CN114499921A (en) * 2021-11-26 2022-05-13 中国南方电网有限责任公司 Data packet file playback method, data packet file acquisition method and device
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US11537691B2 (en) * 2020-02-28 2022-12-27 Infineon Technologies Ag Controller area network traffic flow confidentiality
US20230006998A1 (en) * 2021-07-02 2023-01-05 Tailscale Inc. Management of private networks over multiple local networks
US11943621B2 (en) 2018-12-11 2024-03-26 Texas Instruments Incorporated Secure localization in wireless networks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631402B1 (en) * 1997-09-26 2003-10-07 Worldcom, Inc. Integrated proxy interface for web based report requester tool set
US6697354B1 (en) * 1998-03-05 2004-02-24 3Com Corporation Method and system for distributed network address translation for mobile network devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631402B1 (en) * 1997-09-26 2003-10-07 Worldcom, Inc. Integrated proxy interface for web based report requester tool set
US6697354B1 (en) * 1998-03-05 2004-02-24 3Com Corporation Method and system for distributed network address translation for mobile network devices

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
C. Madson and N. Doraswamy, "The ESP DES-CBC Cipher Algorithm with Explicit IV," IETF, RFC 2405, Nov. 1998.
C. Madson and R. Glenn, "The Use of HMAC-MD5-96 within ESP and AH," IETF, RFC 2403, Nov. 1998.
C. Madson and R. Glenn, "The Use of HMAC-SHA-1-96 within ESP and AH," RFC 2404, Nov. 1998.
D. Harkins and D. Carrel, "The Internet Key Exchange (IKE)," IETF, RFC 2409, Nov. 1998.
D. Maughan, M. Scherlter, M. Schneider and J. Turner, "Internet Security Association and Key Management Protocol (ISAKMP)," IETF, RFC 2408, Nov. 1998.
S. Deering and R. Hinden, "Internet Protocol, Version 6 (Ipv6) Specification," IETF, RFC 2460, Dec. 1998.
S. Kent and R. Atkinson, "IP Authentication Header," IEFT, RFC 2402, Nov. 1998.
S. Kent and R. Atkinson, "IP Encapsulating Security Payload (ESP)," IEFT, RFC 2406, Nov. 1998.
S. Kent and R. Atkinson, "Security Architecture for the Internet Protocol," IETF, RFC 2401, Nov. 1998.

Cited By (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305477B2 (en) 2000-03-06 2007-12-04 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US20080071915A1 (en) * 2000-03-06 2008-03-20 Microsoft Corporation Application programming interface and generalized network address translation for translation of transport layer sessions
US20080288647A1 (en) * 2000-03-06 2008-11-20 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US7610389B2 (en) 2000-03-06 2009-10-27 Microsoft Corporation Application programming interface and generalized network address translation for translation of transport layer sessions
US20040230688A1 (en) * 2000-03-06 2004-11-18 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US20040210660A1 (en) * 2000-03-29 2004-10-21 Microsoft Corporation Network address translator application programming interface
US8131697B2 (en) 2000-04-07 2012-03-06 Washington University Method and apparatus for approximate matching where programmable logic is used to process data being written to a mass storage medium and process data being read from a mass storage medium
US20080109413A1 (en) * 2000-04-07 2008-05-08 Indeck Ronald S Associative Database Scanning and Information Retrieval
US7953743B2 (en) 2000-04-07 2011-05-31 Washington University Associative database scanning and information retrieval
US9020928B2 (en) 2000-04-07 2015-04-28 Ip Reservoir, Llc Method and apparatus for processing streaming data using programmable logic
US7680790B2 (en) 2000-04-07 2010-03-16 Washington University Method and apparatus for approximate matching of DNA sequences
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US20060294059A1 (en) * 2000-04-07 2006-12-28 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US8549024B2 (en) 2000-04-07 2013-10-01 Ip Reservoir, Llc Method and apparatus for adjustable data matching
US20080126320A1 (en) * 2000-04-07 2008-05-29 Indeck Ronald S Method and Apparatus for Approximate Matching Where Programmable Logic Is Used to Process Data Being Written to a Mass Storage Medium and Process Data Being Read from a Mass Storage Medium
US7155740B2 (en) * 2000-07-13 2006-12-26 Lucent Technologies Inc. Method and apparatus for robust NAT interoperation with IPSEC'S IKE and ESP tunnel mode
US20020046348A1 (en) * 2000-07-13 2002-04-18 Brustoloni Jose?Apos; C. Method and apparatus for robust NAT interoperation with IPSEC'S IKE and ESP tunnel mode
USRE41024E1 (en) 2000-08-11 2009-12-01 Hasan Alkhatib Communication using two addresses for an entity
US7133404B1 (en) * 2000-08-11 2006-11-07 Ip Dynamics, Inc. Communication using two addresses for an entity
US20020085562A1 (en) * 2000-12-13 2002-07-04 International Business Machines Corporation IP headers for remote direct memory access and upper level protocol framing
US20140330886A1 (en) * 2000-12-19 2014-11-06 Rockstar Consortium Us Lp Distributed network address translation control
US20020154624A1 (en) * 2001-04-18 2002-10-24 Hitachi. Ltd. Method of translating protecol at translator, method of providing protocol translation information at translation server, and address translation server
US7305480B2 (en) * 2001-04-18 2007-12-04 Hitachi, Ltd. Method and system for persistent translation between protocols
US7404206B2 (en) * 2001-07-17 2008-07-22 Yottayotta, Inc. Network security devices and methods
US20030126467A1 (en) * 2001-07-17 2003-07-03 Yotta Yotta, Inc. Network security devices and methods
US7849504B2 (en) 2001-07-17 2010-12-07 Emc Corporation Network security devices and methods
US20030016653A1 (en) * 2001-07-19 2003-01-23 International Business Machines Corporation Method and system for providing a symmetric key for more efficient session identification
US7283526B2 (en) * 2001-07-19 2007-10-16 International Business Machines Corporation Method and system for providing a symmetric key for more efficient session identification
US20040199666A1 (en) * 2001-08-24 2004-10-07 King John R Apparatus and method of coordinating network events
US20040264449A1 (en) * 2001-08-30 2004-12-30 Karl Klaghofer Pre-processing of nat addresses
US7716330B2 (en) 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7181612B1 (en) * 2002-01-17 2007-02-20 Cisco Technology, Inc. Facilitating IPsec communications through devices that employ address translation in a telecommunications network
US7480305B1 (en) * 2002-02-19 2009-01-20 Cisco Technology, Inc. Apparatus and methods for maintaining the registration state of an IP device in a network address port translation (NAPT) environment
US20050223095A1 (en) * 2002-04-08 2005-10-06 Bernie Volz Method and system for enabling connections into networks with local address realms
US7533164B2 (en) * 2002-04-08 2009-05-12 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for enabling connections into networks with local address realms
US7159242B2 (en) * 2002-05-09 2007-01-02 International Business Machines Corporation Secure IPsec tunnels with a background system accessible via a gateway implementing NAT
US20030212907A1 (en) * 2002-05-09 2003-11-13 International Business Machines Corporation Secure IPsec tunnels with a background system accessible via a gateway implementing NAT
US8069102B2 (en) 2002-05-21 2011-11-29 Washington University Method and apparatus for processing financial information at hardware speeds using FPGA devices
US10909623B2 (en) 2002-05-21 2021-02-02 Ip Reservoir, Llc Method and apparatus for processing financial information at hardware speeds using FPGA devices
US20030233576A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Detection of support for security protocol and address translation integration
US7191331B2 (en) * 2002-06-13 2007-03-13 Nvidia Corporation Detection of support for security protocol and address translation integration
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20030177253A1 (en) * 2002-08-15 2003-09-18 Schuehler David V. TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7376750B1 (en) * 2002-10-02 2008-05-20 Cisco Technology, Inc. Method and apparatus for generic application layer gateway
US20040088537A1 (en) * 2002-10-31 2004-05-06 Microsoft Corporation Method and apparatus for traversing a translation device with a security protocol
US7346770B2 (en) * 2002-10-31 2008-03-18 Microsoft Corporation Method and apparatus for traversing a translation device with a security protocol
US20040103212A1 (en) * 2002-11-26 2004-05-27 Keisuke Takeuchi Address translator and method for management of address translation rules
US7404008B2 (en) * 2002-11-26 2008-07-22 Hitachi, Ltd. Address translator and method for management of address translation rules
US7188250B1 (en) * 2002-12-13 2007-03-06 Nvidia Corporation Method and apparatus for performing network processing functions
US20040128345A1 (en) * 2002-12-27 2004-07-01 Robinson Scott H. Dynamic service registry
US8751452B2 (en) 2003-05-23 2014-06-10 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US11275594B2 (en) 2003-05-23 2022-03-15 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US10929152B2 (en) 2003-05-23 2021-02-23 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US8620881B2 (en) 2003-05-23 2013-12-31 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US10719334B2 (en) 2003-05-23 2020-07-21 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US10346181B2 (en) 2003-05-23 2019-07-09 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US9176775B2 (en) 2003-05-23 2015-11-03 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US9898312B2 (en) 2003-05-23 2018-02-20 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US8768888B2 (en) 2003-05-23 2014-07-01 Ip Reservoir, Llc Intelligent data storage and processing using FPGA devices
US20070277036A1 (en) * 2003-05-23 2007-11-29 Washington University, A Corporation Of The State Of Missouri Intelligent data storage and processing using fpga devices
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US20050089031A1 (en) * 2003-10-23 2005-04-28 Jon Krueger Determining a checksum from packet data
US7441179B2 (en) * 2003-10-23 2008-10-21 Intel Corporation Determining a checksum from packet data
US8631139B2 (en) * 2004-04-12 2014-01-14 Simtone Corporation System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20110066739A1 (en) * 2004-04-12 2011-03-17 Simtone Corporation (F/K/A Xds, Inc.) System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20120222108A1 (en) * 2004-04-12 2012-08-30 Simtone Corporation (F/K/A Xds, Inc.) System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20050238034A1 (en) * 2004-04-12 2005-10-27 Brian Gillespie System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20050251611A1 (en) * 2004-04-27 2005-11-10 Creta Kenneth C Transmitting peer-to-peer transactions through a coherent interface
US7210000B2 (en) * 2004-04-27 2007-04-24 Intel Corporation Transmitting peer-to-peer transactions through a coherent interface
US20100023766A1 (en) * 2004-09-09 2010-01-28 International Business Machines Corporation Computer Program Product and Computer System for Peer-to-Peer Communications
US7596690B2 (en) * 2004-09-09 2009-09-29 International Business Machines Corporation Peer-to-peer communications
US8086847B2 (en) * 2004-09-09 2011-12-27 International Business Machines Corporation Computer program product and computer system for peer-to-peer communications
US20060053289A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Peer-to-peer communications
US20060059076A1 (en) * 2004-09-13 2006-03-16 Peter Hansen System for aggregating executions in a communication network for securities transactions and the like
US7818236B2 (en) * 2004-09-13 2010-10-19 Nyfix, Inc. System for aggregating executions in a communication network for securities transactions and the like
US20070288606A1 (en) * 2004-10-01 2007-12-13 Matsushita Electric Industrial Co., Ltd. Communication Terminal Apparatus, Electric Device And Communication Method
US9547680B2 (en) 2005-03-03 2017-01-17 Washington University Method and apparatus for performing similarity searching
US20110231446A1 (en) * 2005-03-03 2011-09-22 Washington University Method and Apparatus for Performing Similarity Searching
US10580518B2 (en) 2005-03-03 2020-03-03 Washington University Method and apparatus for performing similarity searching
US10957423B2 (en) 2005-03-03 2021-03-23 Washington University Method and apparatus for performing similarity searching
US7917299B2 (en) 2005-03-03 2011-03-29 Washington University Method and apparatus for performing similarity searching on a data stream with respect to a query string
US8515682B2 (en) 2005-03-03 2013-08-20 Washington University Method and apparatus for performing similarity searching
US20090210556A1 (en) * 2005-05-31 2009-08-20 Access Co., Ltd Time division address management device and time division routing information management device
KR100706339B1 (en) 2005-10-27 2007-04-13 주식회사 케이티프리텔 Method for connecting with other network in wireless packet switching network system based on sip and the system thereof
US20070133576A1 (en) * 2005-12-12 2007-06-14 Hitachi Communication Technologies, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US8154999B2 (en) 2005-12-12 2012-04-10 Hitachi, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US20080075085A1 (en) * 2005-12-12 2008-03-27 Hitachi Communication Technologies, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US7839857B2 (en) 2005-12-12 2010-11-23 Hitachi, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US20090175276A1 (en) * 2005-12-12 2009-07-09 Hitachi Communication Technologies, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US7286539B2 (en) * 2005-12-12 2007-10-23 Hitachi Communication Technologies, Ltd. Packet forwarding apparatus with function of limiting the number of user terminals to be connected to ISP
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US8737606B2 (en) 2006-03-23 2014-05-27 Ip Reservoir, Llc Method and system for high throughput blockwise independent encryption/decryption
US8983063B1 (en) 2006-03-23 2015-03-17 Ip Reservoir, Llc Method and system for high throughput blockwise independent encryption/decryption
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8458081B2 (en) 2006-06-19 2013-06-04 Exegy Incorporated High speed processing of financial information using FPGA devices
US10504184B2 (en) 2006-06-19 2019-12-10 Ip Reservoir, Llc Fast track routing of streaming data as between multiple compute resources
US10817945B2 (en) 2006-06-19 2020-10-27 Ip Reservoir, Llc System and method for routing of streaming data as between multiple compute resources
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US8407122B2 (en) 2006-06-19 2013-03-26 Exegy Incorporated High speed processing of financial information using FPGA devices
US9582831B2 (en) 2006-06-19 2017-02-28 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US8595104B2 (en) 2006-06-19 2013-11-26 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US8600856B2 (en) 2006-06-19 2013-12-03 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US9672565B2 (en) 2006-06-19 2017-06-06 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US9916622B2 (en) 2006-06-19 2018-03-13 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US8626624B2 (en) 2006-06-19 2014-01-07 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US8655764B2 (en) 2006-06-19 2014-02-18 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US10467692B2 (en) 2006-06-19 2019-11-05 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US10360632B2 (en) 2006-06-19 2019-07-23 Ip Reservoir, Llc Fast track routing of streaming data using FPGA devices
US8478680B2 (en) 2006-06-19 2013-07-02 Exegy Incorporated High speed processing of financial information using FPGA devices
US10169814B2 (en) 2006-06-19 2019-01-01 Ip Reservoir, Llc High speed processing of financial information using FPGA devices
US11182856B2 (en) 2006-06-19 2021-11-23 Exegy Incorporated System and method for routing of streaming data as between multiple compute resources
US8843408B2 (en) 2006-06-19 2014-09-23 Ip Reservoir, Llc Method and system for high speed options pricing
DE102006029441A1 (en) * 2006-06-21 2007-12-27 Siemens Ag System and method for data transmission in a secured network, in particular a network of rail-bound traffic with a high level of security
US20080052509A1 (en) * 2006-08-24 2008-02-28 Microsoft Corporation Trusted intermediary for network data processing
US8543808B2 (en) * 2006-08-24 2013-09-24 Microsoft Corporation Trusted intermediary for network data processing
US7706367B2 (en) * 2006-10-03 2010-04-27 International Business Machines Corporation Integrated tunneling and network address translation: performance improvement for an interception proxy server
US20080080508A1 (en) * 2006-10-03 2008-04-03 Ranadip Das Integrated Tunneling and Network Address Translation: Performance Improvement for an Interception Proxy Server
US10191974B2 (en) 2006-11-13 2019-01-29 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data
US9396222B2 (en) 2006-11-13 2016-07-19 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8156101B2 (en) 2006-11-13 2012-04-10 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US11449538B2 (en) 2006-11-13 2022-09-20 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US9323794B2 (en) 2006-11-13 2016-04-26 Ip Reservoir, Llc Method and system for high performance pattern indexing
US8880501B2 (en) 2006-11-13 2014-11-04 Ip Reservoir, Llc Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US9363078B2 (en) 2007-03-22 2016-06-07 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US8879727B2 (en) 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US20100275246A1 (en) * 2007-11-30 2010-10-28 France Telecom Method and a device for maintaining an address translation table
US8522317B2 (en) * 2007-11-30 2013-08-27 France Telecom Method and a device for maintaining an address translation table
CN101884207B (en) * 2007-11-30 2013-11-06 法国电信公司 Method and device for maintaining an address translation table
WO2009071830A1 (en) * 2007-11-30 2009-06-11 France Telecom Method and device for maintaining an address translation table
CN101884207A (en) * 2007-11-30 2010-11-10 法国电信公司 Be used to safeguard the method and apparatus of ATT
US20090182683A1 (en) * 2008-01-11 2009-07-16 Exegy Incorporated Method and System for Low Latency Basket Calculation
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
CN101217435B (en) * 2008-01-16 2011-03-16 中兴通讯股份有限公司 L2TP over IPSEC remote access method and device
US10965317B2 (en) 2008-05-15 2021-03-30 Ip Reservoir, Llc Method and system for accelerated stream processing
US9547824B2 (en) 2008-05-15 2017-01-17 Ip Reservoir, Llc Method and apparatus for accelerated data quality checking
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US10411734B2 (en) 2008-05-15 2019-09-10 Ip Reservoir, Llc Method and system for accelerated stream processing
US11677417B2 (en) 2008-05-15 2023-06-13 Ip Reservoir, Llc Method and system for accelerated stream processing
US10158377B2 (en) 2008-05-15 2018-12-18 Ip Reservoir, Llc Method and system for accelerated stream processing
US10062115B2 (en) 2008-12-15 2018-08-28 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
US10929930B2 (en) 2008-12-15 2021-02-23 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
US8768805B2 (en) 2008-12-15 2014-07-01 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
US8762249B2 (en) 2008-12-15 2014-06-24 Ip Reservoir, Llc Method and apparatus for high-speed processing of financial market depth data
US11676206B2 (en) 2008-12-15 2023-06-13 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US9084187B2 (en) 2009-04-29 2015-07-14 Hewlett-Packard Development Company, L.P. Packet routing method, proxy server and apparatus
JP2011172201A (en) * 2010-01-19 2011-09-01 Alaxala Networks Corp Address translation apparatus and method of managing address translation table
US20110243065A1 (en) * 2010-04-02 2011-10-06 Venkitaraman Sarma Packet Routing Method, Proxy Server And Apparatus
US8885553B2 (en) * 2010-04-02 2014-11-11 Hewlett-Packard Development Company, L.P. Packet routing method, proxy server and apparatus
USRE49172E1 (en) 2010-04-20 2022-08-09 Marvell Asia Pte Ltd System and method for adapting a packet processing pipeline
US20110255540A1 (en) * 2010-04-20 2011-10-20 Tal Mizrahi System and Method for Adapting a Packet Processing Pipeline
US9191315B1 (en) 2010-04-20 2015-11-17 Marvell World Trade Ltd. System and method for adapting a packet processing pipeline
US8611352B2 (en) * 2010-04-20 2013-12-17 Marvell World Trade Ltd. System and method for adapting a packet processing pipeline
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US11397985B2 (en) 2010-12-09 2022-07-26 Exegy Incorporated Method and apparatus for managing orders in financial markets
US11803912B2 (en) 2010-12-09 2023-10-31 Exegy Incorporated Method and apparatus for managing orders in financial markets
US20120294310A1 (en) * 2011-05-18 2012-11-22 Chia-Wei Yen Wide Area Network Interface Selection Method and Wide Area Network System Using the Same
US9380132B2 (en) 2011-06-27 2016-06-28 Marvell Israel (M.I.S.L.) Ltd. FCoE over trill
US9288288B2 (en) 2011-06-27 2016-03-15 Marvell Israel (M.I.S.L) Ltd. FCoE over trill
US10313399B2 (en) * 2012-02-29 2019-06-04 Microsoft Technology Licensing, Llc Dynamic selection of security protocol
US20180152484A1 (en) * 2012-02-29 2018-05-31 Microsoft Technology Licensing, Llc Dynamic Selection of Security Protocol
US10872078B2 (en) 2012-03-27 2020-12-22 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10963962B2 (en) 2012-03-27 2021-03-30 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US10621192B2 (en) 2012-10-23 2020-04-14 IP Resevoir, LLC Method and apparatus for accelerated format translation of data in a delimited data format
US10949442B2 (en) 2012-10-23 2021-03-16 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US9633097B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for record pivoting to accelerate processing of data fields
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10146845B2 (en) 2012-10-23 2018-12-04 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
US11789965B2 (en) 2012-10-23 2023-10-17 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10102260B2 (en) 2012-10-23 2018-10-16 Ip Reservoir, Llc Method and apparatus for accelerated data translation using record layout detection
US10902013B2 (en) 2014-04-23 2021-01-26 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
CN104125151A (en) * 2014-08-06 2014-10-29 汉柏科技有限公司 IPSec (Internet protocol security) packet forwarding method and system
US11526531B2 (en) 2015-10-29 2022-12-13 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US10680998B2 (en) 2015-11-10 2020-06-09 International Business Machines Corporation Method, system, and computer program product for a network device in switchless networks
US11416778B2 (en) 2016-12-22 2022-08-16 Ip Reservoir, Llc Method and apparatus for hardware-accelerated machine learning
US10846624B2 (en) 2016-12-22 2020-11-24 Ip Reservoir, Llc Method and apparatus for hardware-accelerated machine learning
US11943621B2 (en) 2018-12-11 2024-03-26 Texas Instruments Incorporated Secure localization in wireless networks
CN110086702B (en) * 2019-04-04 2021-09-21 杭州迪普科技股份有限公司 Message forwarding method and device, electronic equipment and machine-readable storage medium
CN110086702A (en) * 2019-04-04 2019-08-02 杭州迪普科技股份有限公司 Message forwarding method, device, electronic equipment and machine readable storage medium
US11537691B2 (en) * 2020-02-28 2022-12-27 Infineon Technologies Ag Controller area network traffic flow confidentiality
US20230006998A1 (en) * 2021-07-02 2023-01-05 Tailscale Inc. Management of private networks over multiple local networks
CN114499921A (en) * 2021-11-26 2022-05-13 中国南方电网有限责任公司 Data packet file playback method, data packet file acquisition method and device

Similar Documents

Publication Publication Date Title
US6886103B1 (en) Method and apparatus for extending network address translation for unsupported protocols
US6963982B1 (en) Method and apparatus for application-independent end-to-end security in shared-link access networks
US9667594B2 (en) Maintaining network address translations
Durand et al. Dual-stack lite broadband deployments following IPv4 exhaustion
Aboba et al. IPsec-network address translation (NAT) compatibility requirements
EP1872562B1 (en) Preventing duplicate sources from clients served by a network address port translator
US20020042875A1 (en) Method and apparatus for end-to-end secure data communication
US20020186698A1 (en) System to map remote lan hosts to local IP addresses
KR100479261B1 (en) Data transmitting method on network address translation and apparatus therefor
Durand et al. RFC 6333: Dual-stack lite broadband deployments following IPv4 exhaustion
Brustoloni et al. Application-independent end-to-end security in shared-link access networks
Aboba et al. RFC3715: IPsec-Network Address Translation (NAT) Compatibility Requirements
Ye et al. Interworking between IP security and NAT-PT under IPv4/IPv6 co-existent environments
Mun et al. Interconnection between IPv4 and IPv6
JPWO2018142526A1 (en) Relay apparatus, communication system, and communication method
Schmitt Host Identity Protocol Extensions for the Traversal of Network Address Translators
Estrem et al. IPv6 Networking over Satellite for Mobile User Groups

Legal Events

Date Code Title Description
AS Assignment

Owner name: LUCENT TECHNOLOGIES, INC., NEW JERSEY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BRUSTOLONI, JOSE C.;GARAY, JUAN ALBERTO;REEL/FRAME:011484/0943;SIGNING DATES FROM 20010115 TO 20010116

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20090426

AS Assignment

Owner name: ALCATEL-LUCENT USA INC., NEW JERSEY

Free format text: MERGER;ASSIGNOR:LUCENT TECHNOLOGIES INC.;REEL/FRAME:033053/0885

Effective date: 20081101