WO2001030034A2 - System for routing and switching in computer networks - Google Patents

System for routing and switching in computer networks Download PDF

Info

Publication number
WO2001030034A2
WO2001030034A2 PCT/US2000/041173 US0041173W WO0130034A2 WO 2001030034 A2 WO2001030034 A2 WO 2001030034A2 US 0041173 W US0041173 W US 0041173W WO 0130034 A2 WO0130034 A2 WO 0130034A2
Authority
WO
WIPO (PCT)
Prior art keywords
router
packet
switching
mode
source
Prior art date
Application number
PCT/US2000/041173
Other languages
French (fr)
Other versions
WO2001030034A3 (en
WO2001030034A9 (en
Inventor
J. Joaquin Garcia-Luna-Aceves
Thane J. Frivold
David A. Beyer
Original Assignee
Nokia Wireless Routers, 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 Nokia Wireless Routers, Inc. filed Critical Nokia Wireless Routers, Inc.
Priority to EP00981033A priority Critical patent/EP1256208A2/en
Priority to AU18214/01A priority patent/AU777159B2/en
Priority to CA002388000A priority patent/CA2388000A1/en
Publication of WO2001030034A2 publication Critical patent/WO2001030034A2/en
Publication of WO2001030034A3 publication Critical patent/WO2001030034A3/en
Publication of WO2001030034A9 publication Critical patent/WO2001030034A9/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks

Definitions

  • the present invention relates to routing and switching protocols in computer networks, e g , ad hoc networks, and may find particular application in such networks that utilize radio communication links and in which routers can have both hosts and networks attached to them.
  • Multi-hop packet-radio networks consist of mobile hosts interconnected by routers that can also move.
  • the deployment of such routers is ad hoc and the topology of such networks is very dynamic, because of host and router mobility, signal loss and interference, and power outages
  • the channel bandwidth available in ad hoc networks is relatively limited compared to wired networks, and untethered routers may need to operate with battery-life constraints.
  • routing must preferably be accomplished using as few a number of control messages and neighbor-to-neighbor handshakes as possible, in order to conserve channel bandwidth for user data and preserve the battery life of untethered nodes. Because of the dynamics of the topology in an ad hoc network, broadcast radio links are preferable for interconnecting routers without the need for topology planning.
  • packet forwarding in computer networks is generally accomplished using one of three available techniques: bndging, routing, or switching.
  • B ⁇ dge protocols permit bndges to forward packets in either of two ways.
  • packets can specify a source route in terms of pairs of unique b ⁇ dge and network identifiers from source to destination host.
  • bndges may first establish a spanning tree of the network and then send packets over branches of such a tree that appear closer to the destination hosts.
  • the forwarding table used by a bndge to forward packets over the spanning tree has an entry for only those destinations for which packets have been processed by the b ⁇ dge
  • the attractive feature of spanning-tree bridges is that packet toiwaiding is very simple, howevei . the available network bandwidth is used inefficiently Source-routing bridges make better use of the bandwidth available in the netwoi . but require a source routing technique that involves the hosts
  • Routing protocols permit routers to forward packets either as datagrams or as part of virtual cncuits In both approaches, routers build and maintain a routing table specifying the next hop to each destination In datagram routing, each packet specifies a souice and a destination using addresses that are unique in the entire network or internet, a i outer forwards each datagram by looking up its routing table for the next hop on a preferred path to the destination
  • VC routing routers In contrast to datagram routing, with virtual circuit (VC) routing routers first establish a path from source to destination using a signaling protocol, and then forward packets along the established VCs using VC identifiers The path taken by the VC is determined based on the information stored in the routing tables of the routers Such a path is given a virtual circuit identifier and routers maintain a forwarding table listing the next hop of each VC traversing the router. Each packet specifies the VC of the packet, and routers along the VC consult their forwarding tables to forward those packets. A VC is tom down using a signaling protocol when the flow of packets ends.
  • VC virtual circuit
  • VCs can be specified with unique identifiers.
  • the ongm of the VC assigns a number to the VC and the same number is used at every relay router along the VC; the VC number becomes unique together with the identifier of the VC o ⁇ gin.
  • routers along the path of a VC can assign local identifiers to the VC. With this approach, each router along the path of the VC knows, for every VC local identifier in its forwarding table, the next router on the path of the VC and the VC local identifier used by the next node for this VC.
  • a router in a VC swaps the VC local identifier in the header of an incoming packet into the VC local identifier expected by the next hop in the VC.
  • the advantages of VC routing with local identifiers are (a) routers use short identifiers to specify and lookup VCs in their forwarding tables, and (b) those short identifiers are used to index an entry in the forwarding table used to forward packets. Because local VC identifiers are short and have fixed length, and because an exact match algo ⁇ thm is used to forward packets, VC routing with local VC identifiers can be easily implemented in hardware. This approach to packet switching has been called label swapping or label switching in recent literature See, e g , B Davie P Doolan, and Y Rekhter, Switching in IP Networks
  • ID swapping G Markowsky and F H Moss, "An Evaluation of Local Path ID Swapping in Computer Networks," IEEE Trans Commun Vol COM-29, March 1981, pp 329-336), path number and logical record number (M Schwartz and T Stem, "Routing Protocols," IEEE Trans Commun Vol COM-28. April 1980)
  • TYMNET logical record number used by TYMNET in the late 1970s Id
  • IP Internet Protocol
  • T Lyon T Lyon
  • G Mmshall Flow labeled IP- A connectionless Approach to ATM
  • tag switching Y. Rekhter et al , “Tag Switching Architecture Overview,” Proc. IEEE, Vol. 85, No. 12, December 1997)
  • MPLS MPLS as being developed by the Internet Enginee ⁇ ng Task Force, IBM's ARIS, and Toshiba's cell switching router. All these approaches apply label swapping to bypass the network-level lookup of routing tables.
  • IP switches which are routers implementing the IP switching approach to packet forwarding, must implement a routing protocol to establish a routing table and packets are first routed using their network addresses.
  • that IP switch can assign a local VC identifier to the packet flow and instruct the previous-hop IP switch to use that VC identifier in all packets it forwards to s for that flow
  • the next-hop IP switch can instruct s to use a local VC identifier defined by the next hop in all packets of the flow forwarded by s to the next-hop IP switch
  • IP switch s can bypass its routing-table lookups for packets in the flow and use the label- swapping technique of VC routing with local identifiers.
  • Tag switching consists of a forwarding component and a control component, similar to the VC routing with local identifiers scheme.
  • a tag switch is a router capable of performing the tag switching mechanism
  • An entry in the forwarding table (called a tag forwarding infoimation base oi TFIB) consists of an incoming tag (equivalent to a VC local identifier) and one oi more sub-entries for the tag specifying the outgoing tag, interface and link-level information
  • the link-level information maintained in the TFIB consists pi ima ⁇ ly of the medium access control (MAC) address of the next hop If a switch receives a packet whose tag equals a tag in its TFIB, it swaps the MAC address and label in the incoming packet with the MAC address and label specified in its TFIB and sends the packet over the interface also specified in the TFIB.
  • MAC medium access control
  • the control component of tag switching consists of the advertisement among neighbor switches of the binding between the address of a destination and the incoming tag it uses for the destination. This can be done with a separate tag distnbution protocol (TDP) or by including the tag assigned to a destination as an attachment to the updates sent by the routing protocol used in the network.
  • TDP tag distnbution protocol
  • a switch assigns an incoming tag to a destination, it can establish an entry in its TFIB when it receives the tag-to- destination binding from the neighbor that it chooses as the next hop to the destination.
  • a single incoming label (called a VC local identifier, path number, or tag, for example) is associated with a single outgoing label for purposes of the label swapping needed to switch packets towards a given destination or for a given VC.
  • the labels refer to destinations or associations between a source and a destination.
  • the mapping established at a node between a destination (or VC) and an incoming label (called a VC local identifier, path number, or tag, for example) is disseminated among neighbor nodes by means of explicit exchanges of control information. This signaling is earned out in addition to the signaling required to maintain routing tables based on destination addresses.
  • the unique addresses of both the sending and receiving nodes are specified in the headers of the packets being forwarded by means of label swapping. This information is used to ensure that only the receiving node addressed in the packet accepts the packet and associates the label in the packet with the correct outgoing label.
  • a loop consists of the forwarding along a loop of packets that set up label-swapping states in the routers, until an external action is taken, such as exhausting a "time to live" for the packet.
  • the loop detection mechanism adopted in these p ⁇ or schemes consists of using a path vector in the header of packets that establishes the binding between the labels used to forward traffic
  • the path vector in a state setup packet specifies the routers that have been visited by the packet
  • Another technique used to cope with the looping of state setup packets is to simply decrement a time-to-live field in the packet header to allow the packet to visit a maximum number of hops trying to set up state Loop detection is still an open issue under discussion for
  • the distnbution of label-binding information among routers in the pnor schemes can be charactenzed in two ways: piggybacking the distnbution on top of routing protocols, or using a separate protocol for label distnbution. Because the labels used in the above label switching proposals refer to either destinations or associations between sources and destinations, the routing protocols that can be used for the dissemination of such information are distance-vector or path-vector onented.
  • routing protocols based on link-state information have been considered to be poor choices for distributing label-binding information.
  • OSPF link-state information
  • Source routing has also been implemented and used for routers, and can be considered a hybnd between datagram routing and label switching.
  • the header of a packet specifies the source route consisting of the entire path from source to destination; the source route is specified in pnor routing schemes using the unique addresses of the routers in the path to the destination.
  • a well-known example of this approach is the source route option in IPv4.
  • the source route can be obtained by the source of the packet in two ways.
  • the router can compute the source route locally if it knows the entire network topology; alternatively, a path search packet can be sent hop-by-hop to the destination to gather the source route, and the destination can send a reply back to the source with the source route.
  • All existing source routing proposals specify source routes in terms of the nodes along the path from source to destination.
  • a protocol for a computer network in which routing opeiation codes (ROCs) in headers of packets transmitted within the network specify to a receiv ing router which of a number of routing or switching methods to apply to foi waid associated packets
  • the packets may be forwarded in any of the following modes (a) a bioadcast mode, (b) a hop-by-hop mode based on receiving node address intoimation, (c) a label swapping mode, (d) a source-switching mode, (e) a flow switching mode, or (f) a hop-by-hop mode based on sending mode address information
  • packets transmitted by first router are accepted by all neighboring routers of the first router.
  • packets are accepted by the receiving router if the receiving node address information matches the receiving router's media access control address.
  • packets are accepted by the receiving router if the packets include a media access control address of the receiving router, and packets are forwarded from the receiving router according to a switching table indexed by a media access control address of a transmitting router.
  • the headers include source routes specified in terms of local link identifiers used by routers in the network.
  • receiving routers are identified using local link identifiers associated with communication links between a transmitting router and an intended receiving router.
  • the headers include a media access control address of a transmitting router, which along with a local link identifier is used as a cntenon upon which a receiving router accepts or rejects a packet.
  • the local link identifiers may be obtained using either a flood search method or through a routing protocol operating within the network.
  • the receiving router forwards a received packet according to a local link identifier specified in a source route portion of an associated header.
  • flow states at routers of the network are established according to information in data packets transmitted within the network.
  • the information included in the data packets allows for bindings between incoming and outgoing flow labels to be established at each of the routers.
  • Such information may include a flow label and a source route to a destination node in the network.
  • forwarding a packet from a first router of a computer network to a second router thereof is achieved according to a routing operation code specified in a header of the packet.
  • the routing operation code may specify any of the above modes and the value thereof determines what other types of information are included in the header of the packet.
  • the sending node address information e g , its MAC address
  • the receiving node address information e g., MAC address
  • receiving node - assigned local link identifier e.g., flow label and/or source route.
  • a sending node obtains a source route to an intended destination using either of a flood search process or a routing protocol operative within the computer network.
  • the packet is forwaided from the first router by reading a source route specified in the header and substituting a transmitting router local link identifier and if present, a receiving router local link identifier, included in the header with corresponding values needed by the second router.
  • the packet is forwarded from the first router by reading a source route specified in the header and substituting a flow label included in the header with a corresponding value needed by the second router.
  • the packet is a data packet that includes flow setup instructions for the second router.
  • the packet's header includes a MAC address of the first router and a local link identifier assigned by the first router and may also include a flow label and a source route or a flow label and a path traversed field.
  • a packet header includes a routing operation code configured to indicate to a receiving router which of a variety of routing and/or switching methods to apply in forwarding an associated packet.
  • routing and/or switching methods may be any of: (a) a broadcast mode, (b) a hop-by-hop mode based on address information regarding the receiving router, (c) a label swapping mode, (d) a source switching mode, (e) a flow switching mode, and (e) a hop-by-hop mode based on address information regarding a transmitting router.
  • the routing operation code generally determines which of the following fields of information are included in packet header: (a) address information of the receiving router, (b) local link identifier information assigned by: (1) a transmitting router and/or (u) the receiving router, (c) a flow label, (d) a source route, (e) a path traversed, and (f) a payload type.
  • Another embodiment provides a router having a neighbor identification table configured to allow the router to determine whether a received packet should be accepted and, if so, which of a number of switching tables to access to retneve information for forwarding the packet within a computer network.
  • the switching tables may include a source switching table, configured to provide packet forwarding information which the router is to use to forward the packet using a source switching process, and/or a flow switching table, configured to provide packet forwarding information when the router is to forward the packet using a flow switching process
  • the neighbor identification table is arranged so as to be indexed using local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto and/or to provide pointers to source switching and/or flow switching tables
  • the source switching table is arranged so as to be indexed according to local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto
  • the flow switching table specifies mappings from incoming flows to outgoing flows, local link identifiers for next hops and associated link-level information
  • Figure 1 illustrates an example of an ad hoc wireless network with routers configured m accordance with the present routing protocol
  • Figure 2 illustrates an example of a packet header for transporting routing and switching information in accordance with an embodiment of the present invention
  • Figure 3 illustrates an example of a router configured with switching tables in accordance with an embodiment of the present scheme
  • Figure 4 illustrates an example of a neighbor identification table configured in accordance with an embodiment of the present scheme
  • Figure 5 presents an example of local link identifiers assigned by routers of an ad hoc network
  • Figure 6 illustrates an example of a neighbor identification table for one of the routers of the network shown in Figure 5;
  • Figure 7 illustrates an example of a source switching table for one of the routers of the network shown in Figure 5;
  • Figure 8 illustrates an example of a flow switching table for one of the routers of the network shown in Figure 5;
  • Figure 9 illustrates another example of a neighbor information table for a router of the network shown in Figure 5
  • Figure 10 illustrates another example of a source switching table for one of the routers of the network shown in Figure 5
  • Figure 1 1 illustrates another example of a flow switching table for one of the routers of the network shown in Figure 5
  • Each packet being routed includes a routing operation code (ROC) instructing the receiving router which routing or switching method to apply to forward the packet.
  • ROC routing operation code
  • a packet can be forwarded in any of the following forwarding modes:
  • a basic incremental (hop-by-hop) mode in which the packet is accepted by a router based on the unique MAC address of the sender and one of multiple local link identifiers specified in the packet header. The packet is then passed to a higher layer for further processing and routing.
  • vanous forwarding modes are enabled by a flow switching protocol.
  • packets are accepted based entirely on the MAC addresses of the sender and receiver nodes earned in the packet header.
  • packets are accepted based on local link identifiers carried in the packet header.
  • the local link identifiers assigned by the router to links with its neighbors and those assigned by the router's neighbors to links with the router can be obtained by the flow switching protocol through a channel access protocol, such as the one proposed in co-pending Application No. 09/248,738, entitled "Adaptive Communication Protocol for Wireless Networks", filed February 10, 1999, assigned to the Assignee of the present invention and incorporated herein by reference.
  • This flow switching protocol obtains source routes to destinations in one of two ways: (a) on demand, in which case search messages are sent out to obtain the source routes, or (b) by working in combination with a routing protocol that can provide source routes.
  • These source routes are specified in terms of transmitter-assigned local link identifiers (LLIDs) given to the links along the path from the source router to the destination.
  • LLIDs transmitter-assigned local link identifiers
  • the source-switching mode is implemented by packet headers specifying a source route in terms of the address of the router that originated the packet and a sequence of LLIDs specifying the path to a destination, and by routers maintaining a table of all LLIDs assigned to the router by its neighbors.
  • a router receives a packet specifying source switching, the router accepts the packet based on the LLIDs specified for the next hop of the packet, and forwards the packet to the neighbor router indicated by the match between the LLID of the next hop specified in the source route and the LLIDs the router assigned to the links with its neighbors
  • the flow switching mode is implemented by routers maintaining a sw itching table similai to that used in label switching Routers can use either incremental or source-switching flow establishment, which processes are described below
  • Both approaches use data packets to establish the flow state and the result of sending the flow establishment data packet is the establishment of the binding between incoming and outgoing flow labels at each router in the path from source to destination
  • a packet intended for a flow that is already established specifies the flow switching mode in the ROC of the packet, the flow label assigned by the sending node, the address of the sending node, and the LLIDs assigned to the link in use by the sending and receiving node
  • An entry in the flow-switching table is erased either after a timeout or the processing of a packet with an ROC with a flow-termination code
  • the flow state needed to carry out flow switching is established at routers by either flow establishment using source switching, or incremental flow establishment
  • the source of a packet stream or flow assigns a flow label to the flow and sends a first packet with a source route to the destination of the flow, the flow label for the flow, and an ROC instructing the relay routers to use source switching to forward the packet and to establish an entry in their flow switching tables for the flow as well.
  • a relay router that receives the packet assigns a flow label to the flow, makes an entry in its flow-switching table with the mapping of the incoming and the outgoing flow labels and the associated neighbors along the path for the flow, and relays the packet with the same ROC, the new flow label, the source route, and an index to the source route pointing to the next-hop router as the first non-traversed hop of the source route.
  • the source and each relay router in the path from the source to the destination of the flow decides how the packet should be forwarded
  • the ROC of the packet specifies hop-by-hop flow establishment, which instructs the router to look up its routing table to determine the next hop, and to establish the binding between incoming and outgoing flow labels.
  • the header of the flow-establishment data packet carries a path vector specifying the source and the LLIDs of the routers visited by the flow-establishment data packet.
  • source-switched flow establishment is adopted because the amount of information in the headers of flow-establishment packets is the same and the processing of packets in source switching mode is much faster than in hop-by-hop routing.
  • a router can assign a flow label to a packet flow in many different ways.
  • One approach consists of using the same flow label for any flow intended for the same destination and the same type of service.
  • the flow switching protocol can be implemented at the link layer or below. It can be used to encapsulate IP packets directly, or to encapsulate MAC packets.
  • the present scheme is well suited for wireless and wired networks and the IP internet, in which routers are interconnected by point-to-point or broadcast links (e.g., local area networks) to one another.
  • the present invention is also well suited for an ad hoc network that provides a seamless extension of the IP Internet to the ad hoc wireless environment.
  • Figure 1 illustrates aspects of an exemplary ad hoc internet.
  • Ad hoc network 10 may be considered as a number of sub-networks 12a, 12b, 12c, which provide an extension of the Internet 14 through a number of Internet Radios or IRs 16a- 16 ⁇ .
  • Each IR 16a- 16 ⁇ is a wireless router with an assigned IP address and a
  • IRs I6a- 16 ⁇ operate over one or a multiplicity of radio channels using spread-spectrum w ireless communication techniques common in the art.
  • the IRs 16a- 16 ⁇ may operate in one of the unregulated UHF frequency bands, thereby obviating the need for operating licenses.
  • Coupling of ad hoc network 10 to the Internet 14 is achieved through a router 18, which may be operated by an Internet Service Provider (ISP).
  • ISP Internet Service Provider
  • a single ISP may operate a LAN 20 to which multiple IRs are connected.
  • IRs 16a and 16b may act as "AirHeads", providing gateway service to Internet 14 via router 18.
  • IRs 16d and 16e of Figure 1 may be associated with hosts, 22a, 22b and 22c, which can be accessed by any Internet user through ad hoc network 10.
  • hosts, 22a, 22b and 22c which can be accessed by any Internet user through ad hoc network 10.
  • each IR 16a-16 ⁇ processes all messages, changes in the cost of an adjacent link, adjacent-link failures, and new- neighbor notifications one at a time and in the order in which it detects them.
  • any IR 16a- 16i in Figure 1 can consider another IR to be adjacent (we call such an IR a "neighbor") if there is radio connectivity between the two IRs and one IR, e.g., IR 16g, can receive and acknowledge packets from the other IR, e.g., IR 16h.
  • a physical broadcast link connecting multiple IRs is mapped into multiple point-to-point bidirectional links defined for the same IRs.
  • Each pair of adjacent IRs defines two point-to-point bidirectional links between them, one in each direction.
  • Each point-to-point bidirectional link has a head node of the link and a tail node of the link.
  • the flow switching protocol for use in ad hoc network 10 in accordance with the present invention supports a variety of packet forwarding modes.
  • This flow switching protocol obtains source routes to destination on demand, where source routes are specified in terms of transmitter-assigned LLIDs regarding the links along the path from the source router to the destination, or works in combination with a routing protocol capable of obtaining such source routes.
  • the flow switching protocol then uses LLIDs to support the various packet forwarding modes. If the flow switching protocol is used in combination with a routing protocol that can provide source routes to destinations expressed in terms of the LLIDs of the links traversed in those routes, the flow switching protocol does not incur more traffic than that needed for the transfer of data packets themselves.
  • the use of LLIDs in the forwarding modes of the flow switching protocol enables the implementation of all its packet forwarding functions in hardware.
  • the present scheme works in combination with a routing protocol that incorporates local link identifiers (LLIDs) as part of the routing information exchanged among routers.
  • LLIDs local link identifiers
  • Such a routing protocol can be the Adaptive
  • AIR Internet Routing
  • AIR Internet Routing
  • a link from node x to node y in an LRT is given a local link identifier (LLID) by x, the head of link (x, y).
  • LRT labeled routing trees
  • a second example of a routing protocol that can be used in combination with the present scheme is a modification of a topology-broadcast protocol (e.g., OSPF J.
  • each directed link is assigned an LLID by the head of the link, and the LLID of a link is communicated in every link state update for that link.
  • a routing protocol that can be used in combination with the present invention is a modification of a path-vector protocol (e.g., BGP) such that the paths from source to destinations are specified in terms of both the routers used in the paths, as well as the LLIDs of the links in the same paths; the LLID of a link in a path is given by the head of that link.
  • a path-vector protocol e.g., BGP
  • the routing protocol assumed for the operation of the present scheme also provides a routing table with the distance and next hop to each destination.
  • the source routes needed by a router can be computed on demand by the source of a packet that is to be source switched to the destination.
  • the routing table may also include the source route specified in terms of LLIDs for each destination. Multiple routing entnes for the same destination may be provided, i.e., up to one entry per neighbor per destination, and one or multiple routing entnes may be provided for each type of service defined in the system.
  • AIR Adaptive Internet Routing
  • a router that onginates a packet for a destination and has no routing information for that destination may send search packets to its neighbors in order to find an intended destination
  • the search packet sent to a given neighbor specifies the address of the intended destination, the address of the intended receiver of the packet, and a source route
  • the source route of the packet is specified in terms of the address of the source router and the LLID assigned by the source router to the link with its neighbor
  • a router receiving a search packet that does not have a routing entry for the intended destination forwards the packet to each of its neighbors other than the one from which the packet is received, and the packet specifies the address of the intended destination, the address of the intended receiver of the packet, and a source route with the LLID of the link from the sending router to the intended receiver added
  • a router receiving the search packet that has a source route (specified terms of LLIDs of the links in the path to the destination) sends a reply with the entire source route consisting of the source router address and the sequence of LLIDs for all the
  • the header of a packet specifies a switching or routing instruction that instructs the router to process the packet in one of multiple possible switching or routing modes, and specifies the additional information needed for the router to carry out the operation.
  • the flow switching protocol of the present invention could be used to carry IP packets or it could be used to carry MAC-layer packets that in turn encapsulate IP packets.
  • Figure 2 presents a canonical packet-header format, which illustrates the type of routing and switching information used in one embodiment of the present scheme, as well as the combination of the vanous types of information.
  • Vanous fields in the canonical packet header 30 can be required fields or optional fields.
  • the canonical packet header descnption shown in Figure 2 omits framing and e ⁇ or checking fields that may be present in an actual implementation. It should be evident to those of ordinary skill in the art that, depending on a variety of implementation issues (e.g., bandwidth available in the communication links) this canonical format can be implemented in a vanety of ways, ranging from the number of bits used in each field and the the position of the fields in the packet header, to the use of extension headers in order to simplify the processing of the most commonly transmitted types of packets.
  • the canonical packet header 30 descnbed herein can be part of a larger packet header.
  • a version (V) field 32 specifies the version of the protocol to be used to process the packet.
  • the time to live (TTL) field 34 specifies an upper bound in terms of hops or time, beyond which the packet should be dropped to prevent packets from remaining in the network indefinitely.
  • the reliability (R) field 36 specifies the degree of reliability with which the packet must be successfully forwarded by the router.
  • the prionty (P) field 38 specifies the pnonty that the packet should be assigned in the transmission queues of the router.
  • the payload type (LOAD) field 40 is optional and specifies the type of payload that follows the header; if the field is omitted the payload is assumed to be a packet using a predefined MAC protocol, such as the REALM protocol described in co-pending Application No. 09/248,738, entitled "Adaptive Communication Protocol for Wireless Networks".
  • the routing operation code (ROC) 42 specifies the instruction (e.g., in binary code format) to be used on the packet, i.e., how the packet should be processed.
  • the value specified in the ROC field 42 determines which other fields should be present in the header 30.
  • the transmitter's MAC address (XADD) field 44 identifies the sender of the packet and should always be present in a packet header 30.
  • the receiver's MAC address (RADD) field 46 is optional and identifies the receiver of the packet; the RADD is present in the header when the ROC specifies a routing or switching mode based on the sender and receiver MAC addresses; examples of these modes are normal packet routing and tag switching.
  • the transmitter-assigned link identifier (XLID) field 48 is optional and is present when the ROC specifies a forwarding operation in terms of the LLID of the link to the next hop for the packet.
  • the XLID specifies the local link identifier assigned by the transmitter to the link with one of its neighbors. A router cannot assign the same XLID to more than one link with a neighbor.
  • the receiver-assigned link identifier (RLID) field 50 is optional and specifies the local link identifier assigned by the intended receiver of the packet to the link with the transmitting router.
  • An RLID reported by router x in a packet destined for neighbor y is, therefore, the XLID that x knows y has assigned to the link (y, x).
  • the RLID field 50 is present in the packet header 30 when the ROC specifies the source switch or flow switch mode and the lookup at the receiver is accomplished based on receiver-assigned link identifiers.
  • a router accepts the packet based on the XADD, XLID, and RLID fields, 44, 48 and 50, of the header.
  • the flow label (FL) field 52 is optional and is present when the ROC specifies the flow switching mode.
  • the FL specifies the label assigned to a flow of packets by the transmitting router. To minimize the number of flow labels routers have to remember, it may be assumed that a router assigns the same flow label to packets of the same traffic class flowing to the same destination.
  • the source route field 54 is optional and is present when the ROC specifies any forwarding operation involving source switching. It may include three sub-fields (not shown in detail), a hop count (HC) specifying the number of entries in the source route, a pointer to the next hop (PNH) indicating the XLID that the receiving router should read to forward the packet, and a source route (SR) consisting of one or more XLIDs.
  • HC hop count
  • PNH pointer to the next hop
  • SR source route
  • the path-traversed field 56 is optional and is present when the ROC specifies hop-by-hop flow establishment. It includes of a hop count specifying the number of routers visited by the packet, and the ordered sequence of MAC addresses of the routers visited.
  • the switching information maintained at routers is used to switch packets below the IP layer.
  • the introduction of XLIDs and RLIDs in the present scheme reduces the amount of bandwidth consumed by packet headers and, more importantly, enables the implementation of flow and souice switching modes in simple hardware This makes packet s itching according to the present invention much faster than routing packets by table lookups, even if the fast table lookup technology of prior schemes is utilized
  • each router 60 maintains three types of switching tables- a neighbor identification table (NIT) 62, a source switching table (SST) 64 and a flow switching table (FST) 66 for each neighbor
  • NIT neighbor identification table
  • SST source switching table
  • FST flow switching table
  • the NIT 62 permits a router to determine if a received packet is intended for that router and, if so, which switching table to use to forward the packet.
  • the SST 64 specifies the forwarding instructions a router should follow to forward packets in source switching mode.
  • Each FST 66 specifies the mapping from a given incoming flow label to the outgoing flow label, the necessary LLIDs to identify the next hop, and the necessary link-level information for the transmission of the packet to the next hop.
  • only transmitter-assigned LLIDs are used to identify links between neighbors.
  • the RLLD field 50 is not used for flow switching or source switching, and the NIT 62 is indexed according to links incident into the router and provides pointers to the SST 64 and the FST 66 as needed.
  • the keys for the NIT are the XLIDs reported by the neighbors of the receiving router for their links to that router.
  • One or more neighbors of the subject router may use the same XLID value 48 to label their links to the router.
  • the entry 68 in the NIT 62 is an array consisting of zero or more array entnes, each array entry co ⁇ esponding to a neighbor that uses the value of the XLID for a link to the router and including: (a) the MAC address of the neighbor and (b) a pointer to the FST of the neighbor.
  • a router has relatively few neighbors (e.g., up to 64 neighbors) and searching on the XLID as the key is, consequently, very fast.
  • the total number of array entnes in the NIT 62 is N; hence, m the worst case a router has to search in a list of up to N entnes (either all its neighbors use different XLIDs for their links to the router, or all its neighbors use the same value of XLID for their links to the router)
  • Figure 5 shows an example network consisting of six routers (A - F) connected by point-to-point links Circles indicate routers and lines indicate the links between them The label inside a circle indicates the MAC address of the router, and the a ⁇ ows and labels next to the links connecting the routers indicate the XLIDs assigned by a louter to each link with a neighbor
  • no router assigns the same XLID to more than one link, and that multiple neighbor routers may use the same XLID for the same router
  • Figure 6 shows the NIT 62A at router A of Figure 5
  • the index values used in the NIT 62A are those assigned by router A's neighbors to the links incident into router A, not XLID values assigned by router A to links outgoing from router A to its neighbors
  • This is not a problem due to the array structure of NIT 62A, which specifies the MAC address of each neighbor of router A using a given XLID to denote an incident link into router A and a pointer to the proper FST, which is to be used to process packets in flow switching mode.
  • the NIT 62A of router A has only four table entnes, corresponding to four neighbors (B, D, C, and E).
  • an SST 64 is indexed on the XLID values that the router assigns to its outgoing links with neighbors. Each entry in an SST 64 specifies an outgoing interface and link-level information for the transmission of the packet to the next hop.
  • Figure 7 shows the SST 64A at router A; the MAC addresses of neighbor routers are shown in parenthesis since they are not stored in the SST. Note that the four entnes indexed by XLID value correspond to the four links going from router A to its neighbors.
  • a router maintains a flow switching table (FST) 66 for each neighbor router.
  • the FST for a given neighbor is indexed according to the values of the incoming flow labels used for flow switching. For a given value of an incoming flow label, the FST specifies the value of the outgoing flow label, link-level information for the transmission of the packet to the next hop, and the value of the XLID to be used when a packet is forwarded to the next hop in flow switching mode
  • the use of the latter entry is unique in the present scheme relative to all prior packet switching techniques based on label swapping.
  • Figure 8 shows the FST 66A at router A for its neighbor router D. It is assumed that two flows going from D to A have been established already One flow is identified with the incoming flow label fl l and the other with incoming flow label fl2 For fl l , the forwarding instruction in the FST
  • the routing instruction also specifies all the necessary link-level information, which is dependent on the type of network being used
  • an ad hoc network or a wired network e g., an ad hoc network or a wired network.
  • routers use the receiver- assigned link identifier (RLID) field 50 to identify a given link with the local link identifiers assigned by each end of the link.
  • the headers of packets to be forwarded according to source switching and flow switching specify the RLID in addition to the XLID.
  • the NIT at each router is indexed by the RLED, i.e., the local link identifier assigned by the router to its outgoing links, which is specified by a neighbor router in the header of the packet.
  • the NIT entry for a given value of the RLID specifies the MAC address of a neighbor, the XLID assigned to the link by the router, and a pointer to the FST for that neighbor.
  • any router knows the LLID assigned by each of its neighbors to the link from the neighbor to the router.
  • Figure 9 shows the NIT 70A at router A of Figure 5. Note that the index values used in the NIT 70A are now the RLIDs assigned by the subject router to each of its neighbors, and all such RLIDs are different from each other.
  • the NIT 70A specifies the MAC address of a neighbor, the LLID assigned by the neighbor to the link with the router, and a pointer to the FST used when packets are flow switched.
  • a router accepts a packet based on the values of the XADD, XLID, and RLID fields, 44, 48 and 50, of the packet header. More specifically, the RLID field 50 identifies the entry of the NIT that should be further examined, if no entry of the NIT is labeled with a value equal to the RLID of the packet, the packet is discarded. If the XADD and XLID do not correspond to the MAC and LLID values of the NIT entry specified by the RLID value, the packet is discarded.
  • the SST is indexed on the XLID values that the subject router assigns to its outgoing links with neighbors.
  • Each entry in the SST specifies the LLID assigned to the link by the neighbor router (RLID to be used in a packet header), outgoing interface, and link-level information for the transmission of the packet to the next hop.
  • Figure 10 shows the SST 72A at router A.
  • the FST for a given neighbor specifies, for a given value of an incoming flow label, the value of the outgoing flow label, link-level information for the transmission of the packet to the next hop, and the value of the XLID and RLID to be used when a packet is forwarded to the next hop in flow switching mode.
  • Figure 11 shows the FST 74A at router A for its neighbor router D. It is assumed that two flows going from D to A have been established already. One flow is identified with the incoming flow label fll and the other with incoming flow label fl2.
  • This packet-forwarding mode could be used to support network-layer control functions requi ⁇ ng routers to communicate with all their neighbors.
  • the point-to-point mode is used to simply pass information from one router to one of its neighbors or to a subset of its neighbors using a multicast MAC address.
  • the accepted packet can be routed at the higher layer (e.g., the IP layer) using a standard routing table based on destination addresses.
  • the final destination of the packet or a conventional source route should be included in the payload that follows the packet header, just as is the case for IP packets encapsulated in frames that are formatted according to IEEE Standard 802.3.
  • a router accepts a packet based on the RADD in the header, and the accepted packet is forwarded by swapping the incoming flow label in the header with the outgoing flow label stored in a flow switching table stored at the router and indexed by the incoming flow label and the MAC address of the neighbors of the router.
  • the difference between the present scheme and earlier ones stems from the way in which routers can establish the label swapping state using source switching.
  • the source switching mode is unique to the present scheme.
  • the router that originates the packet first obtains the source route to the intended destination in terms of the LLIDs assigned to the links along the path from source to destination. As earlier established, the router obtains this information either through the routing protocol used in combination with this routing scheme, or by means of control search packets disseminated in the network.
  • the header of such a packet also contains the XLID assigned by the router to the link with the next hop of the source route, the router's own MAC address, the source route to the destination specified as a sequence of XLIDs, and a pointer into the source route informing its neighbor which is the next hop that the neighbor should examine. If receiver-assigned LLIDs are used, the header also contains the RLID assigned by the intended receiver to the link with the router sending the packet.
  • a packet is source switched at every hop by reading the source route in the packet header and substituting the XLID, and if present the RLID, specified in the header to allow the router to accept the packet with the XLID, and RLID if present, needed by the next hop.
  • LLIDs are swapped at each router, the labels used in source switching are very different than those used in the label switching approaches of the past, because they refer to the links over which the packet must flow, rather than the destination, or association from source to destination, for which the packet is intended.
  • Another approach to source switching would consist of specifying the MAC address of the next hop in the source route along with the source route specified in terms of LLIDs. Such a variation of the source switching approach could be used when channel bandwidth is not at a premium.
  • the packet header in this forwarding mode would specify the source route field and would substitute the XLID field 48 for the
  • RADD field 46 A router can then accept a packet based on the MAC address of the intended receiver specified in the header.
  • LLIDs have to be used to provide a simple index to the SST, there may be little or no advantage to using the MAC address of the receiver rather than the LLID of the link to the same router.
  • the switching operation at a router when receiver-assigned LLIDs are used in packet headers consists of accepting the packet and forwarding the packet, if accepted.
  • the following pseudo-code specifies the procedure formally, which operations can be implemented in hardware or software.
  • the router decides whether to accept the packet or not based on the XADD, XLID, and RLID fields, 44, 48 and 50, of the packet header, which must match with one entry in the NIT 62 of the router.
  • the XADD and XLID identify the link from neighbor to router; however, to permit the router receiving the packet to scan its NIT 62 using a simple index, the RLID given to the link from the router to the neighbor is also included in the packet. Accordingly, the router can scan its NIT 62 using the received RLID as the key, and decide whether or not to accept the packet by matching the XADD and XLID from the packet with the MAC address and LLID stored in its NIT 62.
  • the router scans its SST 64 based on the XLID of the packet. To forward the packet to the next hop, it advances the PNH of the source route field 54 of the packet, and substitutes the XLLD and RLID received with those expected by the next hop. The packet is then forwarded according to the link-level information for the next hop maintained in the SST 64.
  • SR Source route specified in packet header.
  • NIT Neighbor identification table.
  • XLID Transmitter-assigned link identifier specified in packet header.
  • RLID Receiver-assigned link identifier specified in packet header.
  • XADD Transmitter's MAC address specified in packet header.
  • NIT.rlid Any LLID in NIT assigned by router to a link with a neighbor.
  • NIT(RLJD) Row of the NIT specified by RLID.
  • NIT(RLID).mac MAC address stored in NIT entry specified by RLID value.
  • NIT(RLID).xlid LLID assigned by neighbor to link with router and stored in NIT entry specified by RLID value.
  • PNH(SR) Local link identifier specified by the pointer to the next hop (PNH) in packet header
  • SST.xlid Any local link identifier in SST assigned to an outgoing link.
  • SST(XLID).rlid LLID assigned by neighbor to its link with router and stored in SST entry specified by XLID value.
  • a router receiving a packet specifying source switching may process the packet using the simple procedure specified in pseudo-code below. First, the router decides whether to accept the packet or not based on the XADD and XLJD fields, 44 and 48, of the packet header, which must match with one array entry 68 in its NIT 62.
  • the XLID and XADD uniquely identify a receiver router, because MAC addresses are unique and no router assigns the same XLID to more than one neighbor.
  • searching the NIT 62 for a match between the packet's XLID and a LLED assigned to the router by one of its neighbors is very fast, because the router can have no more LLIDs assigned to it than the neighbors it has, and given a match with the packet's XLID searching for a match between the packet's XADD and the MAC addresses of the neighbors that assigned the same LLID to the router is very fast, because only a subset of the router's neighbors can use the same LLID for their links to the router.
  • the router scans its SST 64 based on the XLID of the packet. To forward the packet, the router substitutes the XLID with the LLID conesponding to the PNH value of the source route and increments the PNH of the packet header. The packet is then forwarded according to the link-level information maintained in the SST 64 for the next hop in the route.
  • the following pseudo-code formally specifies this simple procedure.
  • PNH(SR) Local link identifier specified by the pointer to the next hop (PNH) in packet header
  • NIT Neighbor identification table.
  • XLID Transmitter-assigned link identifier specified in packet header.
  • XADD Transmitter's MAC address specified in packet header.
  • NIT.x d Any LLID in NIT assigned by a neighbor to the link with the router.
  • NIT(XLID) Row of the NIT specified by XLID.
  • SST(XLID) Row of the SST specified by XLID.
  • NTT(XLID).mac Any MAC address in the row of the NIT specified by
  • SST.xlid Any local link identifier in SST assigned to an outgoing link.
  • End Source_Switching The above procedure can also be implemented in hardware or software.
  • the flow switching mode is unique to the present scheme and provides for packet switching using label swapping without the need to specify the MAC address of the receiver of the packet. This is accomplished by using the same approach used for source switching to determine when a packet should be accepted. If a match is found in the NIT 62 for the tuple formed by the XLID and XADD of the packet, or for the tuple formed by RLID, XLID, and XADD, if receiver-assigned LLIDs are used, the NIT 62 provides a pointer to the flow switching table (FST) 66 maintained for the neighbor that sent the packet.
  • FST flow switching table
  • the FST 66 maintains the mapping between the flow label specified in the packet and the flow label to be used for the next hop, together with the LLID of the link to the next hop and any outgoing link-level information. If RLIDs are used in packet headers, the FST 66 also specifies the RLID to be included in the header of the outgoing packet.
  • the subject router substitutes in the outgoing packet the values of either FL and XLID, or FL, XLID, and RLID in the header of the received packet with the entries specified in the FST 66 for the next hop of the packet.
  • the following pseudo-code specifies the procedure used for flow switching when RLIDs are included in packet headers.
  • NIT Neighbor identification table.
  • FST_p The flow switching table specified by the pointer p.
  • XLID Transmitter-assigned link identifier specified in packet header.
  • RLID receiver-assigned link identifier specified in packet header.
  • FST_p(IFL) Forwarding instruction in FST_p for incoming flow label specified by BFL
  • FST_p.ifl Any incoming flow label in FST_p.
  • FST_p(FL).ofl Outgoing flow label in the entry for incoming flow label FL in FST_p.
  • FST_p(FL).xhd LLID assigned by router to link with neighbor and stored in FST_p entry specified by FL.
  • FST_p(FL).rhd LLID assigned by neighbor to link with router and stored in FST_p entry specified by FL.
  • NIT(RLID).mac MAC address stored in NIT entry specified by
  • NIT(RLID).ptr Pointer to an FST in NIT entry specified by RLID.
  • NIT Neighbor identification table.
  • FST_p The flow switching table specified by the pointer P-
  • XLID Transmitter-assigned link identifier specified in packet header.
  • XADD Transmitter's MAC address specified in packet header.
  • NIT.xlid Any LLID in NIT assigned by a neighbor to the link with the router.
  • NIT(XLID) Row of the NIT specified by XLID.
  • NIT(XLID).mac Any MAC address in the row of the NIT specified by
  • FST_p.ifl Any incoming flow label in FST_p.
  • FST_p(FL).ofl Outgoing flow label in the entry for incoming flow label FL in FST_p.
  • NIT(XLID,XADD).ptr Pointer to an FST for neighbor with MAC address that matches XADD in NIT entry specified by XLID.
  • a packet is accepted by a router based on the XADD, XLID, and RLID specified in the header using the same approach described for source switching.
  • the accepted packet is then passed to a higher layer for further processing, which may include routing at the network layer.
  • flow state may be established either incrementally or using source routes, and establishing flow state amounts to another packet forwarding mode, i.e., flow state is established by forwarding data packets.
  • a router that decides to establish flow state along a loop-free path to a destination first obtains the source route to the destination in the same way as in source switching mode. Once the router obtains a source route, it sends a source-switched data packet with flow setup instructions, so that flow state can be set as the packet traverses the source route to the destination.
  • a i outer When a i outer receives a packet with the source-switched flow establishment operation code, it establishes flow state and forwards the packet according to source switching.
  • the router determines whether to accept the packet or not based on the XADD. XLID. and RLID fields, 44. 48 and 50, of the header, or the XADD an XLID fields, 44 and 48, only, if no RLIDs are used to implement source switching and flow switching. If the packet is accepted, the receiving router establishes an entry in the FST 66 for its neighbor; in such an entry the FL received in the packet is mapped into an outgoing flow label created by the router and the XLID and, if applicable, the RLID of the next hop in the source route specified in the packet. The router forwards the packet as in the case of source-switching mode, together with the swapping of flow labels.
  • SR Source route specified in packet header.
  • NIT Neighbor identification table.
  • XLID Transmitter-assigned link identifier specified in packet header.
  • RLID Receiver-assigned link identifier specified in packet header.
  • XADD Transmitter's MAC address specified in packet header.
  • NIT(RLID) Row of the NIT specified by RLID
  • PNH(SR) Local link identifier specified by the pointer to the next hop (PNH) in packet header
  • SST.xlid Any local link identifier in SST assigned to an outgoing link.
  • SST(XLID).rhd LLID assigned by neighbor to its link with router and stored in SST entry specified by XLID value.
  • PNH(SR) Local link identifier specified by the pointer to the next hop (PNH) packet header.
  • NIT Neighbor identification table.
  • XLID Transmitter-assigned link identifier specified in packet header.
  • XADD Transmitter's MAC address specified in packet header.
  • NIT(XLID) Row of the NIT specified by XLID.
  • NIT(XLID).mac Any MAC address in the row of the NIT specified by XLID.
  • SST.xlid Anv local link identifier in SST assigned to an outgoing link.
  • NIT(XLID,XADD).ptr Pointer to an FST for neighbor with MAC address that matches XADD in NIT row given by XLID.
  • the path-traversed field 56 specifies the path traversed by the packet from its origin to the present hop in terms of the MAC addresses of each hop visited by the packet.
  • a router that receives the packet with ROC 6 accepts it based on the XLID, XADD tuple. The router then determines if the packet has visited the router before and, if so, discards the packet. If no such loop is detected, the router then consults its routing table and obtains the LLID for the link to its next hop to the intended destination. Note that the address of the destination is specified in the payload of the packet, not in its header. Once the next hop and the LLID for the next hop are obtained, the router installs the mapping between the FL (incoming flow label) of the received packet and a new outgoing flow label and the LLID for the next hop towards the destination (obtained from its routing table).
  • the router then substitutes FL with its outgoing flow label for the destination, adds its MAC address to the path-traversed field 56, and sends the packet to the next hop.
  • the preferred approach to flow setup is source-routed flow setup, because it incurs much less communication and processing overhead.

Abstract

A protocol for a computer network in which routing operation codes (ROCs) in headers of packets transmitted within the network specify to a receiving router which of a number of routing or switching methods to apply to forward associated packets. The packets may be forwarded in any of the following modes: (a) a broadcast mode, (b) a hop-by-hop mode based on receiving node address information, (c) a label swapping mode, (d) a source-switching mode, (e) a flow switching mode, or (f) a hop-by-hop mode based on sending mode address information. In the label swapping mode, packets are accepted by the receiving router if the packets include a media access control address of the receiving router, and packets are forwarded from the receiving router according to a switching table indexed by a media access control address of a transmitting router. In the source switching mode, the header include source routes specified in terms of local link identifiers used by routers in the network. Also, receiving routers are identified using local link identifier associated with communication links between a transmitting router and an intended receiving router.

Description

I
SYSTEM FOR ROUTING \ND SWITCHING IN COMPUTER NETWORKS
ST \TEMENT OF GOVERNMENT LICENSE RIGHTS
The United States Government has a paid-up license in portions of this invention and the light in limited circumstances to require the patent owner to license others on leasonable terms as provided for by the terms of Contract No DAAH01-98-C-R005, awarded by the U S Army Aviation & Missile Command
FIELD OF THE INVENTION
The present invention relates to routing and switching protocols in computer networks, e g , ad hoc networks, and may find particular application in such networks that utilize radio communication links and in which routers can have both hosts and networks attached to them.
BACKGROUND
Multi-hop packet-radio networks, or ad hoc networks, consist of mobile hosts interconnected by routers that can also move. The deployment of such routers is ad hoc and the topology of such networks is very dynamic, because of host and router mobility, signal loss and interference, and power outages In addition, the channel bandwidth available in ad hoc networks is relatively limited compared to wired networks, and untethered routers may need to operate with battery-life constraints. In these networks, routing must preferably be accomplished using as few a number of control messages and neighbor-to-neighbor handshakes as possible, in order to conserve channel bandwidth for user data and preserve the battery life of untethered nodes. Because of the dynamics of the topology in an ad hoc network, broadcast radio links are preferable for interconnecting routers without the need for topology planning.
Presently, packet forwarding in computer networks is generally accomplished using one of three available techniques: bndging, routing, or switching. Bπdge protocols permit bndges to forward packets in either of two ways. In one scheme, packets can specify a source route in terms of pairs of unique bπdge and network identifiers from source to destination host. Alternatively, bndges may first establish a spanning tree of the network and then send packets over branches of such a tree that appear closer to the destination hosts. The forwarding table used by a bndge to forward packets over the spanning tree has an entry for only those destinations for which packets have been processed by the bπdge The attractive feature of spanning-tree bridges is that packet toiwaiding is very simple, howevei . the available network bandwidth is used inefficiently Source-routing bridges make better use of the bandwidth available in the netwoi . but require a source routing technique that involves the hosts
Routing protocols permit routers to forward packets either as datagrams or as part of virtual cncuits In both approaches, routers build and maintain a routing table specifying the next hop to each destination In datagram routing, each packet specifies a souice and a destination using addresses that are unique in the entire network or internet, a i outer forwards each datagram by looking up its routing table for the next hop on a preferred path to the destination
In contrast to datagram routing, with virtual circuit (VC) routing routers first establish a path from source to destination using a signaling protocol, and then forward packets along the established VCs using VC identifiers The path taken by the VC is determined based on the information stored in the routing tables of the routers Such a path is given a virtual circuit identifier and routers maintain a forwarding table listing the next hop of each VC traversing the router. Each packet specifies the VC of the packet, and routers along the VC consult their forwarding tables to forward those packets. A VC is tom down using a signaling protocol when the flow of packets ends.
VCs can be specified with unique identifiers. In such cases, the ongm of the VC assigns a number to the VC and the same number is used at every relay router along the VC; the VC number becomes unique together with the identifier of the VC oπgin. However, to reduce the size of VC identifiers, routers along the path of a VC can assign local identifiers to the VC. With this approach, each router along the path of the VC knows, for every VC local identifier in its forwarding table, the next router on the path of the VC and the VC local identifier used by the next node for this VC. A router in a VC swaps the VC local identifier in the header of an incoming packet into the VC local identifier expected by the next hop in the VC. The advantages of VC routing with local identifiers are (a) routers use short identifiers to specify and lookup VCs in their forwarding tables, and (b) those short identifiers are used to index an entry in the forwarding table used to forward packets. Because local VC identifiers are short and have fixed length, and because an exact match algoπthm is used to forward packets, VC routing with local VC identifiers can be easily implemented in hardware. This approach to packet switching has been called label swapping or label switching in recent literature See, e g , B Davie P Doolan, and Y Rekhter, Switching in IP Networks
Moigan Kautmann ( 1998)
Although approaches based on label swapping have received much attention lately, the basic label swapping mechanism and mechanisms to set up states at routers so that they can carry out packet forwarding based on label swapping have been proposed and implemented many times in the past since the mid 1970s VC routing with local identifiers has been studied by Segall (A Segall and J Jaffe, "Route Setup with Local Identifiers." IEEE Trans Commun Vol COM-34, No 1, January 1986, pp 45-53). and packet switching based on label swapping has been called ID swapping (G Markowsky and F H Moss, "An Evaluation of Local Path ID Swapping in Computer Networks," IEEE Trans Commun Vol COM-29, March 1981, pp 329-336), path number and logical record number (M Schwartz and T Stem, "Routing Protocols," IEEE Trans Commun Vol COM-28. April 1980) One of the first proposals and implementations of label swapping was the logical record number used by TYMNET in the late 1970s Id
Recent proposals for packet switching include: Internet Protocol (IP) switching (P newman, T Lyon, and G Mmshall, "Flow labeled IP- A connectionless Approach to ATM," Proc. IEEE Infocom 96, San Francisco, California, 1996), tag switching (Y. Rekhter et al , "Tag Switching Architecture Overview," Proc. IEEE, Vol. 85, No. 12, December 1997), MPLS as being developed by the Internet Engineeπng Task Force, IBM's ARIS, and Toshiba's cell switching router. All these approaches apply label swapping to bypass the network-level lookup of routing tables.
In the IP switching approach, IP switches, which are routers implementing the IP switching approach to packet forwarding, must implement a routing protocol to establish a routing table and packets are first routed using their network addresses. When packets for the same flow start traversing a given IP switch s, that IP switch can assign a local VC identifier to the packet flow and instruct the previous-hop IP switch to use that VC identifier in all packets it forwards to s for that flow In the same way, the next-hop IP switch can instruct s to use a local VC identifier defined by the next hop in all packets of the flow forwarded by s to the next-hop IP switch When that happens, IP switch s can bypass its routing-table lookups for packets in the flow and use the label- swapping technique of VC routing with local identifiers.
Tag switching consists of a forwarding component and a control component, similar to the VC routing with local identifiers scheme. A tag switch is a router capable of performing the tag switching mechanism An entry in the forwarding table (called a tag forwarding infoimation base oi TFIB) consists of an incoming tag (equivalent to a VC local identifier) and one oi more sub-entries for the tag specifying the outgoing tag, interface and link-level information The link-level information maintained in the TFIB consists pi imaπly of the medium access control (MAC) address of the next hop If a switch receives a packet whose tag equals a tag in its TFIB, it swaps the MAC address and label in the incoming packet with the MAC address and label specified in its TFIB and sends the packet over the interface also specified in the TFIB.
The control component of tag switching consists of the advertisement among neighbor switches of the binding between the address of a destination and the incoming tag it uses for the destination. This can be done with a separate tag distnbution protocol (TDP) or by including the tag assigned to a destination as an attachment to the updates sent by the routing protocol used in the network Once a switch assigns an incoming tag to a destination, it can establish an entry in its TFIB when it receives the tag-to- destination binding from the neighbor that it chooses as the next hop to the destination.
All of the above label switching schemes and denvatives thereof share certain common features: For example, in each of these schemes, a single incoming label (called a VC local identifier, path number, or tag, for example) is associated with a single outgoing label for purposes of the label swapping needed to switch packets towards a given destination or for a given VC. Also, the labels refer to destinations or associations between a source and a destination. The mapping established at a node between a destination (or VC) and an incoming label (called a VC local identifier, path number, or tag, for example) is disseminated among neighbor nodes by means of explicit exchanges of control information. This signaling is earned out in addition to the signaling required to maintain routing tables based on destination addresses. Further, the unique addresses of both the sending and receiving nodes are specified in the headers of the packets being forwarded by means of label swapping. This information is used to ensure that only the receiving node addressed in the packet accepts the packet and associates the label in the packet with the correct outgoing label.
Furthermore, the descnptions of tag switching and IP switching assume the existence of a loop detection mechanism when switches establish their label-to- destination mappings. A loop consists of the forwarding along a loop of packets that set up label-swapping states in the routers, until an external action is taken, such as exhausting a "time to live" for the packet. The loop detection mechanism adopted in these pπor schemes consists of using a path vector in the header of packets that establishes the binding between the labels used to forward traffic The path vector in a state setup packet specifies the routers that have been visited by the packet Another technique used to cope with the looping of state setup packets is to simply decrement a time-to-live field in the packet header to allow the packet to visit a maximum number of hops trying to set up state Loop detection is still an open issue under discussion for
MPLS
The differences among the label swapping or label switching schemes proposed to date e in the purpose for which a label state is established at the routers (e.g , destination onented, virtual circuits, etc ) and the specific mechanisms in the protocols used to set up the label-swapping state at the routers. The distnbution of label-binding information among routers in the pnor schemes can be charactenzed in two ways: piggybacking the distnbution on top of routing protocols, or using a separate protocol for label distnbution. Because the labels used in the above label switching proposals refer to either destinations or associations between sources and destinations, the routing protocols that can be used for the dissemination of such information are distance-vector or path-vector onented. To date, routing protocols based on link-state information (e.g., OSPF) have been considered to be poor choices for distributing label-binding information. B. Davie, P. Doolan, and Y. Rekhter, Switching in IP Networks, Morgan Kaufmann, 1998.
Source routing has also been implemented and used for routers, and can be considered a hybnd between datagram routing and label switching. With source routing applied to routers, the header of a packet specifies the source route consisting of the entire path from source to destination; the source route is specified in pnor routing schemes using the unique addresses of the routers in the path to the destination. A well- known example of this approach is the source route option in IPv4.
The source route can be obtained by the source of the packet in two ways. The router can compute the source route locally if it knows the entire network topology; alternatively, a path search packet can be sent hop-by-hop to the destination to gather the source route, and the destination can send a reply back to the source with the source route. All existing source routing proposals specify source routes in terms of the nodes along the path from source to destination.
SUMMARY OF THE INVENTION In one embodiment, a protocol for a computer network in which routing opeiation codes (ROCs) in headers of packets transmitted within the network specify to a receiv ing router which of a number of routing or switching methods to apply to foi waid associated packets The packets may be forwarded in any of the following modes (a) a bioadcast mode, (b) a hop-by-hop mode based on receiving node address intoimation, (c) a label swapping mode, (d) a source-switching mode, (e) a flow switching mode, or (f) a hop-by-hop mode based on sending mode address information
In the broadcast mode, packets transmitted by first router are accepted by all neighboring routers of the first router. In the hop-by-hop node based on receiving node address information, packets are accepted by the receiving router if the receiving node address information matches the receiving router's media access control address. In the label swapping mode, packets are accepted by the receiving router if the packets include a media access control address of the receiving router, and packets are forwarded from the receiving router according to a switching table indexed by a media access control address of a transmitting router. In the source switching mode, the headers include source routes specified in terms of local link identifiers used by routers in the network. In the flow switching mode, receiving routers are identified using local link identifiers associated with communication links between a transmitting router and an intended receiving router. In the hop-by-hop mode based on sending node address information, the headers include a media access control address of a transmitting router, which along with a local link identifier is used as a cntenon upon which a receiving router accepts or rejects a packet.
The local link identifiers may be obtained using either a flood search method or through a routing protocol operating within the network. In the source switching mode the receiving router forwards a received packet according to a local link identifier specified in a source route portion of an associated header.
In the flow switching node, flow states at routers of the network are established according to information in data packets transmitted within the network. The information included in the data packets allows for bindings between incoming and outgoing flow labels to be established at each of the routers. Such information may include a flow label and a source route to a destination node in the network.
In a further embodiment, forwarding a packet from a first router of a computer network to a second router thereof is achieved according to a routing operation code specified in a header of the packet. The routing operation code may specify any of the above modes and the value thereof determines what other types of information are included in the header of the packet. In some cases, the sending node address information (e g , its MAC address) is included in the header of the packet. Also included may be the receiving node address information (e g., MAC address), receiving node - assigned local link identifier, flow label and/or source route.
In the source switching mode, a sending node obtains a source route to an intended destination using either of a flood search process or a routing protocol operative within the computer network. In the source switching mode, the packet is forwaided from the first router by reading a source route specified in the header and substituting a transmitting router local link identifier and if present, a receiving router local link identifier, included in the header with corresponding values needed by the second router. In the flow switching mode, the packet is forwarded from the first router by reading a source route specified in the header and substituting a flow label included in the header with a corresponding value needed by the second router.
In some cases, the packet is a data packet that includes flow setup instructions for the second router. In such cases, the packet's header includes a MAC address of the first router and a local link identifier assigned by the first router and may also include a flow label and a source route or a flow label and a path traversed field.
In yet another embodiment, a packet header includes a routing operation code configured to indicate to a receiving router which of a variety of routing and/or switching methods to apply in forwarding an associated packet. Such routing and/or switching methods may be any of: (a) a broadcast mode, (b) a hop-by-hop mode based on address information regarding the receiving router, (c) a label swapping mode, (d) a source switching mode, (e) a flow switching mode, and (e) a hop-by-hop mode based on address information regarding a transmitting router. The routing operation code generally determines which of the following fields of information are included in packet header: (a) address information of the receiving router, (b) local link identifier information assigned by: (1) a transmitting router and/or (u) the receiving router, (c) a flow label, (d) a source route, (e) a path traversed, and (f) a payload type.
Another embodiment provides a router having a neighbor identification table configured to allow the router to determine whether a received packet should be accepted and, if so, which of a number of switching tables to access to retneve information for forwarding the packet within a computer network. The switching tables may include a source switching table, configured to provide packet forwarding information which the router is to use to forward the packet using a source switching process, and/or a flow switching table, configured to provide packet forwarding information when the router is to forward the packet using a flow switching process
The neighbor identification table is arranged so as to be indexed using local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto and/or to provide pointers to source switching and/or flow switching tables The source switching table is arranged so as to be indexed according to local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto
The flow switching table specifies mappings from incoming flows to outgoing flows, local link identifiers for next hops and associated link-level information
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements and in which:
Figure 1 illustrates an example of an ad hoc wireless network with routers configured m accordance with the present routing protocol;
Figure 2 illustrates an example of a packet header for transporting routing and switching information in accordance with an embodiment of the present invention;
Figure 3 illustrates an example of a router configured with switching tables in accordance with an embodiment of the present scheme;
Figure 4 illustrates an example of a neighbor identification table configured in accordance with an embodiment of the present scheme;
Figure 5 presents an example of local link identifiers assigned by routers of an ad hoc network;
Figure 6 illustrates an example of a neighbor identification table for one of the routers of the network shown in Figure 5;
Figure 7 illustrates an example of a source switching table for one of the routers of the network shown in Figure 5;
Figure 8 illustrates an example of a flow switching table for one of the routers of the network shown in Figure 5;
Figure 9 illustrates another example of a neighbor information table for a router of the network shown in Figure 5; Figure 10 illustrates another example of a source switching table for one of the routers of the network shown in Figure 5, and
Figure 1 1 illustrates another example of a flow switching table for one of the routers of the network shown in Figure 5
DETAILED DESCRIPTION
A scheme for integrating routing and switching in computer networks is disclosed herein Although discussed with reference to certain illustrated embodiments, upon review of this specification, those of ordinary skill in the art will recognize that the present scheme may find application in a vanety of systems Therefore, in the following description the illustrated embodiments should be regarded as exemplary only and should not be deemed to be limiting in scope
The present scheme enables multiple routing and switching methods in the same network Each packet being routed includes a routing operation code (ROC) instructing the receiving router which routing or switching method to apply to forward the packet. A packet can be forwarded in any of the following forwarding modes:
(a) a basic broadcast mode, in which the packet sent by a router is accepted by all its neighbors;
(b) a conventional hop-by-hop mode, in which the packet is accepted by a router based on the receiver MAC address specified in the packet header and then passed to a higher layer for further processing;
(c) a conventional label-swapping mode, which uses the unique MAC address of the receiver specified in the packet to decide whether to accept a packet or not, and uses the unique MAC address of the sender and a flow label to forward an accepted packet according to a switching table;
(d) a source-switching mode, in which the entire source route is specified m the packet using local link identifiers instead of the unique addresses of relay routers as is common in previous source routing approaches (this use of local link identifiers is further explored in co-pending Application No , entitled " System for Communicating Labeled Routing Trees to
Establish Preferred Paths and Source Routes with Local Identifiers in
Wireless Computer Networks", filed , assigned to the Assignee of the present invention and incorporated herein by reference; (e) a flow-switching mode, which differs from conventional switching methods based on label swapping in that only the unique MAC address of the sender of the packet is used and the receiver is identified by means of local link identifiers associated with the link between the sender and the intended receiver of the packet (see the above-cited co-pending application for further details); or
(f) a basic incremental (hop-by-hop) mode, in which the packet is accepted by a router based on the unique MAC address of the sender and one of multiple local link identifiers specified in the packet header. The packet is then passed to a higher layer for further processing and routing.
The vanous forwarding modes are enabled by a flow switching protocol.
In the first three of the above forwarding modes, packets are accepted based entirely on the MAC addresses of the sender and receiver nodes earned in the packet header. However, in the latter three forwarding modes, packets are accepted based on local link identifiers carried in the packet header. The local link identifiers assigned by the router to links with its neighbors and those assigned by the router's neighbors to links with the router can be obtained by the flow switching protocol through a channel access protocol, such as the one proposed in co-pending Application No. 09/248,738, entitled "Adaptive Communication Protocol for Wireless Networks", filed February 10, 1999, assigned to the Assignee of the present invention and incorporated herein by reference.
This flow switching protocol obtains source routes to destinations in one of two ways: (a) on demand, in which case search messages are sent out to obtain the source routes, or (b) by working in combination with a routing protocol that can provide source routes. These source routes are specified in terms of transmitter-assigned local link identifiers (LLIDs) given to the links along the path from the source router to the destination. In addition to saving communication bandwidth, using LLIDs permits the forwarding of packets with such source routes to be done using a direct index into a forwarding table, which can be easily done in hardware.
The source-switching mode is implemented by packet headers specifying a source route in terms of the address of the router that originated the packet and a sequence of LLIDs specifying the path to a destination, and by routers maintaining a table of all LLIDs assigned to the router by its neighbors. When a router receives a packet specifying source switching, the router accepts the packet based on the LLIDs specified for the next hop of the packet, and forwards the packet to the neighbor router indicated by the match between the LLID of the next hop specified in the source route and the LLIDs the router assigned to the links with its neighbors
The flow switching mode is implemented by routers maintaining a sw itching table similai to that used in label switching Routers can use either incremental or source-switching flow establishment, which processes are described below Both approaches use data packets to establish the flow state and the result of sending the flow establishment data packet is the establishment of the binding between incoming and outgoing flow labels at each router in the path from source to destination A packet intended for a flow that is already established specifies the flow switching mode in the ROC of the packet, the flow label assigned by the sending node, the address of the sending node, and the LLIDs assigned to the link in use by the sending and receiving node An entry in the flow-switching table is erased either after a timeout or the processing of a packet with an ROC with a flow-termination code
The flow state needed to carry out flow switching is established at routers by either flow establishment using source switching, or incremental flow establishment With flow establishment by source switching, the source of a packet stream or flow assigns a flow label to the flow and sends a first packet with a source route to the destination of the flow, the flow label for the flow, and an ROC instructing the relay routers to use source switching to forward the packet and to establish an entry in their flow switching tables for the flow as well. A relay router that receives the packet assigns a flow label to the flow, makes an entry in its flow-switching table with the mapping of the incoming and the outgoing flow labels and the associated neighbors along the path for the flow, and relays the packet with the same ROC, the new flow label, the source route, and an index to the source route pointing to the next-hop router as the first non-traversed hop of the source route.
With incremental (or hop-by-hop) flow establishment, the source and each relay router in the path from the source to the destination of the flow decides how the packet should be forwarded The ROC of the packet specifies hop-by-hop flow establishment, which instructs the router to look up its routing table to determine the next hop, and to establish the binding between incoming and outgoing flow labels. The header of the flow-establishment data packet carries a path vector specifying the source and the LLIDs of the routers visited by the flow-establishment data packet In one embodiment of the present scheme, source-switched flow establishment is adopted because the amount of information in the headers of flow-establishment packets is the same and the processing of packets in source switching mode is much faster than in hop-by-hop routing.
As in prior schemes, a router can assign a flow label to a packet flow in many different ways. One approach consists of using the same flow label for any flow intended for the same destination and the same type of service. Although many variations of packet switching based on label swapping and source routing have been implemented in the art. the present scheme is unique in a number of ways, including:
(a) It obtains local link identifiers of all the links needed to route or switch packets on a hop-by-hop or source route basis.
(b) It uses local link identifiers to identify the next router to process the packet, which makes more efficient use of bandwidth while still enabling the packet forwarding based on flow labels or source routes to be done in hardware.
(c) It switches packets from source to destination without the possibility of looping by specifying the LLIDs along the path in the packet headers, and enables this type of switching to be done in hardware.
(d) It can switch packets based on label swapping such that:
(i) The mapping between flow labels and neighbor nodes is established on demand (i.e., not for every destination or flow).
(ii) Data packets are used to set up flows, and there is no separate signaling protocol needed other than the routing instructions in the headers of the packets.
(iii) There is no looping of data packets used to set up flows. The flow switching protocol can be implemented at the link layer or below. It can be used to encapsulate IP packets directly, or to encapsulate MAC packets.
(e) It can switch packets from one router to one or multiple neighbors by specifying such neighbors using one or multiple local link identifiers.
The present scheme is well suited for wireless and wired networks and the IP internet, in which routers are interconnected by point-to-point or broadcast links (e.g., local area networks) to one another. The present invention is also well suited for an ad hoc network that provides a seamless extension of the IP Internet to the ad hoc wireless environment. Figure 1 illustrates aspects of an exemplary ad hoc internet.
Ad hoc network 10 may be considered as a number of sub-networks 12a, 12b, 12c, which provide an extension of the Internet 14 through a number of Internet Radios or IRs 16a- 16ι. Each IR 16a- 16ι is a wireless router with an assigned IP address and a
MAC address. In general. IRs I6a- 16ι operate over one or a multiplicity of radio channels using spread-spectrum w ireless communication techniques common in the art. For example, the IRs 16a- 16ι may operate in one of the unregulated UHF frequency bands, thereby obviating the need for operating licenses. Coupling of ad hoc network 10 to the Internet 14 is achieved through a router 18, which may be operated by an Internet Service Provider (ISP). As shown, a single ISP may operate a LAN 20 to which multiple IRs are connected. In such a scheme, IRs 16a and 16b may act as "AirHeads", providing gateway service to Internet 14 via router 18. Some IRs, e.g., IRs 16d and 16e of Figure 1 , may be associated with hosts, 22a, 22b and 22c, which can be accessed by any Internet user through ad hoc network 10. Like any router, each IR 16a-16ι processes all messages, changes in the cost of an adjacent link, adjacent-link failures, and new- neighbor notifications one at a time and in the order in which it detects them.
Any IR 16a- 16i in Figure 1 can consider another IR to be adjacent (we call such an IR a "neighbor") if there is radio connectivity between the two IRs and one IR, e.g., IR 16g, can receive and acknowledge packets from the other IR, e.g., IR 16h. Accordingly, a physical broadcast link connecting multiple IRs is mapped into multiple point-to-point bidirectional links defined for the same IRs. Each pair of adjacent IRs defines two point-to-point bidirectional links between them, one in each direction. Each point-to-point bidirectional link has a head node of the link and a tail node of the link.
As indicated above, the flow switching protocol for use in ad hoc network 10 in accordance with the present invention supports a variety of packet forwarding modes. This flow switching protocol obtains source routes to destination on demand, where source routes are specified in terms of transmitter-assigned LLIDs regarding the links along the path from the source router to the destination, or works in combination with a routing protocol capable of obtaining such source routes. The flow switching protocol then uses LLIDs to support the various packet forwarding modes. If the flow switching protocol is used in combination with a routing protocol that can provide source routes to destinations expressed in terms of the LLIDs of the links traversed in those routes, the flow switching protocol does not incur more traffic than that needed for the transfer of data packets themselves. In addition, the use of LLIDs in the forwarding modes of the flow switching protocol enables the implementation of all its packet forwarding functions in hardware. I. Deriving Source Routes with Local Link Identifiers
In one embodiment, the present scheme works in combination with a routing protocol that incorporates local link identifiers (LLIDs) as part of the routing information exchanged among routers. Such a routing protocol can be the Adaptive
Internet Routing (AIR) protocol described in co-pending Application No. , entitled " System for Communicating Labeled Routing Trees to Establish Preferred Paths and Source Routes with Local Identifiers in Wireless Computer Networks", in which routers communicate labeled routing trees (LRTs). A link from node x to node y in an LRT is given a local link identifier (LLID) by x, the head of link (x, y). A second example of a routing protocol that can be used in combination with the present scheme is a modification of a topology-broadcast protocol (e.g., OSPF J. Moy, "OSPF Version 2," RFC 1583, Network Working Group, March 1994) in which each directed link is assigned an LLID by the head of the link, and the LLID of a link is communicated in every link state update for that link. Still another example of a routing protocol that can be used in combination with the present invention is a modification of a path-vector protocol (e.g., BGP) such that the paths from source to destinations are specified in terms of both the routers used in the paths, as well as the LLIDs of the links in the same paths; the LLID of a link in a path is given by the head of that link.
The routing protocol assumed for the operation of the present scheme also provides a routing table with the distance and next hop to each destination. The source routes needed by a router can be computed on demand by the source of a packet that is to be source switched to the destination. Alternatively, the routing table may also include the source route specified in terms of LLIDs for each destination. Multiple routing entnes for the same destination may be provided, i.e., up to one entry per neighbor per destination, and one or multiple routing entnes may be provided for each type of service defined in the system.
The preferred approach for this embodiment would be based on its combined use with the Adaptive Internet Routing (AIR) protocol, simply because of the performance improvements denved from AIR compared to the other three alternatives listed above. Nevertheless, in another embodiment of the present invention, no routing protocol is assumed for its operation, and routes to destinations specified m terms of LLIDs may be obtained on demand. In this case, a router that onginates a packet for a destination and has no routing information for that destination may send search packets to its neighbors in order to find an intended destination The search packet sent to a given neighbor specifies the address of the intended destination, the address of the intended receiver of the packet, and a source route The source route of the packet is specified in terms of the address of the source router and the LLID assigned by the source router to the link with its neighbor A router receiving a search packet that does not have a routing entry for the intended destination forwards the packet to each of its neighbors other than the one from which the packet is received, and the packet specifies the address of the intended destination, the address of the intended receiver of the packet, and a source route with the LLID of the link from the sending router to the intended receiver added A router receiving the search packet that has a source route (specified terms of LLIDs of the links in the path to the destination) sends a reply with the entire source route consisting of the source router address and the sequence of LLIDs for all the links in the path to the destination
II. Information Contained in Packet Headers
In the present scheme, the header of a packet specifies a switching or routing instruction that instructs the router to process the packet in one of multiple possible switching or routing modes, and specifies the additional information needed for the router to carry out the operation. In an IP internetwork or an ad hoc network extending the IP Internet, the flow switching protocol of the present invention could be used to carry IP packets or it could be used to carry MAC-layer packets that in turn encapsulate IP packets. For purposes of clanty, we omit the descnption of conventional framing and error detection functionalities that may also be present in the packet header, and descnbe the operation of the flow switching protocol in general terms applicable to the forwarding of IP packets and MAC-layer packets.
Figure 2 presents a canonical packet-header format, which illustrates the type of routing and switching information used in one embodiment of the present scheme, as well as the combination of the vanous types of information. Vanous fields in the canonical packet header 30 can be required fields or optional fields. Some of the innovative features of canonical packet header 30 stem from the use in vanous combinations of switching and routing instructions, local link identifiers, source routes specified with local link identifiers, and other forwarding labels, to enable different routing and switching operations on data packets within the same unifying packet processing framework.
The canonical packet header descnption shown in Figure 2 omits framing and eπor checking fields that may be present in an actual implementation. It should be evident to those of ordinary skill in the art that, depending on a variety of implementation issues (e.g., bandwidth available in the communication links) this canonical format can be implemented in a vanety of ways, ranging from the number of bits used in each field and the the position of the fields in the packet header, to the use of extension headers in order to simplify the processing of the most commonly transmitted types of packets. In addition, the canonical packet header 30 descnbed herein can be part of a larger packet header.
A version (V) field 32 specifies the version of the protocol to be used to process the packet. The time to live (TTL) field 34 specifies an upper bound in terms of hops or time, beyond which the packet should be dropped to prevent packets from remaining in the network indefinitely. The reliability (R) field 36 specifies the degree of reliability with which the packet must be successfully forwarded by the router. The prionty (P) field 38 specifies the pnonty that the packet should be assigned in the transmission queues of the router. The payload type (LOAD) field 40 is optional and specifies the type of payload that follows the header; if the field is omitted the payload is assumed to be a packet using a predefined MAC protocol, such as the REALM protocol described in co-pending Application No. 09/248,738, entitled "Adaptive Communication Protocol for Wireless Networks".
The routing operation code (ROC) 42 specifies the instruction (e.g., in binary code format) to be used on the packet, i.e., how the packet should be processed. The value specified in the ROC field 42 determines which other fields should be present in the header 30. The routing and switching modes include but are not limited to: basic broadcast mode (ROC = 0), hop-by-hop mode (ROC = 1), label swapping mode (ROC = 2), source switching mode (ROC = 3), flow switching mode (ROC = 4), source- switched flow establishment (ROC = 5), and incremental flow establishment (ROC = 6).
The transmitter's MAC address (XADD) field 44 identifies the sender of the packet and should always be present in a packet header 30. The receiver's MAC address (RADD) field 46 is optional and identifies the receiver of the packet; the RADD is present in the header when the ROC specifies a routing or switching mode based on the sender and receiver MAC addresses; examples of these modes are normal packet routing and tag switching.
The transmitter-assigned link identifier (XLID) field 48 is optional and is present when the ROC specifies a forwarding operation in terms of the LLID of the link to the next hop for the packet. The XLID specifies the local link identifier assigned by the transmitter to the link with one of its neighbors. A router cannot assign the same XLID to more than one link with a neighbor.
The receiver-assigned link identifier (RLID) field 50 is optional and specifies the local link identifier assigned by the intended receiver of the packet to the link with the transmitting router. An RLID reported by router x in a packet destined for neighbor y is, therefore, the XLID that x knows y has assigned to the link (y, x). The RLID field 50 is present in the packet header 30 when the ROC specifies the source switch or flow switch mode and the lookup at the receiver is accomplished based on receiver-assigned link identifiers. When RLIDs are used in packet headers, a router accepts the packet based on the XADD, XLID, and RLID fields, 44, 48 and 50, of the header.
The flow label (FL) field 52 is optional and is present when the ROC specifies the flow switching mode. The FL specifies the label assigned to a flow of packets by the transmitting router. To minimize the number of flow labels routers have to remember, it may be assumed that a router assigns the same flow label to packets of the same traffic class flowing to the same destination.
The source route field 54 is optional and is present when the ROC specifies any forwarding operation involving source switching. It may include three sub-fields (not shown in detail), a hop count (HC) specifying the number of entries in the source route, a pointer to the next hop (PNH) indicating the XLID that the receiving router should read to forward the packet, and a source route (SR) consisting of one or more XLIDs.
The path-traversed field 56 is optional and is present when the ROC specifies hop-by-hop flow establishment. It includes of a hop count specifying the number of routers visited by the packet, and the ordered sequence of MAC addresses of the routers visited.
III. Switching Information Maintained at Routers
The switching information maintained at routers is used to switch packets below the IP layer. As will be apparent to those of ordinary skill in the art from the subsequent descnption, the introduction of XLIDs and RLIDs in the present scheme reduces the amount of bandwidth consumed by packet headers and, more importantly, enables the implementation of flow and souice switching modes in simple hardware This makes packet s itching according to the present invention much faster than routing packets by table lookups, even if the fast table lookup technology of prior schemes is utilized
As shown in Figure 3, each router 60 maintains three types of switching tables- a neighbor identification table (NIT) 62, a source switching table (SST) 64 and a flow switching table (FST) 66 for each neighbor The NIT 62 permits a router to determine if a received packet is intended for that router and, if so, which switching table to use to forward the packet. The SST 64 specifies the forwarding instructions a router should follow to forward packets in source switching mode. Each FST 66 specifies the mapping from a given incoming flow label to the outgoing flow label, the necessary LLIDs to identify the next hop, and the necessary link-level information for the transmission of the packet to the next hop.
Below are presented two examples for the maintenance of switching information in the present routing scheme, which embodiments differ depending upon whether or not receiver-assigned LLIDs are used for source switching or flow switching.
III.1. Information Stored for Switching
A. Using Transmitter-assigned LLIDs
In one embodiment of the present scheme, only transmitter-assigned LLIDs are used to identify links between neighbors. In this case, the RLLD field 50 is not used for flow switching or source switching, and the NIT 62 is indexed according to links incident into the router and provides pointers to the SST 64 and the FST 66 as needed.
More specifically, the keys for the NIT are the XLIDs reported by the neighbors of the receiving router for their links to that router. One or more neighbors of the subject router may use the same XLID value 48 to label their links to the router. Accordingly, as shown in Figure 4, the entry 68 in the NIT 62 is an array consisting of zero or more array entnes, each array entry coπesponding to a neighbor that uses the value of the XLID for a link to the router and including: (a) the MAC address of the neighbor and (b) a pointer to the FST of the neighbor. In one embodiment, a router has relatively few neighbors (e.g., up to 64 neighbors) and searching on the XLID as the key is, consequently, very fast. Furthermore, if a router has N neighbors, the total number of array entnes in the NIT 62 is N; hence, m the worst case a router has to search in a list of up to N entnes (either all its neighbors use different XLIDs for their links to the router, or all its neighbors use the same value of XLID for their links to the router)
Figure 5 shows an example network consisting of six routers (A - F) connected by point-to-point links Circles indicate routers and lines indicate the links between them The label inside a circle indicates the MAC address of the router, and the aπows and labels next to the links connecting the routers indicate the XLIDs assigned by a louter to each link with a neighbor For example, router A assigns XLID = 4 to its link with router E Note that no router assigns the same XLID to more than one link, and that multiple neighbor routers may use the same XLID for the same router For example, routers B and D assign XLID = 1 for their links with router A, and routers A and B assign XLID = 2 for their links with router D.
Continuing with the same example network, Figure 6 shows the NIT 62A at router A of Figure 5 Note that the index values used in the NIT 62A are those assigned by router A's neighbors to the links incident into router A, not XLID values assigned by router A to links outgoing from router A to its neighbors In the present example, router A has two neighbors, routers B and D, using the same value of XLID = 1 to refer to links incident into router A. This is not a problem due to the array structure of NIT 62A, which specifies the MAC address of each neighbor of router A using a given XLID to denote an incident link into router A and a pointer to the proper FST, which is to be used to process packets in flow switching mode. Note also that the NIT 62A of router A has only four table entnes, corresponding to four neighbors (B, D, C, and E).
Because a source route in a packet header specifies the next hop to which the receiving node should forward the packet, an SST 64 is indexed on the XLID values that the router assigns to its outgoing links with neighbors. Each entry in an SST 64 specifies an outgoing interface and link-level information for the transmission of the packet to the next hop. Continuing with the same example network of Figure 5, Figure 7 shows the SST 64A at router A; the MAC addresses of neighbor routers are shown in parenthesis since they are not stored in the SST. Note that the four entnes indexed by XLID value correspond to the four links going from router A to its neighbors.
As earlier stated, a router maintains a flow switching table (FST) 66 for each neighbor router. The FST for a given neighbor is indexed according to the values of the incoming flow labels used for flow switching. For a given value of an incoming flow label, the FST specifies the value of the outgoing flow label, link-level information for the transmission of the packet to the next hop, and the value of the XLID to be used when a packet is forwarded to the next hop in flow switching mode The use of the latter entry is unique in the present scheme relative to all prior packet switching techniques based on label swapping.
Using the same example network of Figure 5, Figure 8 shows the FST 66A at router A for its neighbor router D. It is assumed that two flows going from D to A have been established already One flow is identified with the incoming flow label fl l and the other with incoming flow label fl2 For fl l , the forwarding instruction in the FST
66A specifies that router A should swap fl 1 for fix when it forwards a packet for the corresponding flow, and that it should specify XLID = 1 in the packet header and forward the packet to neighbor router B. The routing instruction also specifies all the necessary link-level information, which is dependent on the type of network being used
(e g., an ad hoc network or a wired network).
III.2. Information Stored for Switching Using Receiver- and Transmitter- assigned
LLIDs In an alternative embodiment of the present scheme, routers use the receiver- assigned link identifier (RLID) field 50 to identify a given link with the local link identifiers assigned by each end of the link. The headers of packets to be forwarded according to source switching and flow switching specify the RLID in addition to the XLID.
In this embodiment, the NIT at each router is indexed by the RLED, i.e., the local link identifier assigned by the router to its outgoing links, which is specified by a neighbor router in the header of the packet. The NIT entry for a given value of the RLID specifies the MAC address of a neighbor, the XLID assigned to the link by the router, and a pointer to the FST for that neighbor. Continuing with the same example network of Figure 5, we note that any router knows the LLID assigned by each of its neighbors to the link from the neighbor to the router. Router A, for example, knows that router E assigned the LLID = 3 to the link from E to A. This information can be made available to the flow switching protocol by different means, including an underlying channel access layer and a routing protocol.
Figure 9 shows the NIT 70A at router A of Figure 5. Note that the index values used in the NIT 70A are now the RLIDs assigned by the subject router to each of its neighbors, and all such RLIDs are different from each other. The NIT 70A specifies the MAC address of a neighbor, the LLID assigned by the neighbor to the link with the router, and a pointer to the FST used when packets are flow switched.
A router accepts a packet based on the values of the XADD, XLID, and RLID fields, 44, 48 and 50, of the packet header. More specifically, the RLID field 50 identifies the entry of the NIT that should be further examined, if no entry of the NIT is labeled with a value equal to the RLID of the packet, the packet is discarded. If the XADD and XLID do not correspond to the MAC and LLID values of the NIT entry specified by the RLID value, the packet is discarded.
The SST is indexed on the XLID values that the subject router assigns to its outgoing links with neighbors. Each entry in the SST specifies the LLID assigned to the link by the neighbor router (RLID to be used in a packet header), outgoing interface, and link-level information for the transmission of the packet to the next hop. Continuing with the same example network of Figure 5, Figure 10 shows the SST 72A at router A.
The FST for a given neighbor specifies, for a given value of an incoming flow label, the value of the outgoing flow label, link-level information for the transmission of the packet to the next hop, and the value of the XLID and RLID to be used when a packet is forwarded to the next hop in flow switching mode. Using the same example network of Figure 5, Figure 11 shows the FST 74A at router A for its neighbor router D. It is assumed that two flows going from D to A have been established already. One flow is identified with the incoming flow label fll and the other with incoming flow label fl2. For fll, the forwarding instruction in the FST 74A specifies that router A should swap fll for fix when it forwards a packet for the corresponding flow, and that it should specify XLID = 1 in the packet header and forward the packet to neighbor router B.
IV. Packet Forwarding Modes
We now describe how the present scheme supports a number of routing and switching modes of packet forwarding operations based on the information specified in packet headers and routing and switching information maintained at routers. The overall handling of packets by the present flow switching protocol can be described by the following pseudo-code.
Procedure Process-Packet { called by packet arriving at router} do CASE
ROC = 0: call Broadcasting
ROC = l : call Hop_by_Hop
ROC = 2: call Label_Swappιng
ROC = 3: call Source_Swιtchιng
ROC = 4: call Flow_Swιtchιng
ROC = 5: call Source_Swιtched_Flow
ROC = 6: call Incremental_Flow
ROC = 7: call Incremental_Swιtchιng End Process-Packet
In the following, we descnbe each packet forwarding mode used to process packets. This descnption considers the two alternative embodiments discussed above.
IV.1. Basic Broadcasting and Conventional Point-to-Point Transmissions A router sends a packet with a header specifying ROC = 0 to force all its neighbors process the packet and pass it to a higher layer, where additional processing takes place. A router receiving a packet with its header specifying ROC = 0 simply accepts the packet and passes it to the higher layer. This packet-forwarding mode could be used to support network-layer control functions requiπng routers to communicate with all their neighbors.
The point-to-point mode is used to simply pass information from one router to one of its neighbors or to a subset of its neighbors using a multicast MAC address. In this case, the header of the packet specifies ROC = 1 and includes the RADD field 46. A router that receives the packet with ROC = 1 accepts the packet if the RADD in the packet header equals the router's own MAC address or a multicast MAC address to which the router belongs. In such a case, the accepted packet can be routed at the higher layer (e.g., the IP layer) using a standard routing table based on destination addresses. The final destination of the packet or a conventional source route should be included in the payload that follows the packet header, just as is the case for IP packets encapsulated in frames that are formatted according to IEEE Standard 802.3.
IV.2. Conventional Label Swapping In the label-swapping mode, the header of a packet specifies ROC = 2 and includes the RADD and FL fields 46 and 52. Packets are switched to their destinations in much the same way as in other protocols based on local VC identifiers. A router accepts a packet based on the RADD in the header, and the accepted packet is forwarded by swapping the incoming flow label in the header with the outgoing flow label stored in a flow switching table stored at the router and indexed by the incoming flow label and the MAC address of the neighbors of the router. In this mode of operation, the difference between the present scheme and earlier ones stems from the way in which routers can establish the label swapping state using source switching.
IV.3. Source Switching
The source switching mode is unique to the present scheme. In source switching mode, the router that originates the packet first obtains the source route to the intended destination in terms of the LLIDs assigned to the links along the path from source to destination. As earlier established, the router obtains this information either through the routing protocol used in combination with this routing scheme, or by means of control search packets disseminated in the network.
Once a router has a source route based on LLIDs to the intended destination, it forwards a packet specifying the source-switching mode (ROC = 3) to the next-hop router along the source route to the destination. The header of such a packet also contains the XLID assigned by the router to the link with the next hop of the source route, the router's own MAC address, the source route to the destination specified as a sequence of XLIDs, and a pointer into the source route informing its neighbor which is the next hop that the neighbor should examine. If receiver-assigned LLIDs are used, the header also contains the RLID assigned by the intended receiver to the link with the router sending the packet.
A packet is source switched at every hop by reading the source route in the packet header and substituting the XLID, and if present the RLID, specified in the header to allow the router to accept the packet with the XLID, and RLID if present, needed by the next hop.
Note that although LLIDs are swapped at each router, the labels used in source switching are very different than those used in the label switching approaches of the past, because they refer to the links over which the packet must flow, rather than the destination, or association from source to destination, for which the packet is intended. Another approach to source switching would consist of specifying the MAC address of the next hop in the source route along with the source route specified in terms of LLIDs. Such a variation of the source switching approach could be used when channel bandwidth is not at a premium. The packet header in this forwarding mode would specify the source route field and would substitute the XLID field 48 for the
RADD field 46. A router can then accept a packet based on the MAC address of the intended receiver specified in the header. However, given that LLIDs have to be used to provide a simple index to the SST, there may be little or no advantage to using the MAC address of the receiver rather than the LLID of the link to the same router.
IV.3. a. Source Switching Using Receiver- and Transmitter-assigned
LLIDs
The switching operation at a router when receiver-assigned LLIDs are used in packet headers consists of accepting the packet and forwarding the packet, if accepted. The following pseudo-code specifies the procedure formally, which operations can be implemented in hardware or software.
First, the router decides whether to accept the packet or not based on the XADD, XLID, and RLID fields, 44, 48 and 50, of the packet header, which must match with one entry in the NIT 62 of the router. The XADD and XLID identify the link from neighbor to router; however, to permit the router receiving the packet to scan its NIT 62 using a simple index, the RLID given to the link from the router to the neighbor is also included in the packet. Accordingly, the router can scan its NIT 62 using the received RLID as the key, and decide whether or not to accept the packet by matching the XADD and XLID from the packet with the MAC address and LLID stored in its NIT 62.
If the packet is accepted, the router scans its SST 64 based on the XLID of the packet. To forward the packet to the next hop, it advances the PNH of the source route field 54 of the packet, and substitutes the XLLD and RLID received with those expected by the next hop. The packet is then forwarded according to the link-level information for the next hop maintained in the SST 64.
The key advantage of this approach to source switching is that the look up in the NIT 62 is based on a simple key, and the added overhead of including the receiver- assigned LLID of a link (RLID) is minimal, because a router has a relatively small number of neighbors, which means that the lengths of the XLID and RLID fields 48 and 50 are small. SR: Source route specified in packet header.
NIT: Neighbor identification table.
SST: Source switching table.
XLID: Transmitter-assigned link identifier specified in packet header.
RLID: Receiver-assigned link identifier specified in packet header.
XADD: Transmitter's MAC address specified in packet header.
NIT.rlid: Any LLID in NIT assigned by router to a link with a neighbor.
NIT(RLJD): Row of the NIT specified by RLID.
NIT(RLID).mac: MAC address stored in NIT entry specified by RLID value.
NIT(RLID).xlid: LLID assigned by neighbor to link with router and stored in NIT entry specified by RLID value.
PNH(SR): Local link identifier specified by the pointer to the next hop (PNH) in packet header
SST.xlid: Any local link identifier in SST assigned to an outgoing link.
SST(XLID).rlid: LLID assigned by neighbor to its link with router and stored in SST entry specified by XLID value.
Procedure Source_Switching
{called when packet with ROC = 3 is received}
1. If ( XADD != NIT(RLID).mac or XLID != NIT(RLID).xIid ) then reject packet and return
2. If ( PNH(SR) != SST.xlid ) then reject packet and return
3. XLID <- PNH(SR)
4. RLID <- SST(XLID).rlid
5. PNH <- PNH + 1
6. Forward packet according to forwarding instructions for SST(XLID)
End Source_Switching
IV.3. b. Source Switching Using Transmitter- Assigned Local Link identifiers
A router receiving a packet specifying source switching may process the packet using the simple procedure specified in pseudo-code below. First, the router decides whether to accept the packet or not based on the XADD and XLJD fields, 44 and 48, of the packet header, which must match with one array entry 68 in its NIT 62. The XLID and XADD uniquely identify a receiver router, because MAC addresses are unique and no router assigns the same XLID to more than one neighbor. Furthermore, searching the NIT 62 for a match between the packet's XLID and a LLED assigned to the router by one of its neighbors is very fast, because the router can have no more LLIDs assigned to it than the neighbors it has, and given a match with the packet's XLID searching for a match between the packet's XADD and the MAC addresses of the neighbors that assigned the same LLID to the router is very fast, because only a subset of the router's neighbors can use the same LLID for their links to the router.
If the packet is accepted, the router scans its SST 64 based on the XLID of the packet. To forward the packet, the router substitutes the XLID with the LLID conesponding to the PNH value of the source route and increments the PNH of the packet header. The packet is then forwarded according to the link-level information maintained in the SST 64 for the next hop in the route The following pseudo-code formally specifies this simple procedure.
SR Source route specified in packet header
PNH(SR): Local link identifier specified by the pointer to the next hop (PNH) in packet header
NIT: Neighbor identification table.
SST: Source switching table.
XLID: Transmitter-assigned link identifier specified in packet header.
XADD: Transmitter's MAC address specified in packet header.
NIT.x d: Any LLID in NIT assigned by a neighbor to the link with the router.
NIT(XLID): Row of the NIT specified by XLID.
SST(XLID): Row of the SST specified by XLID.
NTT(XLID).mac: Any MAC address in the row of the NIT specified by
XLID.
SST.xlid: Any local link identifier in SST assigned to an outgoing link.
Procedure Source_Switching
{ called when packet with ROC = 3 is received }
1. If ( XLID != NIT.xlid ) then reject packet and return
2. NIT(x) <- 1
3. found <- false
4. While not (found) do found <- NIT(x).mac and XADD NIT(x) <- NIT(x) + 1
5. If ( not found ) then reject packet and return 6. If ( PNH(SR) != SST.xlid ) then reject packet and return
7. XLID <- PNH(SR)
8. PNH <- PNH + 1
9. Forward packet according to forwarding instructions for SST(XLED)
End Source_Switching The above procedure can also be implemented in hardware or software.
IV.4. Flow Switching
The flow switching mode is unique to the present scheme and provides for packet switching using label swapping without the need to specify the MAC address of the receiver of the packet. This is accomplished by using the same approach used for source switching to determine when a packet should be accepted. If a match is found in the NIT 62 for the tuple formed by the XLID and XADD of the packet, or for the tuple formed by RLID, XLID, and XADD, if receiver-assigned LLIDs are used, the NIT 62 provides a pointer to the flow switching table (FST) 66 maintained for the neighbor that sent the packet.
The FST 66 maintains the mapping between the flow label specified in the packet and the flow label to be used for the next hop, together with the LLID of the link to the next hop and any outgoing link-level information. If RLIDs are used in packet headers, the FST 66 also specifies the RLID to be included in the header of the outgoing packet.
To forward a received packet, the subject router substitutes in the outgoing packet the values of either FL and XLID, or FL, XLID, and RLID in the header of the received packet with the entries specified in the FST 66 for the next hop of the packet. The following pseudo-code specifies the procedure used for flow switching when RLIDs are included in packet headers.
NIT: Neighbor identification table.
FST_p: The flow switching table specified by the pointer p.
XLID: Transmitter-assigned link identifier specified in packet header.
RLID: receiver-assigned link identifier specified in packet header.
FL: Flow label specified in packet header.
FST_p(IFL): Forwarding instruction in FST_p for incoming flow label specified by BFL
FST_p.ifl: Any incoming flow label in FST_p.
FST_p(FL).ofl Outgoing flow label in the entry for incoming flow label FL in FST_p.
FST_p(FL).xhd: LLID assigned by router to link with neighbor and stored in FST_p entry specified by FL. FST_p(FL).rhd. LLID assigned by neighbor to link with router and stored in FST_p entry specified by FL.
NIT(RLID).mac: MAC address stored in NIT entry specified by
RLID.
NIT(RLID).xhd: LLID assigned by neighbor to link with the router
Figure imgf000031_0001
NIT entry specified by RLID.
NIT(RLID).ptr: Pointer to an FST in NIT entry specified by RLID.
Procedure Flow_Swιtching
{called when packet with ROC = 4 is received}
1. If ( XADD != NIT(RLID).mac or XLID != NIT(RLID).xhd ) then reject packet and return
2. p <- NIT(RLID).ptr
3. If ( FL != FST_p.ifl ) then reject packet and return
4. LFL <- FL
5. XLID <- FST_p(FL).xlid 6. RLJD <- FST_p(FL).rlid
7. FL <- FST_p(FL).ofl
8. Forward packet according to forwarding instructions for FST_p(IFL)
End Flow_Swιtchιng The following pseudo-code specifies the procedure used for flow switching when no RLIDs are used in packet headers.
NIT: Neighbor identification table. FST_p: The flow switching table specified by the pointer P-
XLID: Transmitter-assigned link identifier specified in packet header.
FL: Flow label specified in packet header
XADD: Transmitter's MAC address specified in packet header.
NIT.xlid: Any LLID in NIT assigned by a neighbor to the link with the router.
NIT(XLID): Row of the NIT specified by XLID.
NIT(XLID).mac: Any MAC address in the row of the NIT specified by
XLID.
FST_p.ifl: Any incoming flow label in FST_p.
FST_p(FL).ofl Outgoing flow label in the entry for incoming flow label FL in FST_p.
FST_p(FL).xlid LLID in the entry for incoming flow label FL in
FST_p.
NIT(XLID,XADD).ptr: Pointer to an FST for neighbor with MAC address that matches XADD in NIT entry specified by XLID.
Procedure Flow_Switching {called when packet with ROC = 4 is received}
1. If ( XLID != NIT.xlid ) then reject packet and return
2. NIT(x) <- 1
3. found <- false
4. While not (found) do found <- NIT(x).mac and XADD NIT(x) <- NIT(x) + 1
5. If ( not found ) then reject packet and return
6. p <- NIT(XLID,XADD).ptr
7. If ( FL != FST_p.ifl ) then reject packet and return
8. IFL <- FL
9. XLID <- FST_p(FL).xlid
10. FL <- FST_p(FL).ofl
11. Forward packet according to forwarding instructions for FST(IFL)
End Flow_Switching
IV.5. Incremental Switching
With incremental switching, a packet is accepted by a router based on the XADD, XLID, and RLID specified in the header using the same approach described for source switching. The accepted packet is then passed to a higher layer for further processing, which may include routing at the network layer.
V. Establishing Flow State at Routers
In the present scheme, flow state may be established either incrementally or using source routes, and establishing flow state amounts to another packet forwarding mode, i.e., flow state is established by forwarding data packets. A router that decides to establish flow state along a loop-free path to a destination first obtains the source route to the destination in the same way as in source switching mode. Once the router obtains a source route, it sends a source-switched data packet with flow setup instructions, so that flow state can be set as the packet traverses the source route to the destination. The header of the packet specifies: the source-switched flow establishment operation code (ROC = 5). the MAC address o( the transmitting router (XADD), the XLID of the link to the next hop. a flow label (FL), and the source route field 54.
When a i outer receives a packet with the source-switched flow establishment operation code, it establishes flow state and forwards the packet according to source switching. The router determines whether to accept the packet or not based on the XADD. XLID. and RLID fields, 44. 48 and 50, of the header, or the XADD an XLID fields, 44 and 48, only, if no RLIDs are used to implement source switching and flow switching. If the packet is accepted, the receiving router establishes an entry in the FST 66 for its neighbor; in such an entry the FL received in the packet is mapped into an outgoing flow label created by the router and the XLID and, if applicable, the RLID of the next hop in the source route specified in the packet. The router forwards the packet as in the case of source-switching mode, together with the swapping of flow labels.
The following pseudo-code describes the procedure used when RLIDs are used in packet headers in the present scheme.
SR: Source route specified in packet header.
NIT: Neighbor identification table.
SST: Source switching table.
XLID: Transmitter-assigned link identifier specified in packet header.
RLID: Receiver-assigned link identifier specified in packet header.
XADD: Transmitter's MAC address specified in packet header. NIT i lid Any LLID in NIT assigned by router to a link with a neighbor
NIT(RLID): Row of the NIT specified by RLID
SST(XLID)- Row of the SST specified by XLID
NIT(RLID) mac- MAC address stored in NIT entry specified by
RLID value.
NIT(RLID).xhd- LLID assigned by neighbor to link with router and stored in NIT entry specified by RLID value.
PNH(SR): Local link identifier specified by the pointer to the next hop (PNH) in packet header
SST.xlid: Any local link identifier in SST assigned to an outgoing link.
SST(XLID).rhd: LLID assigned by neighbor to its link with router and stored in SST entry specified by XLID value.
Procedure Source_Swιtched_Flow
{called when packet with ROC = 3 is received}
1. If ( XADD != NIT(RLID).mac or XLID != NIT(RLID).xhd ) then reject packet and return
2. If ( PNH(SR) != SST.xlid ) then reject packet and return
3. p <- NIT(RLID).ptr 4 Create new entry in FST_p tor FL XLID <- PNH(SR)
6 RLID <- SST(XLID) ι d
7 PNH <- PNH + 1
8 Foiward packet according to foiwarding instructions for SST(XLID)
End Source_Swιtched_Flow The following pseudo-code specifies the proceduie used to establish flow state with souice switching when RLIDs are not used in packet headers.
SR Source route specified in packet header
PNH(SR) Local link identifier specified by the pointer to the next hop (PNH) packet header.
NIT: Neighbor identification table.
SST: Source switching table.
XLID: Transmitter-assigned link identifier specified in packet header.
XADD: Transmitter's MAC address specified in packet header.
FL. Flow label specified in packet header
NIT(XLID): Row of the NIT specified by XLID.
NIT(XLID).mac: Any MAC address in the row of the NIT specified by XLID. SST.xlid: Anv local link identifier in SST assigned to an outgoing link.
NIT(XLID,XADD).ptr: Pointer to an FST for neighbor with MAC address that matches XADD in NIT row given by XLID.
FST_p(FL).ofl Outgoing flow label in the entry for
flow label FL in FST_p.
FST_p(FL).xlid LLID in the entry for incoming flow label FL in
FST_p.
Procedure Source_Switched_Flow
{called when packet with ROC = 5 is received}
1. If ( XLID != NIT.xlid ) then reject packet and return
2. NIT(x) <- 1
3. found <- false
4. While not (found) do found <- NIT(x).mac and XADD NIT(x) <- NIT(x) + 1
5. If ( not found ) then reject packet and return
6. If ( PNH(SR) != SST.xlid ) then reject packet and return
7. p <- NIT(XLID,XADD).ptr 8. Create new entry in FST_p for FL
8.a. FST_p(FL).ofl <- new on for FST_p S.b. FST _p(FL).xlid <- PNH(SR)
9. XLID <- PNH(SR) 10. PNH <- PNH + 1 l l . FL <- FST_p(FL).oπ
12. Forward packet according to forwarding instructions for SST(XLID) End Source_Switched_Flow
If the present scheme is used in combination with a routing protocol, flow state can also be established incrementally. In this case, the router obtains the next hop to a destination from its routing table and forwards a data packet with the following control information in its header: the ROC = 6, the MAC address of the router (XADD), the XLID of the link to the next hop, a flow label (FL), and the path-traversed field 56. The path-traversed field 56 specifies the path traversed by the packet from its origin to the present hop in terms of the MAC addresses of each hop visited by the packet.
A router that receives the packet with ROC = 6 accepts it based on the XLID, XADD tuple. The router then determines if the packet has visited the router before and, if so, discards the packet. If no such loop is detected, the router then consults its routing table and obtains the LLID for the link to its next hop to the intended destination. Note that the address of the destination is specified in the payload of the packet, not in its header. Once the next hop and the LLID for the next hop are obtained, the router installs the mapping between the FL (incoming flow label) of the received packet and a new outgoing flow label and the LLID for the next hop towards the destination (obtained from its routing table). The router then substitutes FL with its outgoing flow label for the destination, adds its MAC address to the path-traversed field 56, and sends the packet to the next hop. Thus, although such an approach is viable, the preferred approach to flow setup is source-routed flow setup, because it incurs much less communication and processing overhead.
Thus, a scheme for routing and switching in computer networks has been described. Although discussed with reference to certain illustrated embodiments, however, the more general applicability of the following claims should not be limited thereby.

Claims

What is claimed is:
1 A protocol for a computer netw ork in which routing operation codes (ROCs) in headers oi' packets transmitted w ithin the network specify to a receiving router which of a number of routing or switching methods to apply to forward associated packets.
2. The protocol of claim 1 herein packets can be forwarded in any of the following modes: (a) a broadcast mode, (b) a hop-by-hop mode based on receiving mode address information, (c) a label swapping mode, (d) a source-switching mode, (e) a flow switching mode, or (0 a hop-by-hop mode based on sending mode address information.
3. The protocol of claim 2 wherein in the broadcast mode packets transmitted by first router are accepted by all neighboring routers of the first router.
4. The protocol of claim 2 wherein in the hop-by-hop mode based on receiving mode address information packets are accepted by the receiving router if the receiving mode address information matches the receiving router's media access control address.
5. The protocol of claim 2 wherein in the label swapping mode packets are accepted by the receiving router if the packets include a media access control address of the receiving router.
6. The protocol of claim 5 wherein in the label swapping mode packets are forwarded from the receiving router according to a switching table indexed by a media access control address of a transmitting router.
7. The protocol of claim 2 wherein in the source switching mode the headers include source routes specified in terms of local link identifiers used by routers in the network.
8. The protocol of claim 2 wherein in the flow switching mode receiving routers are identified using local link identifiers associated with communication links between a transmitting router and an intended receiving router.
9. The protocol of claim 2 wherein in the hop-by-hop mode based on sending mode address information, the headers include a media access control address of a transmitting router, which along with a local link identifier is used as a cntenon upon which a receiving router accepts or rejects a packet.
10 The protocol of claim 2 wheiein in the (d) source-switching, (e) flow switching and (f) hop-by-hop modes, packets aie accepted at the receiving louter based local link identi fiers included in the headers
1 1 The protocol of claim 10 wheiein the local link identifiers aie obtained using either a flood seaich method oi through a routing protocol operating within the network
12 The protocol of claim 2 wherein in the source switching mode the receiving router foiwaids a leceived packet according to a local link identifier specified in a source route portion of an associated header
13 The protocol of claim 2 wherein in the flow switching mode, flow states at routers of the network aie established according to information in data packets transmitted within the network
14 The protocol of claim 13 wherein the information included in the data packets allows for bindings between incoming and outgoing flow labels to be established at each of the routers
15 The protocol of claim 13 wherein the information included in data packets compnses a flow label and a source route to a destination node in the network.
16. A method compnsing forwarding from a first router of a computer network to a second router thereof a packet according to a routing operation code specified in a header of the packet.
17 The method of claim 16 wherein the routing operation code specifies at least one of the following forwarding procedures: (a) a broadcast mode, (b) a hop-by-hop mode based on receiving node address information, (c) a label swapping mode, and (d) a source switching mode, (e) a flow switching mode, and (f) a hop-by-hop mode based on sending node address information.
18. The method of claim 17 wherein a value of the routing operation code determines what other types of information are included in the header of the packet.
19. The method of claim 18 wherein the sending node address information is always included in the header of the packet.
20 The method of claim 19 wherein the sending node address information compnses a medium access code address
21. The method of claim 18 wherein the receiving node address information compnses a medium access code address of a receiving router.
22. The method of claim 18 w herein the header of the packet includes a receiving node - assigned local link identifier if the routing operation code specifies the source switching or flow switching modes.
23. The protocol of claim 18 wherein the header of the packet includes a flow label if the routing operation code specifies the flow switching mode.
24. The method of claim 18 wherein the header of the packet includes a source route if the routing operation code specifies the source switching mode.
25. The method of claim 17 wherein in the source switching mode a sending node obtains a source route to an intended destination using either of a flood search process or a routing protocol operative within the computer network.
26. The method of claim 17 wherein in the source switching mode the packet is forwarded from the first router by reading a source route specified in the header and substituting a transmitting router local link identifier and if present, a receiving router local link identifier included in the header with conesponding values needed by the second router.
27. The method of claim 17 wherein in the flow switching mode the packet is forwarded from the first router by reading a source route specified in the header and substituting a flow label including in the header with a corresponding value needed by the second router.
28. The method of claim 16 wherein the packet comprises a data packet that includes flow setup instructions for the second router.
29. The method of claim 28 wherein the header includes a medium access control address of the first router and a local link identifier assigned by the first router.
30. The method of claim 29 wherein the header further includes a flow label and a source route.
31. The method of claim 29 wherein the header further includes a flow label and a path traversed field.
32. A packet header comprising a routing operation code configured to indicate to a receiving router which of a variety of routing and/or switching methods to apply in forwarding an associated packet.
33. The packet header of claim 32 wherein the routing and/or switching methods are chosen from the list consisting of: (a) a broadcast mode, (b) a hop-by-hop mode based on address information regarding the receiving router, (c) a label swapping mode, (d) a source switching mode, (e) a flow switching mode, and (e) a hop-by-hop mode based on address information regarding a transmitting router.
34. The packet header of claim 32 wherein the routing operation code determines which of the following fields of information are included in packet header: (a) address information of the receiving router, (b) local link identifier information assigned by: (i) a transmitting router and or (ii) the receiving router, (c) a flow label, (d) a source route, (e) a path traversed, and (0 a payload type.
35. A router comprising a neighbor identification table configured to allow the router to determine whether a received packet should be accepted and, if so, which of a number of switching tables to access to retrieve information for forwarding the packet within a computer network.
36. The router of claim 35 wherein the switching tables include a source switching table configured to provide packet forwarding information which the router is to use to forward the packet using a source switching process.
37. The router of claim 36 wherein the switching tables further include a flow switching table configured to provide packet forwarding information when the router is to forward the packet using a flow switching process.
38. The router of claim 37 wherein the flow switching table specifies mappings from incoming flows to outgoing flows, local link identifiers for next hops and associated link-level information.
39. The router of claim 35 wherein the neighbor identification table is arranged so as to be indexed using local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto.
40. The router of claim 35 wherein the neighbor identification table is further aπanged to provide pointers to source switching and or flow switching tables.
41. The router of claim 35 w herein the neighbor identification table is ananged so as to be indexed using local link identifiers assigned by the router to links to neighboring routers.
42 The router of claim 40 wherein the source switching table is arranged so as to be indexed according to local link identifiers assigned by neighboring routers to links communicatively coupling the router thereto.
PCT/US2000/041173 1999-10-15 2000-10-16 System for routing and switching in computer networks WO2001030034A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP00981033A EP1256208A2 (en) 1999-10-15 2000-10-16 System for routing and switching in computer networks
AU18214/01A AU777159B2 (en) 1999-10-15 2000-10-16 System for routing and switching in computer networks
CA002388000A CA2388000A1 (en) 1999-10-15 2000-10-16 System for routing and switching in computer networks

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/418,898 1999-10-15
US09/418,898 US6683865B1 (en) 1999-10-15 1999-10-15 System for routing and switching in computer networks

Publications (3)

Publication Number Publication Date
WO2001030034A2 true WO2001030034A2 (en) 2001-04-26
WO2001030034A3 WO2001030034A3 (en) 2002-02-14
WO2001030034A9 WO2001030034A9 (en) 2002-08-01

Family

ID=23660008

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/041173 WO2001030034A2 (en) 1999-10-15 2000-10-16 System for routing and switching in computer networks

Country Status (5)

Country Link
US (1) US6683865B1 (en)
EP (1) EP1256208A2 (en)
AU (1) AU777159B2 (en)
CA (1) CA2388000A1 (en)
WO (1) WO2001030034A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003021879A1 (en) * 2001-08-31 2003-03-13 Motorola, Inc. Vehicle active network topologies
WO2003028315A1 (en) * 2001-09-27 2003-04-03 Telefonaktiebolaget Lm Ericsson Method for multihop routing for distributed wlan networks
EP1320224A1 (en) * 2001-12-12 2003-06-18 Alcatel Telecommunications network and a packet header therefor
CN100417132C (en) * 2003-12-09 2008-09-03 国际商业机器公司 System and method for maximizing packet transmission efficiency in communication network
EP1983697A1 (en) 2007-04-16 2008-10-22 Nokia Siemens Networks Oy Method for forwarding data of a data packet and device
EP2365666A1 (en) * 2003-02-03 2011-09-14 Nippon Telegraph And Telephone Corporation Data transfer apparatus and data transfer system
WO2016057379A1 (en) * 2014-10-06 2016-04-14 Huawei Technologies Co., Ltd. Reverse path validation for source routed networks

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797367B1 (en) * 1999-10-06 2010-09-14 Gelvin David C Apparatus for compact internetworked wireless integrated network sensors (WINS)
US20010030969A1 (en) * 1999-11-30 2001-10-18 Donaghey Robert J. Systems and methods for implementing global virtual circuits in packet-switched networks
US20020009088A1 (en) * 1999-11-30 2002-01-24 Donaghey Robert J. Systems and methods for negotiating virtual circuit paths in packet switched networks
US7106747B2 (en) * 1999-11-30 2006-09-12 Level 3 Communications, Llc Systems and methods for implementing second-link routing in packet switched networks
US20020091855A1 (en) * 2000-02-02 2002-07-11 Yechiam Yemini Method and apparatus for dynamically addressing and routing in a data network
JP2001251351A (en) * 2000-03-02 2001-09-14 Nec Corp Input packet processing system for packet switch
US6819908B2 (en) * 2000-03-11 2004-11-16 Hewlett-Packard Development Company L.P. Limiting message diffusion between mobile devices
US8386557B2 (en) * 2000-06-16 2013-02-26 Enfora, Inc. Method for supporting a personal wireless network
US20010054060A1 (en) * 2000-06-16 2001-12-20 Fillebrown Lisa A. Personal wireless network
US7061896B2 (en) 2000-09-20 2006-06-13 George Mason Intellectual Properties, Inc. Wireless label switched packet transfer network
US7072650B2 (en) * 2000-11-13 2006-07-04 Meshnetworks, Inc. Ad hoc peer-to-peer mobile radio access system interfaced to the PSTN and cellular networks
US6820134B1 (en) * 2000-12-28 2004-11-16 Cisco Technology, Inc. Optimizing flooding of information in link-state routing protocol
US7065587B2 (en) * 2001-04-02 2006-06-20 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith
US7068654B1 (en) * 2001-04-18 2006-06-27 3Com Corporation System and method for providing masquerading using a multiprotocol label switching
US7450578B2 (en) * 2001-06-01 2008-11-11 Fujitsu Limited Method of addressing and routing data
US7010622B1 (en) * 2001-06-08 2006-03-07 Emc Corporation Scalable communication within a distributed system using dynamic communication trees
FR2829336A1 (en) * 2001-09-04 2003-03-07 Thomson Licensing Sa HiperLAN 2 radio communication gateway unit association procedure
US7720045B2 (en) * 2003-05-02 2010-05-18 Microsoft Corporation Method to enable simultaneous connections to multiple wireless networks using a single radio
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US7287275B2 (en) * 2002-04-17 2007-10-23 Moskowitz Scott A Methods, systems and devices for packet watermarking and efficient provisioning of bandwidth
DE60328929D1 (en) * 2002-09-09 2009-10-01 Cisco Tech Inc Root cause correlation in connectionless networks
US7420952B2 (en) 2002-10-28 2008-09-02 Mesh Dynamics, Inc. High performance wireless networks using distributed control
US7613812B2 (en) 2002-12-04 2009-11-03 Microsoft Corporation Peer-to-peer identity management interfaces and methods
US7242671B2 (en) * 2002-12-11 2007-07-10 Itt Manufacturing Enterprises, Inc. System and method for link-state based proxy flooding of messages in a network
US7596625B2 (en) 2003-01-27 2009-09-29 Microsoft Corporation Peer-to-peer grouping interfaces and methods
US7512715B2 (en) * 2003-09-26 2009-03-31 Nokia Corporation System and method for requesting a resource over at least one network with reduced overhead
US7698456B2 (en) * 2003-09-29 2010-04-13 Cisco Technology, Inc. Methods and apparatus to support routing of information
US7496648B2 (en) * 2003-10-23 2009-02-24 Microsoft Corporation Managed peer name resolution protocol (PNRP) interfaces for peer to peer networking
US7949996B2 (en) 2003-10-23 2011-05-24 Microsoft Corporation Peer-to-peer identity management managed interfaces and methods
KR100617291B1 (en) * 2003-11-05 2006-08-30 한국전자통신연구원 Multiple Protocol Label Switching apparatus and method for forwarding a hybrid data of IP/Label-Switching
US7660284B1 (en) * 2004-02-02 2010-02-09 Verizon New York Inc. Nevigation within a wireless network
US7765303B2 (en) * 2004-02-13 2010-07-27 Jean Geoffrion Method and apparatus for providing data over a dynamic wireless network
WO2005079536A2 (en) * 2004-02-19 2005-09-01 Ember Corporation Directing packets in a mesh network
US7702765B1 (en) 2004-03-01 2010-04-20 Cisco Technology, Inc. Techniques for automatically creating an iBGP mesh
US8688803B2 (en) 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
CN1299478C (en) * 2004-03-26 2007-02-07 清华大学 Route searching of detgredd of node based on radio self-organizing network and maitenance method thereof
US20050221813A1 (en) * 2004-04-05 2005-10-06 Jarno Rajahalme System and method for initiating auxiliary communication interfaces via a primary communication interface
WO2006027636A2 (en) * 2004-09-06 2006-03-16 Nokia Corporation System and method for initiating auxiliary communication interfaces via a membership-based network
US7623535B2 (en) * 2004-09-09 2009-11-24 Cisco Technology, Inc. Routing protocol support for half duplex virtual routing and forwarding instance
US8170019B2 (en) * 2004-11-30 2012-05-01 Broadcom Corporation CPU transmission of unmodified packets
KR100713145B1 (en) * 2005-02-18 2007-05-02 삼성전자주식회사 Method for forming power efficient network
US7817647B2 (en) * 2005-04-22 2010-10-19 Microsoft Corporation Flower-petal resolutions for PNRP
US8036140B2 (en) * 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US7571228B2 (en) * 2005-04-22 2009-08-04 Microsoft Corporation Contact management in a serverless peer-to-peer system
US20060268715A1 (en) * 2005-05-06 2006-11-30 Interdigital Technology Corporation Method and apparatus for transmitting management information in a wireless communication system
JP4606249B2 (en) * 2005-05-18 2011-01-05 富士通株式会社 Information processing method and router
US7505402B2 (en) * 2005-06-23 2009-03-17 Cisco Technology, Inc. Method and apparatus for providing faster convergence for redundant sites
US7984180B2 (en) * 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
CN100461761C (en) * 2005-10-28 2009-02-11 华为技术有限公司 Method for inhibiting source port
US7889737B2 (en) * 2005-12-02 2011-02-15 Texas Instruments Incorporated Locally administered MAC address based method for selectively and efficiently identifying enhanced version nodes of standards
US20070155395A1 (en) * 2005-12-29 2007-07-05 Nandu Gopalakrishnan Scheduling mobile users based on cell load
US7756035B2 (en) * 2006-01-31 2010-07-13 Nortel Networks Limited Planning routes and allocating identifiers to routes in a managed frame-forwarding network
US8781391B2 (en) * 2006-07-27 2014-07-15 Telefonaktiebolaget Lm Ericsson Hierarchical broadcast transmission via multiple transmitters
US8327016B1 (en) * 2007-01-29 2012-12-04 Juniper Networks, Inc. Device communications over unnumbered interfaces
EP1968272A1 (en) * 2007-03-05 2008-09-10 Matsushita Electric Industrial Co., Ltd. Loop detection for mobile IP home agents
US20090016317A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Methods and apparatus for supporting group communications utilizing device identifiers
US8861418B2 (en) * 2007-07-10 2014-10-14 Qualcomm Incorporated Methods and apparatus for supporting group communications with data re-transmission support
US8495232B2 (en) * 2007-07-10 2013-07-23 Qualcomm Incorporated Methods and apparatus for supporting broadcast communications in a peer to peer network
US8694662B2 (en) * 2007-07-10 2014-04-08 Qualcomm Incorporated Method and apparatus for communicating transmission requests to members of a group and/or making group related transmission decisions
US7961698B2 (en) * 2007-07-10 2011-06-14 Qualcomm Incorporated Methods and apparatus for controlling interference to broadcast signaling in a peer to peer network
JP5233761B2 (en) * 2009-03-12 2013-07-10 富士通株式会社 Wiring route creation support method, wiring route creation support program, and wiring route creation support device
US8525642B2 (en) * 2009-05-08 2013-09-03 Icontrol, Inc. Methods and systems for communication protocol for distributed asset management
EP2474144B1 (en) * 2009-09-01 2019-03-27 Icontrol, Inc. Methods and systems for communication protocol for distributed asset management
US20140003224A1 (en) * 2012-06-27 2014-01-02 Google Inc. Deterministic network failure detection
CN110784403B (en) * 2018-07-30 2022-07-15 中兴通讯股份有限公司 Path identification transmission method, path identification transmission device and computer readable storage medium
US11784912B2 (en) * 2019-05-13 2023-10-10 Cloudflare, Inc. Intelligently routing internet traffic
US11706607B1 (en) 2021-06-16 2023-07-18 T-Mobile Usa, Inc. Location based routing that bypasses circuit-based networks

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0627835A1 (en) * 1993-06-03 1994-12-07 International Business Machines Corporation Improved network layer packet structure

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4466060A (en) 1982-02-11 1984-08-14 At&T Bell Telephone Laboratories, Incorporated Message routing in a computer network
US4987536A (en) 1988-05-12 1991-01-22 Codex Corporation Communication system for sending an identical routing tree to all connected nodes to establish a shortest route and transmitting messages thereafter
US5115433A (en) 1989-07-18 1992-05-19 Metricom, Inc. Method and system for routing packets in a packet communication network
US5394436A (en) 1991-10-01 1995-02-28 Norand Corporation Radio frequency local area network
US5233604A (en) 1992-04-28 1993-08-03 International Business Machines Corporation Methods and apparatus for optimum path selection in packet transmission networks
GB9300942D0 (en) 1993-01-19 1993-03-10 Int Computers Ltd Parallel computer system
CA2124974C (en) 1993-06-28 1998-08-25 Kajamalai Gopalaswamy Ramakrishnan Method and apparatus for link metric assignment in shortest path networks
JPH07131478A (en) * 1993-11-05 1995-05-19 Fujitsu Ltd Lan-to-lan communication method and lan-to-lan connecting device
EP0676878A1 (en) * 1994-04-07 1995-10-11 International Business Machines Corporation Efficient point to point and multi point routing mechanism for programmable packet switching nodes in high speed data transmission networks
EP0691769A1 (en) * 1994-07-07 1996-01-10 International Business Machines Corporation Voice circuit emulation system in a packet switching network
US5572528A (en) * 1995-03-20 1996-11-05 Novell, Inc. Mobile networking method and apparatus
US5608721A (en) 1995-04-03 1997-03-04 Motorola, Inc. Communications network and method which implement diversified routing
US5721819A (en) 1995-05-05 1998-02-24 Silicon Graphics Corporation Programmable, distributed network routing
US5638371A (en) 1995-06-27 1997-06-10 Nec Usa, Inc. Multiservices medium access control protocol for wireless ATM system
US5805593A (en) * 1995-09-26 1998-09-08 At&T Corp Routing method for setting up a service between an origination node and a destination node in a connection-communications network
US5699347A (en) 1995-11-17 1997-12-16 Bay Networks, Inc. Method and apparatus for routing packets in networks having connection-oriented subnetworks
JP2723097B2 (en) 1995-12-04 1998-03-09 日本電気株式会社 QOS routing device
US5854899A (en) * 1996-05-09 1998-12-29 Bay Networks, Inc. Method and apparatus for managing virtual circuits and routing packets in a network/subnetwork environment
US5881246A (en) 1996-06-12 1999-03-09 Bay Networks, Inc. System for generating explicit routing advertisements to specify a selected path through a connectionless network to a destination by a specific router
US5896379A (en) * 1996-08-26 1999-04-20 Motorola, Inc. Network node for packet switching with selective data processing and method therefor
JP3638742B2 (en) * 1996-11-29 2005-04-13 アンリツ株式会社 Router
US5964841A (en) 1997-03-03 1999-10-12 Cisco Technology, Inc. Technique for handling forwarding transients with link state routing protocol
US5918016A (en) 1997-06-10 1999-06-29 Texas Instruments Incorporated System with program for automating protocol assignments when newly connected to varing computer network configurations
US5926463A (en) * 1997-10-06 1999-07-20 3Com Corporation Method and apparatus for viewing and managing a configuration of a computer network
US6006272A (en) 1998-02-23 1999-12-21 Lucent Technologies Inc. Method for network address translation
JP2004513530A (en) 1998-03-11 2004-04-30 スイスコム アーゲー Routing method and apparatus adapted for wireless and distributed systems
US6108314A (en) * 1998-08-31 2000-08-22 Motorola, Inc. Method, subscriber device, wireless router, and communication system efficiently utilizing the receive/transmit switching time
US6480892B1 (en) * 1998-12-16 2002-11-12 Siemens Information And Communication Networks, Inc. Apparatus and method for inserting predetermined packet loss into a data flow
CA2356947A1 (en) 1998-12-23 2000-07-06 Nokia Wireless Routers, Inc. A unified routing scheme for ad-hoc internetworking
US7184413B2 (en) 1999-02-10 2007-02-27 Nokia Inc. Adaptive communication protocol for wireless networks
US6836463B2 (en) 1999-10-15 2004-12-28 Nokia Corporation System for communicating labeled routing trees to establish preferred paths and source routes with local identifiers in wireless computer networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0627835A1 (en) * 1993-06-03 1994-12-07 International Business Machines Corporation Improved network layer packet structure

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7170853B2 (en) 2001-08-31 2007-01-30 Temic Automotive Of North America, Inc. Vehicle active network topologies
WO2003021879A1 (en) * 2001-08-31 2003-03-13 Motorola, Inc. Vehicle active network topologies
WO2003028315A1 (en) * 2001-09-27 2003-04-03 Telefonaktiebolaget Lm Ericsson Method for multihop routing for distributed wlan networks
US7881279B2 (en) 2001-12-12 2011-02-01 Alcatel Telecommunications network and a packet header using local node identifier information to designate routing information
EP1320224A1 (en) * 2001-12-12 2003-06-18 Alcatel Telecommunications network and a packet header therefor
EP2365667A1 (en) * 2003-02-03 2011-09-14 Nippon Telegraph And Telephone Corporation Data transfer apparatus and data transfer system
EP2365666A1 (en) * 2003-02-03 2011-09-14 Nippon Telegraph And Telephone Corporation Data transfer apparatus and data transfer system
CN100417132C (en) * 2003-12-09 2008-09-03 国际商业机器公司 System and method for maximizing packet transmission efficiency in communication network
WO2008125620A1 (en) * 2007-04-16 2008-10-23 Nokia Siemens Networks Oy Method for forwarding data of a data packet and device
EP1983697A1 (en) 2007-04-16 2008-10-22 Nokia Siemens Networks Oy Method for forwarding data of a data packet and device
WO2016057379A1 (en) * 2014-10-06 2016-04-14 Huawei Technologies Co., Ltd. Reverse path validation for source routed networks
CN106664244A (en) * 2014-10-06 2017-05-10 华为技术有限公司 Reverse path validation for source routed networks
CN106664244B (en) * 2014-10-06 2020-08-07 华为技术有限公司 Reverse path authentication for source routed networks

Also Published As

Publication number Publication date
US6683865B1 (en) 2004-01-27
CA2388000A1 (en) 2001-04-26
WO2001030034A3 (en) 2002-02-14
WO2001030034A9 (en) 2002-08-01
AU777159B2 (en) 2004-10-07
EP1256208A2 (en) 2002-11-13
AU1821401A (en) 2001-04-30

Similar Documents

Publication Publication Date Title
US6683865B1 (en) System for routing and switching in computer networks
US7881279B2 (en) Telecommunications network and a packet header using local node identifier information to designate routing information
EP0598969B1 (en) Inter-domain multicast routing
US5996021A (en) Internet protocol relay network for directly routing datagram from ingress router to egress router
US7286529B1 (en) Discovery and tag space identifiers in a tag distribution protocol (TDP)
US6876654B1 (en) Method and apparatus for multiprotocol switching and routing
US6701361B1 (en) Enhanced mobility and address resolution in a wireless premises based network
US5917820A (en) Efficient packet forwarding arrangement for routing packets in an internetwork
US6763023B1 (en) Network switch with self-learning routing facility
US7499450B2 (en) Router IP port for an IP router
EP0937353B1 (en) Routing in a multi-layer distributed network element
EP1236360B1 (en) Integrating signaling system number 7 (ss7) networks with networks using multi-protocol label switching (mpls)
US7359350B2 (en) Mobile packet communication system
US7061876B2 (en) Switch and bridged network
US20040054799A1 (en) Enhanced mobility and address resolution in a wireless premises based network
US20070036161A1 (en) System and method of routing Ethernet MAC frames using Layer-2 MAC addresses
US20060161673A1 (en) Routing apparatus and method for 6to4 network
US6807176B1 (en) Arrangement for switching data packets in a network switch based on subnet identifier
US6868086B1 (en) Data packet routing
US6820120B1 (en) Routing of data packets in heterogeneous networks
US6615273B1 (en) Method for performing enhanced target identifier (TID) address resolution
CN101552714A (en) Method and device for realizing traffic engineering in multi-home and multi-address space network
Cisco Configuration Parameters 31 - 57
Cisco Configuration Parameters 31 - 57
Cisco Configuration Parameters 31 - 57

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWE Wipo information: entry into national phase

Ref document number: 18214/01

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 2388000

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2000981033

Country of ref document: EP

AK Designated states

Kind code of ref document: C2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: C2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

COP Corrected version of pamphlet

Free format text: PAGES 1/10-10/10, DRAWINGS, REPLACED BY NEW PAGES 1/10-10/10; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWP Wipo information: published in national office

Ref document number: 2000981033

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWG Wipo information: grant in national office

Ref document number: 18214/01

Country of ref document: AU

WWW Wipo information: withdrawn in national office

Ref document number: 2000981033

Country of ref document: EP