Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ROUTING A DATA PACKET IN A COMMUNICATION NETWORK
Document Type and Number:
WIPO Patent Application WO/2013/142282
Kind Code:
A1
Abstract:
In one aspect, a method includes receiving a data packet at a routing node that includes a processor. The method also includes determining at least one value for the data packet, selecting a routing table from a plurality of routing tables stored at the routing node in response to the at least one value for the packet and forwarding the data packet in response to the routing table selected. Each routing table is associated with a respective one cost function.

Inventors:
WANG MU-CHENG (US)
DAVIDSON STEVEN A (US)
CHUANG YI-CHAO S (US)
Application Number:
PCT/US2013/031714
Publication Date:
September 26, 2013
Filing Date:
March 14, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
RAYTHEON CO (US)
International Classes:
H04L45/58; H04L45/74
Foreign References:
DE10232945A12004-01-29
US20040165597A12004-08-26
US5579307A1996-11-26
US6981055B12005-12-27
EP0891107A11999-01-13
Attorney, Agent or Firm:
MOOSEY, Anthony, T. et al. (Crowley Mofford & Durkee, LLP,354A Turnpike St., Suite 301, Canton Massachusetts, US)
Download PDF:
Claims:
1.. A. method comprising:

receiving a data packet at a routing node comprising a processor;

determining at least one value for the data packet;

selecting a renting table from a plurality of renting tables stored at the routing node in response to the at least one value for the packet, eac routing table associated with a respective one cost ftsnciion; and

forwarding the data packet hi response to the renting table selected.

2. The method of claim 1 wherein receiving a data packet at a renting node comprising a processor comprises receiving the data packet at the routing node from a first link, and.

wherein forwarding the data packet in response the value of the data packet comprises forwarding the data packet to a second link,

3. The method of claim L farther comprising combining the plurality of routing tables into a combined tabic, the combined table incorporating value-to route associations, and.

wherein selecting a routing tabic from a plurality of routing tables comprises selecting the combined table.

4. The method of claim ! wherein determining the at least one value of the data packet comprises determining at least one valae located in a header of the data packet. 5, The method of claim 4 wherein dsterrnining a least one value located is a header of the data packet comprises detenn ning a Differentiated Services (Dii!Serv) code point (DSCP) value in the data packet.

6, The method of claim 4 wherein determining at least one value located, in a header of the data packet comprises determining at least one of a. port num er value or ID5 or a source-destination pair value.

7, A routing node, comprising:

electronic hardware circuitry configured to:

receive a data packet at a routing node;

determine at least one value for the data packet;

select a routing table from a plurality of routing tables stored at the routing node in response to the at least one val e for the packet, each routing table associated with a respective one cost function; and

forward the data packet in response to the routing table selected,

8, The apparatus of claim. 7 wherein the circuitry comprises at least one of a processor, a memory, a programmable logic device or a. logic gate.

9, The a aratus of claim 7 wherein the circuitry to receive a data packet at a routing node comprising a processor comprises circuitry to receive the data packet at the routing node from a first link, and

wherein the circuitry to forward the data packet in response the value of the data packet comprises circuitry to forward the data packet to a second link.

10. The apparatus of claim 7, further comprising circuitry to combine the plurality of routing tables into a combined table., the combined table incorporating value- to route associations, and

wherein the circuitry to select a routing table from a plurality of routing tables comprises circuitry to select the combined table.

11. The apparatus of claim 7 wherein the cirouitry to determine the at least one value of the data packet comprises circuitry to determine at least one value located in a header of the data packet.

12. The apparatus of claim 11 wherein the circuitry to determine the at least one value located in a header of the data packet comprises circuitry to determine a

Differentiated Services (DiffServ) code point (DSCP) value in the data packet.

13. The apparatus of claim 11 wherein the circuitry to determine at least one value located in a header of the data packet comprises circuitry to determine at least one of a port number value or ID, or a source-destiiration pair value.

14. An article comprising:

a non-transitory computer-readable medium that stores computer-executable instructions^ the instructions causing a machine to:

receive a data packet at a routing node;

determine at least one value for the data packet; select a routing table from a plurality of routing tables stored at the routing node in response to the at least one value for the packet, each routing table associated with a respective one cost function; and

forward the data packet in response to the routing table selected.

15. The article of claim 14 wherein the instructions causing the machine to receive a data packet at a routing node comprising a processor comprises instructions causing the machine to receive the data packet at the routing node from a first link, and wherein the instructions causing the machine to forward the data packet in response the value of the data packet comprises instructions causing the machine to forward the data packet to a second link.

16, The article of claim 14, further comprising instructions causing the machine to combine the plurality of routing tables into a combined table, the combined table incorporating value-to route associations, and

wherein the instructions causing the machine to select a renting table from a plurality of routing tables comprises instructions causing the machine to select the combined, table, 17. The article of claim 14 wherein the instructions causing the machine to determine the at least one value of the data packet comprises instructions causing the machine to determine at least one value located in a header of the data packet.

18. The apparatus of claim 1? wherein the instructions causing the machine to determine the at least one value located in a header of the data packet comprises instructions causing the machine to determine a Differentiated Services (DiffServ) code point (DSCP) value in the data packet,

1 , The apparatus of claim 17 wherein the instructions causing the machine to determine at least one value located in a header of fee data packet comprises instructions causing the machine to determine at least one of a port number value or ID, or a source- destination pair value.

Description:
ROUTING BY SELECTING A ROUTING TABLE FROM A PLURALITY OF ROUTING TABLES

BACKGROUND

A coniniiuheation network includes multiple routers. The routers are located ai subnet boundaries that are located between a. sender and a receiver. The routers transfer data packets originating from the sender to the intended receiver. Often a

communication network has multiple possible paths between the sender and the receiver, but only one single path, is chosen to send data between the sender arid ie receiver. SUMMARY

In one aspect, a method includes receiving a data packet at a routing node that includes a processor. The method also includes de emiiiimg at least one value for the data packet, selecting a muting table from a. plurality of routing tables stored at the routing node in response to the at least one value for the packet and forwarding tie data packet in response to the routing table selected. Each routing table is associated with a respective one cost function.

In another aspect, a routing node includes electronic hardware circuitry configured to receive a data packet at a routing node, determine at least one value for the data packet; select a routing table from a plurality of routing tables stored at the routing node in response to the at least one value for the packet and forward the data packet in response to the routing table selected. Each routing table is associated with a respective one cost function.

In a fu ther aspect, an article includes a non-transitory computer-readable medium that stores computer-executable instructions. The instructions causing a machine to receive a data packet at a routing node, determine at least one value for the data packet, select: a routing table trom a plurality of routing tables stored at the m ating node in response to the at least one value for the packet and forward the data packet in response to the routing table selected. Each rooting table is associated with a respective one cost function.

One or more of the aspects above may include one or more of the following features. Receiving a data packet at a routing node may include receiving the data packet at the routing node from a first link and forwarding the data packet in response the value of the data packet ma include forwarding the data packet to a second link. The plurality of routing tables may be combined into a combined table incorporating value-to route associations and selecting a routing table from a plnraliiy of renting tables may include selecting the combined table, Determining the at least one value of the data packet may incl ude determining at least one value located in a header of the data packet.

Determining at least one value located in a header of the data packet may include determining a Differentiated Services (DlffServ) code point (DSCP) value in the data packet. Determining at least one value located in a header of the data packet may include determining at least one of a. port number value or ID, or a source-destination pair value.

BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram of an example of a communication network.,

FIG. 2 is a Mock diagram of a routing node,

FIG. 3 is a flowchart of an example of a process to forward a data packet.

FIG, 4 is a block diagram of a computer on the process of FIG , 3 may be implemented. BET AIL- ED DESCRIPTION

Described herein is n approach that enables a routing node to forward a dat packet based on the data packet itself that, for example, has the added benefit of spreading the traffic load across the multiplicity of possible paths. n this Invention, a renting node includes a plurality of routing tables with, each routing table corresponding to a respective cost function (versus conventional routing where only one routing table is used). Based on a value In the data packet a routing table is selected that determines where the dais packet is routed.

Referring to FIG. 1, a communication network 100 includes nodes 102a~102h, file transfer protocol (FTP) transceivers 108a~108b and voice transceivers 110a-! 10b. The FTP transceiver 108a and the voice t nsceiver 110a are coupled to the node !02a. The node 102a is coupled to the node 102b by a link 18a, and is coupled, to the node 102c by a link 118b. The node 1 2b is coupled to the node 102d by a link 118c and is coupled to the node 102e by a link 118d. The node 1 2c is coupled to the node 1 Old by a link 118f and is coupled to the node 102e by a link 118e. The node 102d is coupled to the node !02f by a link ! 18h d is coupled to the node 102g by a link 1. 8i The node 102e is coupled to the node 102f by a link 118g a d is coupled to the node 102h. by a link l !8j. The node 102f is coupled to the FTP transceiver 108b and the voice transceiver 110b. Each of the links l !8a-118j may be one of wired links, fiber ptic links, wireless links or a combination of the three (or any other media that can carry IP tr ffic).

As can be observed in FIG. L there are a number of paths between the nodes 102a and 102f that data packets can travel In prior approaches there would be a single s ¾est" path chosen regardless of whether the packets were voice data or FTP data. However, as described herein, a route is chosen ibr each data packet based on the characteristics (delivery needs) of the data packet.

Referring to FIG. 2, in one example of how it may be implemented, a routing node 200 includes cost functions 202a-202N, a routing engine 212, routing tables 216a- 2 i 6N } forwarding engines 202a-202b and egress ports 226a~226b. Each routing table 216a-21 corresponds to a respective one of the cost function 202a-202N (e.g., the routing table 216a corresponds to the cost function 202a; the routing table 216N corresponds to the cost function 202N). In one example, the routing engine 212 generates a routing table 21.6a~216N for each cost f nction 2G2a-202N.

For example, once all the cost functions are defined, the router builds the routing tables 216a-216N. For every given cost function 202a-202N, each one corresponding to one (each) of the data characteri tics to be accommodated on the network, the Routing Engine 212 calculates the cost metric for each candidate route. Then, the Routing Engine 212 builds a ro ting table by selecting the best paths (interfaces) for the data packet's destination. This process repeats until all routing tahl.es are built To perform the packet forwarding, the routing node 200 first selects the routing table by using the value determined for the packet by methods that include one of various packet classification schemes available (e.g., Differentiated Services (DifiServ) Cods Point (DSCP), port number or ID, source-destination pair, and so forth). Then, the routing node 200 selects a forwarding path (interface or egress pott) based on the routing table and on the destination address. If multiple paths exist fox the targeted address, the routing node 200 supports equal -cost or unequal-cost load balancing. The routing node 200 distributes traffic evenly or proportionally with respect to the cost metric among those routes, making them equal in cases where the metrics are of equi alent value. The routing en ine 212 receives topology and link stale updates through the collections 242a, 242b and updates the r uting tables 216a~216N based on cnrrent network conditions (e.g., loading, capacity, delay/latency and so forth).

In other examples, the cost functions 202a-202N cars (optionally) be stored in a 5 central location for ease of network management and provided to the node 200 for local storage and use. A cost function Is thus provided b a user to establish importance of certain parameters. In another example, a cost function may be based at least one of bandwidth, load, delay, reliability and so forth parameters and the user may weight these parameters in a cost function. However, different types of data packets may not function 10 efficiently in a communication network using only one particular cost function. For example, one can construct a generic cost function for mobile ad-hoc networks

(MANET), such as:

r, _ r Ktx(%- utmzsti»s)xbaadwtat ^ K2 Ί K3

^ MAN T "" i SiwiOOOOO " iateaqr* A iii + i'

15 Then, a user will select a suite of .1 ' (henceforth described as a "vector") that applies differently depending on traffic class of the packet being routed. For example, consider two traffic streams, i.e., FTP and voice.

For FTP traffic, the user sets FTP's jT-vector to (2.0,U) to weight bandwidth ami load. Thus,

"< ' " "" 1 100000000 - S ' "" BER-Κ· '

For voice traffic, the it-vector can be set to (0,1,1 ,1) to weight its delay sensitiveness. Thus, The JT values of one traffic type would compromise the performance of the other traffic type because these different traffic types warrant different JT-vector. As will be shown farther herein, different types of data packets may fonetion more efficiently in a network using a different cost function.

The links 252a, 252b provide data packets to a respective one of the forwarding engine 222a, 222b. The forwarding engines 222a, 222b, based on one or more values in a data packet determines the appropriate routing table to use (i.e., the appropriate cost function to use) and provides the data packet to the appropriate egress port 226a, 226b. The egress ports 226a, 226b provide data packets to a respective link 262a, 262b,

Referring to FIG. 3, an example of a process to route data packets is a process

300. Process 300 receives a data packet (302). For example, the router 200 receives a packet from one of the links 252a, 252b.

Process 300 determines a vaiue(s) from the dat packet (308). For example, the forwarding engine 222a determines a vaiue(s) from the data packet. In one example, the value corresponds to a. traffic class in the header of the data packet. In one particular example, the value is a Differentiated Services (DiffServ) code point (DSCP) value. Dif!Serv uses a 6-bit Differentiated Services Field (DS field) in the IP header for packet classification purposes which generates up to 64 (2*) values. Thus, there may be up to 64 routing tables using a 6-bit Differentiated Services Field as the value. Other values may include, but are not limited to, a port number or ID, source-destination pair, and so forth,.

Process 300 selects a routing table based on the va!ue(s) from the data packet (314). For example, the forwarding engine 222a selects a routing table based, on the DSCP value in the data packet. Each routing tabic corresponds to one cost function and each entry in the table describes the best route for a given destination address (for that particular traffic type), in some examples, there may exist multiple best routes in the table ibr a gives destination f there are equally good.

Process 300 determines a destination address from a header of the data packet (322), For example, the forwarding engine 222a determines a destination address by using the destination address in the IP header of the data packet.

Process 300 selects the egress port from the selected routing table based on the destination address (330). For example * the forwarding engine 222a selects one of the egress ports 226a, 226b by looking up the destination address hi the selected routing table.

Process 300 forwards the data packet to the selected egress port (338). For example, the forwarding engine 222a forwards tie data packet the selected egress ports.

Referring to FIG. 4, in one example, a routing node 200' includes a processor 402, a volatile memory 404, a non-volatile memory 406 (e.g., hard disk) and the user interface (UI) 408 (e.g., a graphical user interface, a mouse, a keyboard, a display, touch screen and so forth). The non-volatile memory 406 stores computer instructions 412, an operating system 416 and data 418 such as cost functions 422 and routing tables 428, h one example, the computer instructions 12 are executed by the p ocessor 402 out of volatile memory 404 to perform all or part of the processes described herein (e.g., process 300),

The processes described herein (e„g., process 300) are not limited to use with the hardware and software of FIG. 4; they may find applicability in any computing or processing environment and with any type of machine or set of machines that is capable of running a computer program. The processes described herein may be implemented in hardware, software, or a combination of the two. The processes described herein m ay be implemented in computer programs executed on programmable computers/machines that

-?·· each includes a processor, a non-transitory machine-readable medium or other article of manufacture that is readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be a lied to data entered using an input device to perform any of the processes described herein and to generate output information.

The system may be implemented, at least in part, via a computer program product, (e.g., in a non-transitory machine-readable storage medium such as, for example, a non-transitory computer-readable medium), for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers). Each such program may be implemented in a high level procedural or object-oriented programming language to work with the rest of the computer-based system. However, the programs may be implemented in assembly; machine language, or Hardware Description Language. The language may be a compiled or an interpreted language and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing

environment A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. A computer program may be stored on a non-transitory machine-readable medium that is readable by a general or special purpose programmable computer for configuring and operating the computer when the non-transitory machine- readable medium is read by the computer to perform the processes described herein. For example, the processes described herein may also be implemented as a non-transitory machine-readable storage medium, configured, with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes. A non-transitory machine-readable medium may include but is not limited to a. ban! drive, compact disc, flash memory, non-volatile memory, volatile memory, magnetic diskette and so forth b t does not include a transitory signal per .

The processes described herein, are not limited to the specific examples described. For example, the process 300 is not limited to the specific processing order of FIG. 3. Rather, any of the processing blocks of FIG. 3 may be re-ordered, combined or removed, performed in parallel or in serial, as necessary, to chieve the results set forth above. la some examples, multiple .routing tables may be combined in to a single routing table. In these examples, value-to-route associations are incorporated (directly or indirectly) into the combined renting table thereby enabling the appropriate route selection to be made.

The processing blocks (for example, in the process 300) associated with implementing the system may be performed by one or more programmable processors executing one or mors computer programs to perform the functions of the system.. All or part of the system, may be implemented as, special purpose logic circuitry (e.g„, an FPGA (field-programmable gate array) and/or an ASIC (application-specific integrated circuit)). All or part of the system may be implemented using electronic hardware circuitry that include electronic devices such as, for example, at least one of a processor, a memory, programmable logic devices or logic gates.

Elements of different embodiments described herein may be combined to form other embodiments not specifically set form above. Other embodiments not specifically described herein are also wi thin the scope of the following claims.

What Is claimed is: