Patent Publication Number: US-7215669-B1

Title: Method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present application is a divisional of, and claims priority to, U.S. Ser. No. 09/227,044 entitled “Method and System for Identifying Embedded Addressing Information in a Packet for Translation Between Disparate Addressing Systems,” which was on filed Jan. 7, 1999, now U.S. Pat. No. 6,535,511. 
    
    
     TECHNICAL FIELD OF THE INVENTION 
     This invention relates generally to the field of network addressing, and more particularly to a method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems. 
     BACKGROUND OF THE INVENTION 
     Due to the success of the Internet, the Internet Protocol (IP) has become the primary networking protocol. Major concerns of the Internet community are the depletion of global IP address space (IPV4) and the complexity of configuring hosts with global IP addresses for Internet access. To extend the life of current IP address space and provide configureless access, network address translation (NAT) and its extension port address translation (PAT) have been employed. 
     Network address translation supports connectivity between the Internet and hosts using private addressing schemes. This connectivity provides configureless access to the Internet in that hosts may have independently assigned, globally non-unique addresses that need not be coordinated with the Internet Address Numbering Association (IANA) or other Internet registry. Network address translation pairs up the private addresses to public addresses so that the inside IP addresses appear as legally registered IP addresses on the Internet. 
     Port address translation allows a number of private network addresses and their ports to be translated to a single network address and its ports. Thus, multiple hosts in a private network may simultaneously access the Internet using a single legally registered IP address. The registered IP address is typically assigned to a router that translates addressing information contained in message headers between the addressing schemes. 
     A problem with Network and Port Address Translation is that some applications embed addressing information in their message payload data. This embedded addressing information is also to be translated when the packet is crossing the boundary. Unfortunately the translation function does not have the knowledge of the application packet format nor does it know if the packet has embedded addressing information. Therefor it is not possible for the translation function in the border routers to translate such data packets without specific knowledge of such applications and their packet formats. The mechanism to translate such packets is to be implemented in the translation function. Translation functions fail as soon as a new such application is developed or used with the router. Normally vendors of such translation functions in the routers develop new versions to handle the newly discovered applications that embed addressing information in their packets and make new release of the software and update all the affected installed systems. This is time consuming, expensive and cumbersome besides user application downtime. 
     SUMMARY OF THE INVENTION 
     The present invention provides a method and system for identifying embedded addressing information in a packet that substantially eliminate or reduce disadvantages and problems associated with previously developed systems and methods. In particular, the present invention uses readily updatable database records to identify embedded addressing information for translation between disparate addressing systems. 
     In accordance with one embodiment of the present invention, embedded addressing information is identified in a packet by providing a database including a plurality of records. Each record is operable to identify a packet having embedded addressing information and the embedded addressing information in the packet. Packets are compared to the database records to determine whether the packets include embedded addressing information. In response to determining that a packet includes embedded addressing information, the embedded addressing information is identified in the packet for translation between disparate addressing systems. 
     More particularly, in accordance with a particular embodiment of the present invention, each record includes a packet genus identifying a packet type capable of including embedded addressing information, a packet species identifying packets of the type that include embedded addressing information, and a locator identifying the embedded addressing information in the packets. In this embodiment, the packet genus may identify a protocol and a port for the packet type. A packet species may identify a term used in connection with embedded addressing information in the packet type. 
     The locator may identify an offset to the embedded addressing information from a known location in the packet. 
     Technical advantages of the present invention include providing a method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems. In particular, embedded addressing information is identified in packets using a configurable database that can be inexpensively updated using user interface (UI) commands. As a result, new applications are supported without changes in router software. Thus, costs associated with software upgrades to a network address translation system and with application downtime due to network address translation failure as a result of deployment of a new application having embedded addressing information, are reduced. In addition, database updates do not significantly increase system resource use and therefore do not degrade translation performance such as when customized software is added for each application having embedded addressing information. 
     Other technical advantageous will be readily apparent to one skilled in the art from the following figures, description, and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention and its advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, wherein like reference numerals represent like parts, in which: 
         FIG. 1  is a block diagram illustrating a router for translating addressing information between private and public address spaces in accordance with one embodiment of the present invention; 
         FIG. 2  illustrates details of a packet in accordance with one embodiment of the present invention; 
         FIG. 3  illustrates details of the application table of  FIG. 1  in accordance with one embodiment of the present invention; and 
         FIG. 4  is a flow diagram illustrating a computer method for identifying and translating embedded addressing information in a packet in accordance with one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 1  is a block diagram illustrating a private addressing space  12 , a public addressing space  14 , and a border router  16  disposed between the private and public address spaces  12  and  14  for translating addresses between the spaces. For the embodiment of  FIG. 1 , the private address space  12  is an Intranet  20  and the public address space  14  is the Internet  22 . It will be understood that the private and public address spaces  12  and  14  may be other suitable types of networks using disparate addressing systems. 
     The Intranet  20  includes an inside network connecting a plurality of remote hosts  24  to the router  16 . The inside network is a local area network (LAN), a wide area network (WAN), or the suitable type of link capable of communicating data between the hosts  24  and the router  16 . For the local area network embodiment, the inside network may be an Ethernet. The Internet  22  can be other types of outside networks such as a local area network (LAN) or public Internet which employs the outside addressing scheme. Translation function translates network address information between these two schemes whenever packets cross the boundary which is router  16 . 
     The hosts  24  are each a computer such as a personal computer, file server, workstation, minicomputer, mainframe, or any general purpose or other computer or device capable of communicating with other computers or devices over a network. In the personal computer embodiment, the hosts  24  may each include input devices, output devices, processors, and memory. The input devices may include a pointing device such as a mouse, keyboard, or the like. The output devices may include a monitor, a printer, or the like. 
     In a particular embodiment, the hosts  24  are each assigned a private Internet Protocol (IP) address for communication within the Intranet  20 . The router  16  is assigned a public Internet Protocol (IP) address and uses port address translation (PAT) to translate the private IP addresses to the public IP address for communication on the Internet  22 . It will be understood that other suitable types of addressing protocols and translation may be used in and between the private and public addressing spaces  12  and  14 . 
       FIG. 2  illustrates details of an IP packet  30  for transmitting messages over and between the Intranet  20  and Internet  22 . The packet  30  includes an IP header  32  and a transport protocol header  34 , and a payload data  36 . The IP and the transport protocol headers  32  and  34  together provide the addressing information that uniquely identifies the source and destination of the packet. This addressing information is added as overhead data to the payload data  36  (for every packet) by the TCP/IP protocol layers for transmission and forwarding in a network. 
     Referring to  FIG. 2 , the IP header  32  includes protocol data  40  identifying the packet protocol. The transport header  34  includes source port data  42  and destination port data  44 . The source port  42  identifies the port transmitting the packet  30 . The destination port  44  identifies the port to which the packet  30  is destined. The payload data  36  comprises data generated by an application for transmission to and use by a remote application. Such data may be requesting information from or supplying information to the remote application. Payload data  36  generated by some applications may include embedded addressing information  46 . Addressing information is often embedded in the payload data  36  by an application to initialize or set up a communications session with another application. The payload data  36  may also include a keyword  48  indicating the existence of application specific embedded addressing information in the payload data  36 . 
     As described in more detail below, the protocol and port data  40 ,  42  and/or  44  function as a packet genus operable to identify a packet type capable of including the embedded addressing information  46 . The keyword  48  functions as a packet species operable to identify packets of the type that actually include the embedded addressing information  46 . In this way, embedded addressing information  46  may be identified for translation between the private and public IP addresses. It will be understood that other suitable types of information within a packet may be used to identify embedded addressing information for translation. 
     Returning to  FIG. 1 , the router  16  includes computer software and data that is loaded into system memory and executed by one or more processes. The computer software and data are generally identified by tables, engines, systems, files and the like. It will be understood that the computer software and data may be otherwise combined and/or divided for processing in or remotely from the router  16  and otherwise stored in system or other suitable memory in or remotely from the router  16  without departing from the scope of the present invention. Accordingly, the labels of the table, engine, database, and system are for illustrative purposes and may be suitably varied. The router  16  may be a Cisco 675 router manufactured by Cisco Systems, Inc. or other suitable border router or device capable of translating addresses between disparate addressing systems. 
     The router  16  includes a translation engine  60 , a translation table  62 , an application database  64 , and a management system  66 . The translation engine  60  uses the translation table  62  to translate addresses between the private and public address spaces  12  and  14 . In the IP embodiment, the translation engine  60  performs port address translation (PAT). Port address translation automatically establishes binding between the private IP addresses and the public IP address dynamically during initiation of a session. Port address translation makes use of the protocol and port data  40 ,  42  and/or  44  in the packet  30  to translate the larger number of private IP addresses to the smaller number of public IP addresses. Further information concerning port address translation may be obtained from RFC 1631 and RFC 1918, published by the Internet Engineering Task Force (IETF), which are hereby incorporated by reference. 
     The application database  64  is used by the translation engine  60  to determine whether packets received by the router  16  included embedded addressing information  46  and to identify included embedded addressing information for translation. The application database  64  may be a database table or any other suitable structure capable of storing information with which the embedded addressing information  46  may be identified. 
       FIG. 3  illustrates details of the application database  64  in accordance with one embodiment of the present invention. In this embodiment, the application database  64  is a table  68  configured to identify application specific embedded addressing information in IP packets  30 . It will be understood that other information may be used to identify embedded addressing information in IP and other types of packets  30 . 
     Referring to  FIG. 3 , the application table  68  includes a plurality of records  70  each operable to identify a packet  30  having embedded addressing information  46  and the embedded addressing information  46  in the packet  30 . As used herein, each means each of at least a subset of the identified items. Each record  70  includes an application field  72  identifying the application to which the record  70  corresponds, a protocol field  74  specifying a packet protocol, a port field  76  specifying a port for the protocol, one or more keyword fields  78  specifying a term or terms indicating the existence of embedded addressing information  46  in a packet having the specified protocol and port, one or more offset fields  80  specifying offsets to the embedded addressing information  46  in the packet, and a transmit direction field  82  specified whether the record  70  is for inbound or outbound traffic. 
     The protocol and port fields  74  and  76  together form a packet genus with which a packet type capable of including embedded addressing information  46  may be identified. The keyword field  78  forms a packet species indicative of the existence of the embedded addressing information  46  in the packet  30 . It is possible to specify multiple keywords and various logical combinations in which they can be used to uniquely identify a packet that contains embedded addressing information. The offset  80  indicates the location of the embedded addressing information  46 . An offset  80  is provided for each item of embedded addressing information  48  within the payload data  36  of a packet  30 . The offset  80  is used to identify and extract embedded addressing information  48  and may be from the beginning of the payload data  36  or any other known location in or associated with the packet  30 . 
     Returning to  FIG. 1  the management system  66  manages and updates the router  16 . The management system  66  may be locally or remotely accessed to update the application table  68  using user interface (UI) commands. Accordingly, in response to deployment of a new application on a host  20  that embeds addressing information, the application table  68  may be promptly updated to include an entry  70  that is operable to identify embedded addressing information within packets generated in connection with that new application. Accordingly, delays and failures are minimized. 
       FIG. 4  is a flow diagram illustrating a computer method for identifying translating embedded addressing information  46  in a packet  30  in accordance with one embodiment of the present invention. In this embodiment, IP packets  30  are translating using port address translation. It will be understood that the method of the present invention may be used in connection with other suitable types of addressing and translation systems. 
     Referring to  FIG. 4 , the method begins at step  90  in which a packet  30  is received at the router  16 . Generally described, translation happens from upper layers down i.e. application payload translation happens first and then transport protocol header and then IP protocol header will be translated. This is because, modifications to the payload data due to address information translation can result in changes to the transport protocol header and IP protocol header. 
     Proceeding to decisional step  94 , the translation engine  60  compares the protocol and port data  40 ,  42 , and/or  44  of the received packet  30  to the protocol and port fields  74  and  76  in the application table  68  to determine whether the packet  30  is of a type capable of including embedded addressing information  46 . If the protocol and port data  40 ,  42  and/or  44  for the packet  30  are not listed in the application table  68 , then the packet  30  is determined not to be capable of including embedded addressing information  46  and the No branch of decisional step  94  and leads to step  106 , which is described in more detail below. However, if the protocol and port data  40 ,  42  and/or  44  for the packet  30  are listed in the application table  68 , the packet  30  is of a type capable of including embedded addressing information  46  and the Yes branch of decisional step  94  leads to decisional step  96 . 
     At decisional step  96 , the translation engine  60  compares the payload data  36  to terms specified by the keyword entries  78  for records  70  matching the protocol and port  40 ,  42  and/or  44  to determine if the packet  30  actually includes embedded addressing information  46 . If the packet  30  does not include a term matching a keyword entry  78  or terms matching a logical set of keywords, it is determined that the packet  30  does not include embedded addressing information  46  and the No branch of decisional step  96  leads to step  106 . However, if the packet  30  includes a term matching a keyword entry  78  or terms matching a logical set of keywords, the packet  30  has embedded addressing information  46  and the Yes branch of decisional step  96  leads to step  98 . 
     At step  98 , the translation engine  60  determines the location of the embedded addressing information  46  using one or more offsets  80  specified by the matching record  70 . Next, at step  100 , the translation engine  60  extracts the embedded addressing information  46  from the payload data  36  of the packet  30 . The embedded address information  46  is translated at step  102  by the translation engine  46 . The translation is done in accordance with standard port address translation used to translate the IP addresses in the headers  32  and  34  or other suitable translation techniques. 
     Proceeding to step  104 , the translated addressing information is embedded into the payload data  36  in place of the extracted information. In addition, a check sum is recomputed. In this way, embedded addressing information is identified for translation using a readily updatable database. As a result, costs associated with software upgrades to a network address translation system and with application downtime due to network address translation failure as a result of deployment of a new application having embedded addressing information, are reduced. In addition, the database updates do not significantly increase system resource use and therefore do not degrade translation performance. 
     Next, at step  106 , the translation engine  60  translates the IP and transport headers  32  and  34  for the packet  30  using port address translation. In translating the headers  32  and  34 , port address translation also recomputes the check sum for the packet  30 . Step  106  leads to the end of the process at which point addressing information in the packet has been translated. 
     Although the present invention has been described with several embodiments, various changes and modifications may be suggested to one skilled in the art. It is intended that the present invention encompass such changes and modifications as fall within the scope of the appended claims.