This disclosure relates generally to routing of data packets, and particularly to creating of a network communication path that routes data packets only according to IPv4 address route rather than IPv6 address route.
As IPv6 is deployed as an additional addressing scheme for networks, it is often deployed in parallel to an existing IPv4 addressing that is currently in use. As a result, network devices, e.g., routers or switches, etc., are assigned two addresses, e.g., IPv4 network address and IPv6 network address. Routers are burdened by the need to maintain routing tables for both sets of addresses, and routing table entries for IPv6 is larger because IPv6 network addresses are four times larger than IPv4 network addresses. These larger IPv6 network addresses result in the exhaustion of an available memory for routing tables, impacting the performance of the network and potentially resulting in the loss of data in the network.
Many communication network enterprises are currently applying IPv6 network protocol to their existing IPv4 networks, in order to use both network protocols in parallel. The integration of IPv6 network protocol in existing IPv4 networks is adding additional burden on existing routers, which often includes a full routing table for an enterprise.
There are provided a system, a method and a computer program product for routing a data packet in a communication network which operates according to network communication protocols. The system routes the data packet to a target destination via a first router implementing a routing table having address routes for routing packets of a first network communication protocol and address routes for routing packets of a second network communication protocol. The system stores, in a source router adjacent to the first router, first network communication protocol addresses of routers adjacent to the first router. The system creates a network communication path from the source router to one or more adjacent routers for only routing the data packets according to a corresponding first network communication protocol address route. The system detects whether the address routes of the first router for routing packets of the second network communication protocol includes routes to any adjacent router. The system updates the routing table of the first router to remove the second network communication protocol address routes to the adjacent routers. The system routes the data packet according to the created network communication path and the updated routing table of the first router.
These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings, in which:
This disclosure solves the problem of router memory exhaustion in routers operating according to both IPv4 and IPv6 network communication protocol, e.g., by dynamically reducing the requirement for storing IPv6 address routes on intermediate routers. This is accomplished by creating a network communication path(s) to other routers that are able to maintain these address routes (e.g., IPv4 and IPv6 network communication paths) within their routing table. In a routing table of a congested router whose a capacity of routing table is larger than a threshold, IPv6 address routes are removed but corresponding IPv4 address routes are not removed. This removal of the IPv6 address routes in the routing table of the congested allows those congested router to continue to function in an IPv4 and IPv6 environment without requiring an upgrade to the congested router. This removal of the IPv6 address routes in the routing table of the congested router differs from current methods of route summarization that are not dynamic and that do not leverage the capabilities enabled by having both the IPv4 address routes and IPv6 address routes.
In one embodiment, a routing table of the router G 145 has an IPv6 address route to an IPv6 network G 150 that the router G 145 shares across other routers A 115, B 120, D 130 and E 135 except router F 140. When the router C 125 requests the router G 145 to set up a bypass for this IPv6 address route, the router G 145 requests the other routers (A 115, B 120, D 130 and E 135) to first set up a IPv4 tunnel (if not already in place) with G 145. The IPv4 tunnel includes, but is not limited to: encapsulating a data packet formatted using IPv6 network protocol within another data packet formatted using IPv4 network protocol; and transferring the another data packet via a connected network communication path operated according to IPv4 network protocol. The router G 145 shares the IPv6 address route directly with the routers A115, B120, D130 and E 135 over the IPv4 tunnel: IPv6 data packets to be transferred between the routers A 115, B 120, D 130, E 135 and G 145 are encapsulated within one or more IPv4 data packets; and then the one or more IPv4 data packets are transferred to corresponding destination(s) via the connected network communication path. Once the IPv4 tunnel is set up, the router G 145 requests the router C 125 to remove the IPv6 address route from the routing table(s) of the router C 125 (i.e., remove the IPv6 address route from a memory or storage device of the router C 125).
At 810, the source router creates a network communication path from the source router to one or more routers adjacent, e.g., routers A-B 115-120 and routers E-G 135-145, etc., to the first router. In one embodiment, the creation of the network communication path includes, but is not limited to: encapsulating a data packet using the second network communication protocol within another data packet formatted using the first network communication protocol. In order to create the network communication path, the source router checks whether there exists, at the source router, a first network communication protocol address route corresponding to each second network communication protocol address route.
The source router routes the data packets only according to a first network communication protocol address route. The source router directs the data packet from the first router to one of the adjacent routers via the first network communication protocol address route. At 815, the source router detects whether the address routes of the first router for routing packets of the second network communication protocol include routes to any router adjacent to the first router. At 820, the source router updates the routing table of the first router to remove the second network communication protocol address routes to the adjacent routers. The removed second network communication protocol address routes, which are stored in the routing table of the first router, are one or more of: (1) least recently used second network communication protocol address routes; (2) address routes between the adjacent routers which have sent both second network communication protocol address routes and first network communication protocol address routes to the first router; and (3) one or more address routes that have been received from an adjacent router via a routing protocol. At 825, the first router routes the data packet according to the created network communication path and the updated routing table of the first router. The source router may directly communicate with the routers adjacent to the first router. In one embodiment, the first network protocol is IPv4, and the second network protocol is IPv6.
In one embodiment, the first router compares a memory utilization of the first router against a threshold. The first router uses the created network communication path if the memory utilization is larger than the threshold. In one embodiment, the first router deactivates the created network communication path if the memory utilization of the first router is lower than the threshold. The first router deactivates the created network communication path after a pre-determined time period passes from using of the created network communication path.
In a further embodiment, the first router receives an acknowledgement of the creation of the network communication path from the source router. Upon receiving the acknowledgement of the creation of the network communication path, the first router acknowledges the removal of the second network communication protocol address routes in its routing table.
Upon failing to receive the acknowledgement of the creation of the network communication path for a pre-determine time period, the first router determines that the source router cannot create the network communication path. The first router selects, upon the failure to receive the acknowledgement of the creation of the network communication path for the pre-determine time period, a different adjacent router in order to bypass one or more second network communication protocol address routes stored in the first router.
When the routing table size of the congested router C 125 reaches a threshold set previously, the congested router C 125 selects an IPv6 address route received from an adjacent router(s) that can be deleted to lower memory utilization of the congested router C 125. The IPv6 address routes to be deleted are selected based on factors known to the congested router C 125. Those factors include, but are not limited to: (1) least recently used IPv6 address route stored in a routing table of the congested router C 125; (2) address routes between adjacent routers which have advertised both IPv6 and IPv4 address routes to the congested router C 125; (3) address routes that have been received from an adjacent router via a dynamic routing protocol (e.g. OSPF, BGP); (4) the most expensive network communication routes, e.g., there exist the largest number of hops between the congested router and a target router; and (5) priority of network communication routes, e.g., QoS settings.
In one embodiment, the congested router C 125 initiates a request to an adjacent router that is a source of an IPv6 route (i.e., source router G 145) to create bypass tunnels. The request to the source router G 145 includes the IPv4 address of each of the routers adjacent to the congested router C 125 that receives IPv6 address routes from bypass target routers (also called routers adjacent to the first router) A-B (115-120) and D-E (130-135). The congested router C 125 waits for an acknowledgement of the creation of the bypass tunnels from the source router G 145, confirms the removal of IPv6 address routes from the routing table of the congested router C 145, then repeats the removal of the IPv6 address routes from the routing table of the congested router until memory utilization of the congested router C 125 becomes below the threshold. Should the source router G 145 fails to acknowledge the creation of the bypass tunnels, the source router G 145 is marked as temporarily unable to participate in the creation of the bypass tunneling. A different adjacent router is selected for the creation of the bypass tunneling.
At 305, the congested router C 125 evaluates whether its memory utilization is more than a threshold, e.g., due to a full capacity of the corresponding routing table. If the memory utilization is more than the threshold, the congested router C 125 sends a request to create the bypass tunneling to the source router G 145. At 310-315, when a request from the congested router C 125 is received, the source router G 145 evaluates if there exists the bypass tunnelling in place for each bypass target router. If there exists no bypass tunneling, a new bypass tunnel creation is attempted. The congested router C 125 identifies IPv6 route addresses to be dropped in its routing table. Then, the congested router C 125 initiates step 400 in
In one embodiment, the methods shown in
While the invention has been particularly shown and described with respect to illustrative and preformed embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and details may be made therein without departing from the spirit and scope of the invention which should be limited only by the scope of the appended claims.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with a system, apparatus, or device running an instruction.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with a system, apparatus, or device running an instruction.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the āCā programming language or similar programming languages. The program code may run entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which run via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which run on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more operable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be run substantially concurrently, or the blocks may sometimes be run in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.