The present invention is related generally to computer network communications, and, more particularly, to layered communications protocols.
Modern computer network systems are growing to be very complex, involving many disparate communications tasks in addition to the basic task of moving messages from one computer to another. To handle this growing complexity, many, though not quite all, communications protocols are divided into “layers,” with each layer handling some important communications tasks while leaving other tasks to other layers. The International Standards Organization Open Systems Interconnection (ISO/OSI) protocol model is a theoretical construct which assigns communications tasks among the model's “stack” of seven layers. In this model, the overall task of enabling network communications is divided into subtasks and those subtasks are each assigned to a logical layer in the protocol stack. The stack is hierarchical: Each layer has a defined interface with the layers above and below it (except, of course, for the uppermost and lowermost layers). Logically, each layer communicates with its peer layer on another computer, provides services to the layer above it in the stack, and uses the services provided by the layer below it. Physically, messages flow down the stack from their source until the physical layer actually transmits them across the medium of the network connection. When messages are, received by their intended recipient computer, they are passed up the stack with each layer stripping off and responding to the data meant for it while passing the rest of the messages up to the next level. For example, the network layer (layer 3) defines how messages are routed among networks. The network layer on one computer logically speaks with the network layer on another computer by passing a packet of data down to the data layer (layer 2) on its own computer. The data layer in turn adds a header to the network layer's packet thus creating a data frame which it passes to the physical layer (layer 1). The physical layer uses the physical network medium to transmit that data frame. When the data frame is received by the recipient computer, the recipient's data layer reads the data frame, stripping from it the header information meant for its own use. Then the data layer takes the rest of the frame, consisting of the source computer's data packet, and sends it up to the network layer. Thus, the network layer on the recipient reads the packet as sent by the network layer on the source without having to decode the data layer header and other information used by the lower layers to transmit the data packet.
The primary advantage of this layered model is that each protocol layer can communicate with its peers without concerning itself with the myriad details handled by other layers in the protocol stack. That is, each layer performs its communications tasks mostly independently of the tasks performed by the other layers. This promises flexibility in implementation. For example, a particular implementation of one layer (e.g., an Institute of Electrical and Electronics Engineers (IEEE) 802 Ethernet Data Layer 2) accommodates any number of implementations of the protocol layer above it (e.g., multiple ISO/OSI Internetworking Protocol Layer 3s). Thus, a new layer 3 protocol can be introduced to advance the art of network communications while at the same time remaining compatible with the installed infrastructure of layer 2 devices. Similarly, a given upper protocol layer operates over multiple disparate lower layers. Thus, one computer can run a single layer 3 over both an Ethernet layer 2 interface and a wireless interface. This flexibility has enabled layered protocols to survive and to grow for over twenty years.
This flexibility invites multiple embodiments of each layer, the embodiments optimized for particular situations and all running over the same lower layers. However, the layered protocol's promise of compatibility between layers does not carry over to multiple embodiments within one layer. For example, the ISO/OSI model does not assure, a priori, that a new layer 3 protocol (e.g., IPv6) will interoperate with, previous versions (e.g., IPv4). This problem is not based on the particulars of the ISO/OSI model but is endemic to layered protocols in general.
As an example of this intra-layer compatibility problem, consider the communications task of routing data within a wireless network. (This example is illustrated and explained in greater detail in the Detailed Description section below.) In a traditional, wired network, devices can communicate directly with other devices (“local devices”) within the network and can communicate directly with a router for sending data to devices (“remote devices”) beyond the boundaries of the local network. However, a device in a wireless network may not be able to directly communicate with all of the other local devices due to noise, interference, and distance between the devices. Similarly, a device may not be able to communicate directly with a router that connects the wireless network to the wired Internet. Thus, a wireless device can have difficulties in sending messages both to local and to remote devices. In some wireless networks, protocols have been implemented to address these problems. In these networks, wireless devices help one another by retransmitting intercepted messages intended for other devices. This allows a message sent by a source device to “hop” or pass through several intermediary devices before arriving at the intended recipient.
Implemented blindly, this retransmission model could lead to inefficiencies as messages travel in “loops” before reaching their intended recipients. In one set of approaches to averting chaos, methods of “source routing protocols” are applied. An example is detailed below, but for now suffice it to say that the source discovers a route, potentially through several intermediary devices, to the intended recipient. Only devices along the source route retransmit intercepted messages, thus enabling delivery while reducing inefficient excess rebroadcast traffic. Non-source routing approaches to this problem have also been developed.
Source routing generally works as advertised, but it well illustrates the intra-layer compatibility problems of layered protocols. The problems arise when deciding where within the layered protocol stack to place source routing. If the source routing protocol is made a part of the layer 3 protocol, and thus uses layer 3 addresses, then the layered protocol model allows the source routing protocol to work with multiple layer 2s. This is a significant advantage when devices in a network use different wireless protocols or when the network includes both wired and wireless devices (or when a single device has both a wired and a wireless network interface). However, as mentioned above, different layer 3 protocols do not necessarily work with one another. Thus, a layer 3 source route developed for, say, the IPv4 layer 3 protocol would not work with devices using other layer 3 protocols such as IPv6 and IPX. This problem is moved but not solved by putting the source routing protocol in layer 2 and using layer 2 addresses. In order to allow a layer 2 source route to span multiple types of layer 2 network interfaces, the source routing protocol would have to be re-implemented for each layer 2 technology. Difficulties also arise because different layer 2 network interfaces such as Ethernet and Bluetooth (a wireless network standard) can use different, and incompatible, formats for their addresses.
In order to develop and to address new communications tasks, layered protocol systems must accommodate new protocols at each layer. The layered model helps to make sure that a new protocol is compatible with other protocols above and below it in the protocol stack. However, as the source routing example shows, incompatibility of protocols within a given layer hinders the full realization of the promise of layered protocols.
In view of the foregoing, the present invention provides a virtual protocol “interlayer” between two protocol layers in a communications stack. When a communications task needs to be performed, but implementation within the existing protocol layers may hinder deployment due to issues of compatibility, the methods of the present invention are used to create an interlayer to handle the task. An addressing scheme peculiar to the interlayer is set up. The interlayer frees the other layers in the protocol stack to operate as before, leaving to the interlayer the specifics of performing the communications task.
The details of the operation of a protocol interlayer are dependent upon the particulars of the task, or tasks, it is called upon to perform. If necessary, one communicating device can simultaneously support more than one interlayer, although performance issues could hinder the multiplicaition of interlayers.
Techniques already used at other protocol layers can be modified to assign and to discover interlayer addresses in the requisite networking environment. In some embodiments, each network interface on each network device is assigned its own globally unique interlayer address. In embodiments where each network device is assigned a single interlayer address, interface identifiers can be added to the interlayer address to distinguish among multiple network interfaces on a network device.
In some embodiments, a protocol interlayer is introduced with no change to the protocol layers above and below it. For example, the interlayer presents to the layer above it (e.g., layer 3) the same interface presented by the layer below it (e.g., layer 2). Thus, the existing upper protocol layer interacts with the interlayer just as it used to interact with the lower protocol layer. Other embodiments require just a small change to a protocol layer adjacent to the interlayer. For example, a new protocol header flag in a received message can be recognized by a lower layer, using existing techniques, causing the lower layer to pass the message on to the interlayer rather than process the message itself or pass it on to the upper layer.
Source routing is a useful example for demonstrating the utility of the protocol interlayer. In one embodiment, an interlayer is built between the ISO/OSI protocol layers 2 and 3. Source routing is performed within this interlayer, using interlayer addresses. By using interlayer addresses rather than layer 2 or layer 3 addresses, this embodiment of source routing allows compatibility both with multiple layer 3 protocols and with multiple layer 2 network interfaces.
While the appended claims set forth the features of the present invention with particularity, the invention, together with its objects and advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings of which:
a through 2c together form a dataflow diagram illustrating how, by using a source route, two hosts in
a is a logical diagram of the International Standards Organization Open Systems Interconnection (ISO/OSI) model for hierarchically-layered, network communications protocols;
a and 9b together form a flowchart of an exemplary protocol interlayer responding to a message received from an upper protocol layer;
a and 12b together form a flowchart of an exemplary protocol interlayer responding to a message received from a lower protocol layer;
a and 14b together form a dataflow diagram showing how the Address Resolution Protocol can work in the presence of a protocol interlayer.
Turning to the drawings, wherein like reference numerals refer to like elements, the present invention is illustrated as being implemented in a suitable computing environment. The following description is based on embodiments of the invention and should not be taken as limiting the invention with regard to alternative embodiments that are not explicitly described herein.
In the description that follows, the present invention is described with reference to acts and symbolic representations of operations that are performed by one or more computing devices, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of the computing device of electrical signals representing data in a structured form. This manipulation transforms the data or maintains them at locations in the memory system of the computing device, which reconfigures or otherwise alters the operation of the device in a manner well understood by those skilled in the art. The data structures where data are maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the invention is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operations described hereinafter may also be implemented in hardware.
The present invention provides a virtual protocol “interlayer” between two protocol layers in a communications stack. When a communications task needs to be performed, but implementation within the existing protocol layers may hinder deployment due to issues of compatibility, an interlayer is created, with its own addressing scheme, to handle the task.
The methods of the present invention are broadly applicable and are thus somewhat abstract in their general conception. The following description focuses on specific implementations in order to illustrate that general conception. Source routing is a useful example for demonstrating the utility of the protocol interlayer. In one embodiment discussed below, an interlayer is built between the ISO/OSI protocol layers 2 and 3. Source routing is performed within this interlayer, using interlayer addresses. By using interlayer addresses rather than layer 2 or layer 3 addresses, this embodiment of source routing allows compatibility both with multiple layer 3 protocols and with multiple layer 2 network interfaces. The utility of the present invention is not limited to source routing, however. Protocol interlayers can be developed to perform other communications tasks as well.
Source routing is a set of techniques developed for situations where traditional routing methods do not apply. First, consider how traditional routing works. For a device on a traditional, wired network, all other devices are divided into two general classes. “Local” devices are locating with the same local network and can be accessed directly. “Remote” devices lie beyond the boundaries of the local network and are accessed through a router. The router is a local device. Traditional routing methods are based on this dichotomy of local and remote devices. When sending to a local device, the source device simply addresses the message to the intended recipient and puts the message out onto the local network. All local devices, including the intended recipient, receive the message. (This simplistic view does not always hold in real networks. For example, Ethernet switches do not propagate Ethernet frames to local links that do not contain the addressed device. However, the simplistic view holds for purposes of illustration. The manner in which Ethernet switches discover the locations of local devices and limit retransmissions accordingly is an excellent example of “ad hoc” routing in a non-wireless network.) All local devices, except the intended recipient, then discard the message. The intended recipient reads the message and responds accordingly.
When the intended recipient is remote from the source device, traditional routing often, though not exclusively, applies a “shortest path” algorithm. The source device (or, more likely, a router on the source device's network) considers the shortest path to the intended recipient and sends the source's message on to the next device on that shortest path. When the next device receives the message, it examines the recipient address and either accepts the message, if this device is the intended recipient, or again applies the shortest path algorithm to send the message along. Eventually, the message arrives at the intended recipient. Note that each device routing the message, the source and all of the intermediates, makes its own choice as to where to send the message next. Routers periodically share end-to-end network topology information to allow each of them to correctly choose the shortest path.
However, traditional routing techniques break down in networks that support devices that communicate using short range, wireless protocols. A first reason for this is the vastly accelerated pace of change in the wireless network. Wireless devices enter and leave the networking environment so quickly that traditional techniques of discovering network topological information cannot keep up. Secondly, wireless devices can disagree as to which other devices are currently in the network and which are not. Both of these considerations violate the traditional model of topological information that is knowable in the two senses of being relatively unchanging and of being universally acknowledged.
Consider the network communications environment of
To address these problems, the wireless devices help one another by retransmitting intercepted messages intended for other devices. This allows a message sent by a source device to “hop” or pass through several intermediary devices before arriving at the intended recipient. Source routing protocols form one set of approaches to prevent transmission “loops” wherein a message passes through the same intermediary device more than once on its way to the intended recipient. In short, the source device discovers a route, potentially through several intermediary devices, to the intended recipient. Only devices along the source route retransmit intercepted messages, thus enabling delivery while reducing inefficient excess rebroadcast traffic. While, for purposes of clarity, the present discussion uses source routing to illustrate the methods of the present invention, those methods are equally applicable to the non-source routing approaches to this problem that have also been developed.
The dataflow diagram of
The device 102 wishes to send a message to the device 110. The nature of the message is not important for this discussion; it could be intended for an application running on the device 110 or it could sent to the device 110 in order to be routed to another device on the Internet 112. In any case, the device 102 cannot communicate directly with the device 110 so, in step 200 of
The discovered source route passes through the device 106, with which the device 102 can directly communicate and which can in turn communicate directly with the device 110. Many protocols exist for discovering this source route, and their complexities are beyond the scope of the present discussion. For more background on source routing and for details of a particular source routing protocol, consider the Internet Engineering Task Force Internet Draft “The Dynamic Source Routing Protocol for Mobile and Ad Hoc Networks (DSR),” incorporated by reference herein in its entirety.
The device 102 creates its message intended for the device 110 and includes in it the source route 300. The message is addressed to the next hop on the source route, in this case device 106. In step 202 of
On the other hand, the destination address does match that of the device 106, so that device proceeds, in step 210, to examine the message, particularly the source route 300. By examining the source route 300, the device 106 discovers that it is not the intended recipient of this message. So, in step 212 of
The device 110 receives the message in step 214 and examines the destination address in step 216. Because that address matches that of the device 110, the device 110 proceeds, in step 218, to examine the source route 300 in the message. In step 220 of
The above discussion of
The network devices 102, 104, 106, and 110 of
The network devices 102, 104, 106, and 110 can use any of a number of communications protocols. As discussed in the Background section above, many, but not quite all, of today's communications protocols follow the ISO/OSI protocol model, shown in
It should be remembered that the ISO/OSI protocol stack is a conceptual model only and that no protocol follows it exactly. However, many popular protocols in use today follow this model to a greater or lesser extent, and the model makes discussion of the communications tasks it defines more easily comprehensible.
The ISO/OSI model does not specify how the device 102 should internally implement the tasks required to support an ISO/OSI layered communications protocol.
Going into greater depth in the scenario of
The remainder of this discussion provides details of a specific implementation of source routing in a protocol interlayer that lies between layers 2 and 3 of the ISO/OSI protocol stack. The environment of
Note that in some implementations the layer 3 protocol driver 516 can follow the procedure of
The protocol interlayer receives the data packet from layer 3 in step 900 of
In step 904, the protocol interlayer first determines whether to apply the methods of source routing to the present data packet. If for example, a layer 3 data packet is generated at the device 106 and is intended for the device 110, then the LAN 108 will carry the packet directly, and no source routing is needed. In the scenario of
In step 906, the protocol interlayer adds its own header to the layer 3 data packet to create an interlayer data frame. An exemplary format for the interlayer header is discussed below in reference to
The protocol interlayer translates the interlayer address of the next hop into a layer 2 address in step 908. If source routing is not appropriate (e.g., the device 106 is sending directly to the device 110), then the next hop is the recipient device. For a message with a source route, the address is the layer 2 address of the next device in the route. In the present scenario, this is the layer 2 address of the device 106.
In step 910, the protocol interlayer uses the interface index of the interlayer address of the next hop in order to choose a specific layer 2 protocol driver 518 to use to send the message. This step applies when the sending device has more than one layer 2 interface. In the present scenario, this step does not apply to the device 102 because it has only one layer 2 interface.
The layer 3 data packet, its attached interlayer header, the source layer 2 address, and the layer 2 address of the next hop are delivered to the chosen layer 2 protocol driver 518 in step 912 of
Steps 914 and 916 are optional but are specified by some source routing protocols. In these protocols, a timer is associated with the data packet delivered to the layer 2 protocol driver 518 in step 912. If no indication of successful delivery is received (while could, come from the intended recipient or from an intermediary device on the source route), then the sending device knows that something is wrong with its chosen source route. This is a common occurrence in ad hoc networks where devices on a chosen source route can move out of range or disappear entirely. If the timer expires, then the source device applies methods specified by the source routing protocol to fix or to replace the source route. The message is then resent using the new source route.
When the layer 2 protocol driver 518 receives the message from the protocol interlayer, it proceeds just as it would had it received the message from the layer 3 protocol driver 516 instead. The layer 2 data frame, addressed to the device 106 and including the layer 3 data packet and the interlayer header, is transmitted by the device 102's wireless transmitter in step 202 of
In the scenario of
In contrast to the case with the device 104, the layer 2 destination address comparisons of step 206 on the device 106 and of step 216 on the device 110 reveals that these devices are the intended destinations, of the received data frame. Therefore, these devices proceed, in step 1004 of
Note that the introduction of the protocol interlayer only changes the layer 2 protocol driver 518 in that it now must recognize the presence of an interlayer header in step 1004 and deliver it as appropriate. Layer 2 protocols are already familiar with many types of layer 3 flag values, so that this change is simply one of adding another universally recognized value for the flag (in field 1106) to those already recognized by the layer 2 protocol driver 518. Note also that the presence of the interlayer does not necessitate all messages passing through it, but that (as in steps 1008 and 1010) messages can still be passed directly from layer 2 to layer 3 if necessary.
The protocol interlayer receives the data frame 1100 from the layer 2 protocol driver 518 in steps 210 and 218 on the devices 106 and 110, respectively. The receiving interlayers apply the method of
When the comparison of step 1206 is performed on the device 106, however, this device 106 realizes that it is not the intended recipient of the message. The device 106 then examines the interlayer header 1104 for the interlayer address of the next hop in the source route 300 and prepares to pass the message on to that next device. The procedure for so doing follows that performed by the source device 102 in sending the message to the first device in the source route 300.
The scenario discussed above illustrates how a protocol interlayer can be added to a protocol stack to handle an important communications task with few or no modifications to the layers above and below it. The details of the operation of the interlayer are dependent upon the particulars of the task, or tasks, it is called upon to perform. Independent of those details, however, are the methods used to assign interlayer addresses. Several methods for assigning addresses well known in the art can be used for interlayer addresses. An example is given in
Source routing is just one of the many communications tasks involved in running a multi-layer protocol stack. The methods of the present invention are designed to allow other communications tasks to proceed as before without the need to change to accommodate the protocol interlayer. As one example, and, as an example of broadcast interlayer addressing, consider the communications scenario of
In the layer 3 protocol known as IPv4, ARP is used to associate a layer 3 address with a layer 2 address. The scenario of
The ARP request is received by all of the devices in radio range, that is; by the devices 104 and 106 in step 1404. As the destination layer 2 address is a broadcast address, both these devices examine the message's contents in step 1406. The request includes an interlayer header, so the request is passed up to the protocol interlayer on both devices. The protocol interlayer examines the destination address, which is also a broadcast address. The protocol interlayer then passes the ARP request up to the layer 3 protocol driver 516.
Still in step 1406, the layer 3 protocol drivers 516 on both the devices 104 and 106 examine the ARP request and compare the target layer 3 address contained in the request against the layer 3 address assigned to the local device. Neither device finds a match. The device 104 can do no more, so it discards the ARP request in step 1408.
The device 106, however, has two network interfaces. It received the ARP request on the wireless interface, so in step 1410 it passes the ARP request to the other interface, that is, to the LAN 108. The ARP message is again broadcast. The device 110 receives the broadcast ARP request in step 1412 of
During all of this ARP scenario, the layer 3 protocol drivers 516 on each device act identically to how they would act were there no protocol interlayers in place. Thus, the presence of the interlayer changes the results of ARP (from creating a layer 3/layer 2 address association to creating a layer 3/interlayer address association) without requiring any change in the layer 3 protocol drivers 516 that run ARP. This example shows how the protocol interlayer can perform its own communications tasks without disturbing the communications tasks of other layers.
In view of the many possible embodiments to which the principles of the present invention may be applied, it should be recognized that the embodiments described herein with respect to the drawing figures are meant to be illustrative only and should not be taken as limiting the scope of the invention. For example, those of skill in the art will recognize that protocol interlayers can be developed to cover situations other than source routing without departing from the spirit of the invention. Although the invention is described in terms of software modules or components, those skilled in the art will recognize that such may be equivalently replaced by hardware components. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.
Number | Date | Country | |
---|---|---|---|
Parent | 10610397 | Jun 2003 | US |
Child | 11891762 | Aug 2007 | US |