U.S. patent application number 12/842210 was filed with the patent office on 2010-11-11 for nexthop to a forwarding table.
This patent application is currently assigned to JUNIPER NETWORKS, INC.. Invention is credited to Ken Kuwabara, Manoj Leelanivas, Steven Lin, Ravi Vaidyanathan.
Application Number | 20100284407 12/842210 |
Document ID | / |
Family ID | 36951866 |
Filed Date | 2010-11-11 |
United States Patent
Application |
20100284407 |
Kind Code |
A1 |
Leelanivas; Manoj ; et
al. |
November 11, 2010 |
NEXTHOP TO A FORWARDING TABLE
Abstract
A router receives destination address information for a packet
and determines, among entries in a first forwarding table, a
closest match for the received destination address information. The
router receives a pointer to a second forwarding table in
accordance with the closest match determined in the first
forwarding table and determines, among entries in the second
forwarding table, a closest match for the received destination
address information.
Inventors: |
Leelanivas; Manoj; (Los
Gatos, CA) ; Vaidyanathan; Ravi; (Fremont, CA)
; Kuwabara; Ken; (Sunnyvale, CA) ; Lin;
Steven; (Cupertino, CA) |
Correspondence
Address: |
HARRITY & HARRITY, LLP
11350 Random Hills Road, SUITE 600
FAIRFAX
VA
22030
US
|
Assignee: |
JUNIPER NETWORKS, INC.
Sunnyvale
CA
|
Family ID: |
36951866 |
Appl. No.: |
12/842210 |
Filed: |
July 23, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11460195 |
Jul 26, 2006 |
7787466 |
|
|
12842210 |
|
|
|
|
10063216 |
Mar 29, 2002 |
7106740 |
|
|
11460195 |
|
|
|
|
60345663 |
Jan 2, 2002 |
|
|
|
Current U.S.
Class: |
370/392 |
Current CPC
Class: |
H04L 45/54 20130101;
H04L 45/742 20130101; H04L 45/04 20130101 |
Class at
Publication: |
370/392 |
International
Class: |
H04L 12/56 20060101
H04L012/56 |
Claims
1. A method for packet forwarding, comprising: receiving
destination address information for a packet; determining, among
entries in a first forwarding table, a closest match for the
received destination address information; receiving a pointer to a
second forwarding table in accordance with the closest match
determined in the first forwarding table; and determining, among
entries in the second forwarding table, a closest match for the
received destination address information.
2-18. (canceled)
Description
RELATED APPLICATION
[0001] This application claims the benefit of U.S. Provisional
Application Ser. No. 60/345,663; entitled "NEXTHOP TO A FORWARDING
TABLE," filed on Jan. 2, 2002, which is incorporated by reference
herein.
BACKGROUND OF THE INVENTION
[0002] In a conventional computer network (e.g., the Internet),
computers communicate over a network infrastructure made up of
interconnected nodes, such as routers and/or switches, connected by
communication links such as optical fiber, copper cable, and
wireless links. Typically, the topology of the network
infrastructure is configured in such a way that the infrastructure
contains more than one path through which data may be carried from
one computer to another. The topology, for example, may include a
partial mesh configuration, where a node is connected to multiple
other nodes. A router in such a network, therefore, may contain a
plurality of interface ports for connection to multiple neighboring
routers.
[0003] Such a router typically receives data in discrete units
(herein referred to as "packets," which may include frames, cells,
packets, or any other fixed- or variable-sized unit of data) at one
or more of its ingress interface ports. The router examines
destination address information embedded in the packets and
determines the appropriate egress interface ports for outputting
the respective packets, typically by performing a table lookup. To
construct and update tables, routers may use dynamic routing
protocols to systematically exchange information with other devices
in the network to obtain a view of the network topology (this
information being maintained in a routing database, such as one or
more routing tables). Based on this information, the router
constructs and updates a forwarding table, which associates ranges
of destination addresses to respective egress interface ports.
[0004] In some cases, a router may use more than one forwarding
table for forwarding packets. For example, a router carrying
traffic for both a virtual private network ("VPN") and a public
network (such as the Internet) may use one forwarding table for VPN
traffic and a different forwarding table for public network
traffic. The router has a set of ingress and egress interface ports
dedicated to carrying VPN traffic and a set of ingress and egress
interface ports dedicated to carrying public traffic. The router
distinguishes traffic according to which ingress interface port
respective packets are received at.
[0005] Such an approach, however, does not permit the router to
pass packets from the VPN to the public network and vice-versa. One
approach for permitting such passing is to include static routes in
the VPN forwarding table, which contain nexthops to interfaces
connected to the public network. Static routes, however, do not
allow dynamic updates if changes in the network occur.
[0006] Thus, there is a need for an invention that more adequately
addresses problems occurring in the network.
SUMMARY OF THE INVENTION
[0007] It is to be understood that both the foregoing general
description and the following detailed description are exemplary
and explanatory only and are not restrictive of the invention, as
claimed.
[0008] In one embodiment of the invention, a route lookup processor
in a router receives destination address information for a packet
and determines, among entries in a first forwarding table, a
closest match for the received destination address information. The
route lookup processor receives a pointer to a second forwarding
table in accordance with the closest match determined in the first
forwarding table and determines, among entries in the second
forwarding table, a closest match for the received destination
address information.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The accompanying drawings, which are incorporated in and
constitute a part of this specification, illustrate several
embodiments of the invention and together with the description,
serve to explain the principles of the invention.
[0010] FIG. 1A is a block diagram of a router incorporating
principles of the invention according to a first embodiment;
[0011] FIG. 1B is a block diagram of a router incorporating
principles of the invention according to a second embodiment;
[0012] FIG. 2 illustrates an example of two forwarding tables which
may be used in a router (or other packet forwarding device)
according to the invention;
[0013] FIG. 3 is a flow diagram of a process for setting up
forwarding tables in a router according to the invention;
[0014] FIG. 4 is a flow diagram of a process for the operation of a
router according to the invention.
[0015] FIG. 5 illustrates an example of a network in which the
invention may be used;
DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0016] Reference will now be made in detail to preferred
embodiments of the invention, examples of which are illustrated in
the accompanying drawings. Wherever possible, the same reference
numbers will be used throughout the drawings to refer to the same
or like parts.
[0017] As described in greater detail below, a router may use two
or more forwarding tables for packet forwarding. According to the
invention, at least one of the tables includes at least one entry
containing a pointer to another table. After the pointer is
returned in response to a first lookup operation, a second lookup
operation is performed in the forwarding table identified by the
pointer.
[0018] FIG. 1A shows router 100. Generally, router 100 receives
packets on the input lines and determines the output lines from
which the packets are to be output. As shown in FIG. 1A, router 100
includes a plurality of interface (I/F) modules 110, switch
fabric(s) 120, route lookup module(s) 130, and routing engine 140.
Each I/F module 110 connects to one or more respective input lines
and/or output lines.
[0019] Each I/F module 110 contains one or more ingress interface
ports (not shown) for receiving packets from respective input lines
and/or one or more egress interface ports (also not shown) for
transmitting packets to respective output lines. I/F module 110 may
perform processing on the headers of respective packets (e.g.,
layer 2/3 header processing) so the packets are in the appropriate
format for processing through switch fabric 120 (for packets
received at the ingress interface ports) and for transmission over
the output lines (for packets to be sent out the egress interface
ports). In one embodiment, I/F modules 110 are implemented as
circuit boards that are insertable and removable from router 100.
One or more I/F modules 110 may be inserted at a time.
[0020] Switch 120 contains logic for receiving packets from I/F
modules 110 and for transmitting packets out to I/F modules 110. In
one embodiment, switch fabric 120 may contain buffer memory for
storing received packets. In another embodiment, switch fabric may
be a cross-connect connecting sets of I/F modules 110 with buffer
memory contained in respective I/F modules 110. Switch fabric 120
preferably provides packet header information (e.g. destination
address information) for received packets to route lookup module
130 and receives identifiers specifying which egress interface
ports in the I/F modules 110 to forward the packets to.
[0021] Each of route lookup module(s) 130 examines characteristics
of packets flowing through switch fabric 120 to determine the
manner in which the packets are to be forwarded (e.g., determining
the egress interface ports from which respective packets are to be
output). In one embodiment, route lookup module 130 examines packet
header information for respective packets, which may include
performing table lookups using one or more forwarding tables. In
one embodiment, route lookup module 130 includes a lookup processor
and open or more forwarding tables stored in memory. The lookup
processor may be implemented in hardware as circuit logic for
carrying out the respective operation or as one or more processors
programmed to carry out the operation.
[0022] Routing engine 140 maintains a database of routing
information which may be received in routing messages from other
routers using routing protocols. Routing engine 140 preferably
generates forwarding tables which are transmitted to route lookup
module 130. Routing engine 140 systematically receives updated
information reflecting changes in the network, updates its database
(which may be stored as routing tables), generates one or more
forwarding tables from the database, and transmits the forwarding
table to route lookup module 130. Routing engine 140 preferably
comprises a processor executing routing protocols for computing
routes and/or network topology.
[0023] FIG. 1B is a block diagram of router 102. Router 102 is
similar to router 100, except that each I/F module 110 has a
corresponding route lookup module 130 connected to it. In addition,
routing engine 140 connects to each of the route lookup modules
130. Router 102 operates in a manner similar to router 100, except
that a lookup operation is performed by the route lookup module 130
corresponding to the I/F module 110 at which packets are received.
I/F modules 110 provide packet header information to the
corresponding route lookup modules 130 and receive egress interface
port information for each packet. I/F modules 110 transmit the
packets and received egress interface port information to switch
fabric 120, which forwards the packets to the appropriate I/F
modules 110. To carry out this operation, each I/F module 110 in
router 102 may contain buffer memory for storing packets.
[0024] FIGS. 1A and 1B show different embodiments of routers that
may be used with the invention. In alternative embodiments, the
invention may be used with other router or switch architectures or
in any device that performs packet forwarding.
[0025] FIG. 2 shows an example of two forwarding tables which may
be used in a router (or other packet forwarding device) according
to the invention. As shown in FIG. 2, forwarding table 1 contains a
plurality of entries, each associating a range of addresses (shown
as "prefix") to a corresponding nexthop (which may include egress
interface port identifiers and/or addresses of neighboring nodes).
At least one of the entries in forwarding table 1 contains a
nexthop that points to forwarding table 2. When a destination
address is received by the route lookup module, a lookup processor
(not shown) determines a closest match between the received
destination address and a prefix in forwarding table 1. In the
example shown in FIG. 2, the closest match is the entry containing
prefix 20/8. The nexthop contained in that entry points to
forwarding table 2. The lookup processor then performs a lookup
operation in forwarding table 2 to determine the closest match
between the destination address and a prefix in forwarding table 2.
In this example, the closest match is 20/8, which is associated
with egress interface port identifier 2.2.2.2. In alternative
embodiments, lookup techniques other than closest match may be
used. In addition, other types of entries may be included in these
tables.
[0026] FIG. 2 shows two forwarding tables with one entry in
forwarding table 1 containing a pointer to forwarding table 2. In
other embodiments, more than two forwarding tables may be used and
each forwarding table may contain one or more pointers to other
forwarding tables. Each forwarding table may also have a default
entry which is selected if none of the other entries adequately
satisfies the closest match determination. In addition, each entry
in a table may associate address ranges (prefixes) to not only
egress interface port identifiers, but also addresses of the
neighboring nodes (e.g., nexthops) to which the respective packet
is to be forwarded. This may be used, for example, if the egress
interface port is an Ethernet port.
[0027] In other embodiments, the forwarding tables and their
entries may use different types of data and may arrange them in
different data structures. For example, rather than including
interface port identifiers and table pointers directly in the
forwarding tables, one or more levels of indirection could be
incorporated. For example, the forwarding tables could associate
address ranges to pointers to entries in a nexthop resolution
table. The nexthop resolution table contains entries associating
nexthop identifiers to actions to be performed (such as forwarding
a packet to a particular egress interface port or performing a
lookup in another table). Alternatively, these entries could also
perform another level of indirection to another table.
[0028] FIG. 3 is a flow diagram of a process for creating
forwarding tables in a router (such as router 100 or 102). In this
process, the router provides a first forwarding table (step 310).
The first forwarding table contains entries associating ranges of
addresses to nexthops in a first network and one or more entries
associating a range of one or more addresses with a pointer that
identifies the second forwarding table. The router provides the
second forwarding table containing entries that associate ranges of
addresses to nexthops in a second network (step 320). In
alternative embodiments, additional forwarding tables may be
provided and entries in each table may associate address ranges
with pointers to any of the other tables.
[0029] The router advertises public addresses for devices in the
first network to the second network (step 330). The router provides
one or more entries in the second forwarding table associating
public addresses for devices in the first network to nexthops
corresponding to the second network (step 340). This allows the
router to forward packets from devices in the second network
directly to devices in the first network using the second component
in a forwarding table. In an alternative embodiment, the second
forwarding table could contain entries with pointers to the first
forwarding table.
[0030] FIG. 4 shows a flow diagram of a process for the operation
of a component in a router (such as router 100 or 102). The
component receives destination address information for a packet
(step 410). The component determines a closest match to the
destination address information in a first forwarding table (step
420). In response to the determined closest match, the component
receives a pointer to a second forwarding table (step 430). The
component determines a closest match to the destination address
information in the second forwarding table (step 440). The
component then receives an egress interface port identifier in
response to the closest match (step 450). In appropriate cases
(such as where the egress interface port is an Ethernet port), the
component may also receive the address of the neighboring router to
which the packet is to be sent. In alternative embodiments, lookup
techniques other than closest match may be used.
[0031] FIG. 5 shows an example of a network in which the invention
may be used. As shown in FIG. 5, an open access network (such as
the public Internet) contains three routers at its edge (router
510, router 512, and router 514). Each of these routers not only
carries traffic for the open access network, but also for one or
more virtual private networks (VPNs). Router 510, for example,
carries traffic for the open access network, as well as for VPN A
and VPN B. Router 512 carries traffic for the open access network
and VPN A, and router 514 carries traffic for the open access
network and VPN B. Routers 510, 512, and 514 may be similar to
router 100 (described in connection with FIG. 1A) or router 102
(described in connection with FIG. 1B).
[0032] As shown in FIG. 5, router 510 contains three forwarding
tables. The first table is for VPN A traffic, the second table is
for VPN B traffic, and the third table is a master table for the
open access network. Router 510 uses the table for VPN A to perform
lookups for packets received on ingress interface ports dedicated
to VPN A and to forward the packets to egress interface ports
dedicated to VPN A. Router 510 uses the table for VPN B in a
similar fashion for interface ports dedicated to VPN B. Router 510
uses the master table to perform lookups for packets received at
ingress interface ports dedicated to the open access network and to
forward the packets to any of the egress interface ports. As
described in further detail in connection with FIG. 3, public
addresses for devices in VPN A and VPN B are advertised to the open
access network and are included in the master table. When packets
come in from the open access network, the lookup processor can use
the master table to determine a corresponding egress interface
port, which may be dedicated to any of VPN A, VPN B, or the open
access network.
[0033] One or more of the tables contained in router 510 contain
entries with pointers to another table. For example, the forwarding
table for VPN A may contain one or more entries with pointers to
the master table. This allows packets received at ingress interface
ports dedicated to VPN A to be forwarded into the open access
network by performing a lookup operation on the table for VPN A and
then a lookup operation on the master table. The forwarding table
for VPN A may also have one or more entries with pointers to the
forwarding table for VPN B, allowing packets to be forwarded from
the VPN A network to the VPN B network through lookups in the VPN A
forwarding table and in the VPN B forwarding table.
[0034] Routers 512 and 514 contain forwarding tables for VPN A
traffic and the open access network and forwarding tables for VPN B
traffic and the open access network, respectively. As with router
510, one or more forwarding tables in each of routers 512 and 514
may contain one or more entries with pointers to other tables.
[0035] Other embodiments of the invention will be apparent to those
skilled in the art from consideration of the specification and
practice of the invention disclosed herein. For example, while the
invention has been described in connection with a router, the
invention may also be used in a switch or other packet forwarding
device. Further, while the invention has been described in
connection with the tables (router tables and forwarding tables),
the invention may also use route or forwarding information stored
in other data structures/forms or in databases. In addition, while
the invention has been described in connection with pointers and
forwarding tables to other forwarding tables, pointers to other
types of tables could also be used (such as routing tables). It is
intended that the specification and examples be considered as
exemplary only, with a true scope and spirit of the invention being
indicated by the following claims.
* * * * *