[0001] This patent application claims priority from and incorporates by reference the entire disclosure of U.S. Provisional Patent Application No. 60/421,132 filed on Dec. 23, 2002.
[0002] 1. Field of the Invention
[0003] The present invention relates to Bluetooth networks and, in particular, to a system and method for connecting a Bluetooth network to an Ethernet LAN.
[0004] 2. Description of the Related Art
[0005] In order to appreciate the merits of the invention a general knowledge of Bluetooth and the problems involved in bridging a Bluetooth network and an Ethernet LAN is in order. Bluetooth is an ad-hoc wireless network technology intended for both synchronous traffic (e.g., voice) and asynchronous traffic (e.g., data traffic) based on IP (Internet Protocol). The aim is that any commodity device such as telephones, PDAs, laptop computers, digital cameras, video monitors, printers, fax machines, etc., will be able to communicate with one another over a radio interface using a Bluetooth radio chip and software. The Bluetooth wireless communication technology uses a frequency hopping scheme in the unlicensed 2.4 GHz ISM (Industrial-Scientific-Medical) band.
[0006] Two or more Bluetooth (BT) units sharing the same channel form a piconet.
[0007] Furthermore, two or more piconets
[0008] Bluetooth provides packet based full-duplex transmission using slotted Time Division Duplex (TDD). Each time slot is 0.625 ms long and is numbered sequentially using a very large number range (e.g., 2
[0009] The communication within a piconet is organized such that the master polls each slave according to some polling scheme. A slave is only allowed to transmit after having been polled by the master. The slave will then start its transmission in the next slave-to-master time slot immediately following the packet received from the master. The master may or may not include data in the packet used to poll a slave. The only exception to the above principle is when a slave has an established Synchronous Connection-Oriented (SCO) link (explained below). When this happens, the slave is always allowed to transmit in a pre-allocated slave-to-master time slot, even if not explicitly polled by the master in the preceding master-to-slave time slot.
[0010] Each BT unit has a globally unique 48 bit IEEE 802 address. This address, called the Bluetooth Device Address (BD_ADDR), is assigned when the BT unit is manufactured and is never changed. In addition, the master of a piconet assigns a local Active Member Address (AM_ADDR) to each active member of the piconet. The AM_ADDR, which is only three bits long, is dynamically assigned/de-assigned and is unique only within a single piconet. The master uses the slave's AM_ADDR when polling a slave in a piconet by including the AM_ADDR in the packet header. However, when the slave transmits a packet in response to the master, the slave's own AM_ADDR (not the master's) is included in the packet header.
[0011] Even though all data is transmitted in packets, the packets can carry both synchronous data on SCO links mainly intended for voice traffic, and asynchronous data on Asynchronous Correctionless links (ACL). SCO links use regular pre-defined timeslots, as opposed to ACL links which do not have pre-defined timeslots and, therefore, the master has to poll each slave in order to let the slave communicate over the ACL link. Depending on the type of packet that is used, an acknowledgment and retransmission scheme is used to ensure reliable transfer of data. Forward error correction (FEC) in the form of channel coding may also be used to ensure reliable transfer.
[0012] The standard format of a Bluetooth packet (except for certain control packets) is shown in
[0013] The Access Code
[0014] The format of the payload
[0015] The protocol layers of a Bluetooth system are illustrated in
[0016] As previously stated, transmission in a piconet is allowed exclusively between the master and a slave and not between slaves. Furthermore, the addressing scheme requires that the AM_ADDR of the transmitting slave should be used when transmitting to the master. Consequently, there is no way for a slave to send data to another slave in a piconet (there is no way for one slave to address another slave, and direct communication between slaves is not allowed). Hence, a slave can only communicate with the master of the piconet, while the master can communicate with all the slaves.
[0017] Another limitation of the Bluetooth system is that, in the current standard, there is no way to address and route packets from one piconet to another. Defining how inter-piconet communication should be performed in a scatternet is one of the tasks that the standardization body Bluetooth Special Interest Group (Bluetooth SIG) is currently working on. This work focuses mainly on the ability of Bluetooth as an ad-hoc network technology to support IP in a Bluetooth scatternet (or piconet). Essentially, IP would run on top of the Bluetooth protocol stack (i.e., IP would be the network layer
[0018] The second proposal requires that an adaptation layer be inserted between L2CAP layer and the IP or network layer, as shown in
[0019] The first proposal suffers from a number of problems, one of which is the Bluetooth piconets are not shared medium networks. The second proposal is more promising and has the most support in the Bluetooth SIG. Therefore, the remainder of this description will proceed with the assumption that the second proposal, the NAL/BNEP approach, is used. Furthermore, the more generic term NAL will be used throughout this description.
[0020] Both the IP subnet approach and the NAL approach require some kind of routing within a scatternet. In the IP subnet approach, the routing is performed on the IP layer
[0021] The ad-hoc routing protocols are the ones most seriously considered for Bluetooth scatternets and other ad-hoc network technologies. These ad-hoc routing protocols create routes on demand and retain (or cache) them for a certain period of time based on the time scale for changes of the network topology.
[0022] When a route needs to be created in AODV, a route request message is broadcast (i.e., sent to all nodes) in the scatternet. The route request message includes the address of the destination node. As the route request message propagates through the scatternet, temporary route entries are created in the nodes traversed by the message. When the route request message reaches the destination node, the destination node sends a route reply back to the source node. The route reply is unicast (i.e., sent to only one node but possibly forwarded via other nodes) along the same path that the route request message used to reach the destination node, guided by the temporary route entries in the nodes along the path.
[0023] As the route reply is forwarded to the source node, a route is created in both directions. Temporary route entries in the nodes through which the route reply does not pass are soon timed out and removed. For the nodes that lie along the path between the source node and destination node, the route entries that are created comprise the address of the destination node and the address of the next node (or hop) in the route. Between the destination node and the source node, route entries that are created include the address of the source node (which is the destination node for packets sent in this direction) and the address of the next hop node in the route. Thus, when a regular packet is subsequently transmitted from the source node to the destination node, all that is needed to route the packet to the destination node is the address of the destination node.
[0024] If an intermediate node already has a route entry for a certain destination node, it may return a route reply upon receiving a route request even though it is not the destination node. Such a route reply may also be called a proxy route reply. A node may have several route entries (to different destination nodes) stored. These route entries are together called a routing table and are stored in the node. A route entry is not stored indefinitely and may be removed from the routing table if it is not used for a certain time. The addresses used by the AODV routing protocol are the BD_ADDRs in the NAL approach and the IP addresses in the IP subnet approach.
[0025] The DSR routing protocol is similar to AODV in that it uses broadcast route requests and unicast route replies to establish a route on demand. A major difference, though, is that as the route request propagates through the scatternet, the address of each traversed node is added to the route request message. The result is that when the route request message reaches the destination node, it includes the complete route that was traversed. This route is used by the destination node to unicast the route reply message (still including the addresses of all the nodes along the route) to the source node. When a regular packet is subsequently transmitted from the source node to the destination node, the complete route (i.e., the address of all the intermediate nodes and the destination node) is included in the packet. This address information is used by the intermediate nodes to route packet to the destination node. Thus, no address information has to be stored in the intermediate nodes along the route in order to route packets to the destination node. Nevertheless, the intermediate nodes may still use the address information in the route requests and route replies to learn and store routes. As before, if a node already has a stored route for a certain destination node, it may return a route reply even though it is not the destination node. In any case, the stored routes are not stored indefinitely. If the route is not used for a certain time, the route is timed out and removed from the node's routing table. The addresses used by the DSR routing protocol are the IP addresses in the IP approach. In the NAL approach, the BD_ADDRs are used for the destination node, but either the BD_ADDRs or locally unique (i.e., within a single piconet) addresses may be used for the intermediate nodes.
[0026] Routing a packet through the scatternet, regardless of which routing scheme is used, relies on the BT units being members in more than one piconet. The BT units forward packets from one piconet to another, and are sometimes referred to as forwarding nodes. Of course, a BT unit may be a member of more than one piconet without forwarding traffic between the piconets. In that case, the BT unit is not a forwarding node. Within each piconet, the master node forwards the packets between different slave nodes. Therefore, master nodes are also referred to as forwarding nodes, even when they are not members of more than one piconet. The address used to route packets within a scatternet in the NAL approach is the BD_ADDR of each node.
[0027] The NAL layer can be designed to include functions for automatic network formation. That means that nodes may discover neighbor nodes automatically and connect to each other. Such basic connectivity can facilitate higher-level service discovery that will allow applications to use the network for application layer interactions. Thus, an important capability in any ad-hoc networking technology is the neighbor discovery feature. Without a neighbor discovery procedure, a BT unit would not be able to find any other BT units to communicate with and, consequently, no ad-hoc network would be formed. The neighbor discovery procedure in Bluetooth comprises the INQUIRY message and the INQUIRY RESPONSE message. A BT unit wanting to discover neighboring (within radio coverage) BT units will transmit INQUIRY messages and listen for INQUIRY RESPONSE messages. The INQUIRY message is transmitted repeatedly and according to well specified timing and frequency sequences. An INQUIRY message includes an Inquiry Access Code. The Inquiry Access Code can be a General Inquiry Access Code (GIAC), which is sent to discover any BT unit in the neighborhood, or a Dedicated Inquiry Access Code (DIAC), which is sent to discover only a certain type of BT units.
[0028] A BT unit receiving an INQUIRY message (including the GIAC or an appropriate DIAC) will respond with an INQUIRY RESPONSE message. The INQUIRY RESPONSE message is essentially a FHS (Frequency Hop Synchronization) packet being used as a response message. The format of the FHS packet
[0029] FHS packets are actually used for another purpose in Bluetooth, namely for synchronization of the frequency hop channel sequence. However, by listening for FHS packets used as INQUIRY RESPONSE messages, the BT unit that initiated the INQUIRY procedure can collect the BD_ADDR and internal clock values (both of which are included in the FHS packet) of the neighboring BT units.
[0030] Related to the INQUIRY procedure is the PAGE procedure used to establish an actual connection between two BT units. Once the BD_ADDR of a neighboring BT unit is known (as a result of an INQUIRY procedure), the neighboring BT unit can be paged with a PAGE message. Also, knowing the internal clock value of the BT unit to be paged will potentially speed up the PAGE procedure. The paging unit can use the internal clock value to estimate when and on what frequency hop channel the neighboring BT unit will listen for PAGE messages. A PAGE message contains the Device Access Code (DAC) derived from the BD_ADDR of the paged BT unit. A BT unit receiving a PAGE message containing its own DAC responds with an identical packet containing the DAC of the paged BT unit. The paging BT unit then replies with an FHS packet that includes the BD_ADDR of the paging BT unit, the current value of the internal clock of the paging BT unit, the AM_ADDR assigned to the paged BT unit and other parameters. The paged BT unit then responds once again with its DAC and thereby the connection between the two BT units is established.
[0031] If the paging BT unit already was the master of a piconet, the paged BT unit has now joined this piconet as a new slave unit. Otherwise, the two BT units have just formed a new piconet with the paging BT unit as the master unit. Since the INQUIRY message does not include any information about its sender (in particular, not its BD_ADDR), the BT unit that initiated the INQUIRY procedure is the only one that can initiate a subsequent PAGE procedure. Thus, the BT unit initiating an INQUIRY procedure will also be the master of any piconet that is formed as a result of a subsequent PAGE procedure. However, if considered necessary, the roles of master and slave can be switched using a master-slave switch mechanism in Bluetooth. (See, e.g., “Specification of the Bluetooth System,” version 1.1, Bluetooth Special Interest Group.)
[0032] One of the applications contemplated for Bluetooth scatternets is their use as a wireless ad-hoc extensions to Ethernet LANs. A scatternet can be connected to a LAN through one or more Bluetooth Network Access Points (NAP). This scenario is illustrated in
[0033] A problem with the above contemplated application is that the Ethernet link layers and the Bluetooth link layers are so different. Ethernet is a shared medium technology, i.e., all nodes on the LAN share the same broadcast medium. When a packet is transmitted on the LAN, all nodes connected to the LAN can receive it. The destination address of the packets, however, means that only certain nodes will respond to certain packets.
[0034] A Bluetooth scatternet, in contrast, is made up of point-to-point links. In order to overcome this difference, the NAL (see
[0035] The way the NAL emulates the broadcast medium is by making sure that broadcast type packets are delivered to all nodes in the scatternet via the point-to-point links. Unicast packets, on the other hand, are not delivered to all nodes as would be the case on a LAN, since this would waste too much of the limited bandwidth in a scatternet. Instead, unicast packets are delivered to their destination nodes by means of a routing protocol in the NAL. Hence, a unicast packet is routed through a scatternet by the NAL via one or several successive links, while still appearing to the higher layer protocols that the scatternet is a shared medium technology.
[0036] However, even with these tools, a number of problems arise. Some of these problems are due to the large difference in capacity between the scatternet and the LAN. The large difference in capacity makes a truly unrestricted extension of the LAN into a Bluetooth scatternet impractical. The scatternet would be suffocated by the traffic from the LAN. Hence, the NAPs have to employ some mechanism to restrict the traffic flowing through them. Other problems are due to the difference in how packets are delivered in the LAN compared to the scatternet. The difference in packet delivery creates a problem of matching the routing protocol of the NAL with the delivery mechanism of the shared medium of the LAN.
[0037] Still other problems are due to the ad-hoc nature of a Bluetooth scatternet. The ad-hoc nature of a scatternet creates problems when multiple NAPs are within reach of a scatternet. If the NAPs are attached to the same LAN, broadcast loops can be inadvertently created where packets can flow from the scatternet to the LAN via one NAP and continue through the LAN back to the scatternet via another NAP. If the NAPs are attached to different LANs, the problem is manifested at the IP level where each LAN constitutes one IP subnet. Generally, two different IP subnets or LANs may be connected only via a router which routes packets between the LANs on the IP layer. However, when a scatternet is connected to two NAPs that are attached to different LANs, the router is bypassed. Such bypass of the router can result in problems with IP routing, allocation of IP addresses, and uniqueness of link-local IP addresses.
[0038] One solution to the above problems involves the concept of Administrative Domains (AD). An AD corresponds to a broadcast domain, i.e., a LAN and all the nodes that are reachable from the LAN via the NAPs. The AD concept is used to prevent packets from inadvertently flowing from one LAN to another via a Bluetooth scatternet. Within the AD, the NAP is referred to as an Administrative Domain Access Point (ADAP). Each ADAP has a unique identity associated therewith. These identities are used to prevent broadcast loops when a scatternet is attached to one LAN via multiple ADAPs. In such cases, the scatternet is dynamically divided into logical areas corresponding to the ADAPs. The packets are then prevented from crossing from one logical area to another on the scatternet side.
[0039] Although the basic principles of the AD are sound, the existing AD solution nevertheless has a number of shortcomings. For one thing, the existing solution is not a complete solution to the bridging problem. In particular, it does not address the forwarding mechanism needed to couple the scatternet routing protocol with the distribution procedure on the LAN. The existing solution also does not address packet filtering to reduce unnecessary traffic in the scatternet.
[0040] Secondly, the existing AD model does not address the criteria used by a Bluetooth node for selecting an ADAP, or for changing an ADAP. It also does not address how to handle scatternet “islands” breaking loose from the bridged scatternet, or when a scatternet with two ADAPs splits into two scatternets with one ADAP each.
[0041] Finally, the maintenance of existing AD and ADAP areas are too rigid and not dynamic or flexible enough. Such rigidity may result in suboptimal ADAP selections so that the selected ADAP is not the closest one to the node, and may also result in uneven division of a scatternet where there are two ADAPs.
[0042] Accordingly, it would be desirable to be able to provide a system and method for bridging a Bluetooth scatternet and an Ethernet LAN that can overcome the shortcomings of the prior art AD model.
[0043] The present invention is directed to a system and method for bridging a point-to-point network such as a Bluetooth scatternet with a shared medium network such as an Ethernet LAN.
[0044] In general, in one aspect, the invention comprises a plurality of nodes in the scatternet and the LAN. The nodes include at least one NAP connecting the scatternet to the LAN. A filtering function is included in the NAP. The filtering function is configured to filter data packets sent from the LAN to the scatternet to eliminate unnecessary data packets from being sent to the scatternet. A bridging function is also included in the NAP. The bridging function is configured to forward certain ones of the data packets between the LAN and the scatternet. Where multiple NAPs are connected to the LAN, an inter-NAP protocol is used to exchange messages between the NAPs. Administrative domains and NAP service areas (NAPSAs) are defined, and the nodes are configured to control the borders of the administrative domain and NAPSAs to prevent broadcast loops in the scatternet and the LAN.
[0045] In general, in another aspect, the invention comprises the steps of connecting the scatternet to the LAN via the NAP, and filtering data packets sent from the LAN to the scatternet at the NAP to eliminate unnecessary data packets from being sent to the scatternet. The invention also comprises forwarding certain ones of the data packets between the LAN and the scatternet. The invention also uses an inter-NAP protocol to exchange messages where two or more NAPs are connected to the LAN. Broadcast loops are prevented from occurring in the scatternet and the LAN by defining Administrative domains and NAPSAs and controlling the borders thereof according to a broadcast type of the data packets.
[0046] A better understanding of the invention may be had by reference to the following detailed description when taken in conjunction with the accompanying drawings, wherein:
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068] Embodiments of the invention provide a system and method for bridging a Bluetooth scatternet and an Ethernet LAN. Although the system and method of the invention includes a number of functional features and components, the primary components of the invention are: a packet conversion and forwarding mechanism; a packet filtering mechanism; Administrative Domains (ADs) and NAP Service Areas (NAPSAs); and an Inter-NAP protocol (INAPP). Each of these components will be introduced briefly here, then discussed in more detail below along with the other features and components of the invention.
[0069] The first main component, the packet conversion and forwarding mechanism, requires the NAP to convert and forward the packet traffic between the nodes in the scatternet and the nodes on the LAN, and vice versa. Conversion is needed because on the LAN side, data is transported in Ethernet packets (also known as Ethernet frames), while on the scatternet side, data is transported in NAL packets. Therefore, packets passing from one side to the other need to be converted between these two different packet formats. Fortunately, the conversion is a straight forward procedure, since the same MAC (Media Access Control) addresses are used in both packet formats. (Note the MAC addresses are referred to as BD_ADDR in Bluetooth devices.)
[0070] Packet forwarding on the scatternet requires the NAP to treat unicast packets and broadcast packets differently due to the limited capacity of the scatternet. Unicast packets are forwarded using the NAL routing protocol to establish individual routes, while broadcast packets are distributed using the NAL broadcast emulation mechanism. For a proper understanding of the invention, it is necessary to understand the distinction between these two packet forwarding techniques. On the LAN side, there is no fundamental difference between transmitting a unicast packet and a broadcast packet, since Ethernet is a shared medium technology. Thus, all packets are forwarded to all nodes on the LAN and individual routes are not needed. Each node then chooses whether to receive or discard a packet based on the packet's destination address.
[0071] The second main component, the packet filtering mechanism, prevents the NAP from indiscriminately forwarding every packet it receives, particularly when there is no receiver on the other side. Filtering is especially important for the scatternet, which would otherwise be flooded by traffic from the higher capacity LAN. The filtering is performed based on (1) the destination address of the packet, (2) the higher layer protocol type specified in the payload of the packet, and for packets from the scatternet, (3) the NAL packet type. The higher layer protocol type filtering is considered to be more of a configuration issue that should be handled by the network administrator and will not be discussed herein.
[0072] The third main component, Administrative Domains (ADs) and NAP Service Areas (NAPSAs), prevents packets from being sent across two or more different LANs via the scatternet. The ADs and NAPSAs can be better explained with reference to
[0073] The scatternets
[0074] A LAN together with the NAPSAs of the NAPs that are connected to the LAN define one AD. NAPs that are attached to different LANs must belong to different ADs. For example, NAPSAs
[0075] If packets are bridged across different broadcast domains or ADs, problems may arise at the IP level due to bypass of the router
[0076] The fourth main component, the Inter-NAP protocol (INAPP), enables NAPs to exchange information across the LAN. This mechanism is useful both to facilitate packet filtering and to improve forwarding of packets from one scatternet to another across the LAN.
[0077] To better understand these four primary components, it may be helpful to have an understanding of the structure of the NAP and the NAL routing protocol and broadcast mechanism (which exist in all BT nodes). Reference is now made to
[0078] A packet that is received on the scatternet side of the NAP is passed through the scatternet side lower layers (shown generally at
[0079] An Ethernet packet that is received on the LAN side of the NAP is passed through the LAN side lower layers
[0080] A packet that originates in the higher layers
[0081] Referring still to
[0082] For all nodes in a network, whether in the LAN or in the scatternet, communication between any two nodes starts with the first node sending a broadcast ARP request to get the IP address of the second node translated to a MAC address. The MAC address is then used to send the message to the second node. Once an IP address has been translated to a MAC address, the IP-MAC address pair is temporarily stored in the ARP cache of the first node. When subsequent packets are to be sent to the second node, the MAC address of the second node can be retrieved from the ARP cache of the first node. Hence, the subsequent packet can be sent without a preceding ARP request.
[0083] Within each node, the ARP cache is updated or refreshed by all ARP packets received by the node that include a valid IP-MAC address pair. Each entry (i.e., address pair) in the ARP cache has a timer that is restarted every time the entry is updated or refreshed. When the ARP cache timer for a certain entry expires, the entry is removed.
[0084] In the scatternet, unicast packets are delivered by the NAL routing protocol. The NAL routing protocol used is a reactive routing protocol that can establish a route through the scatternet. A reactive routing protocol creates routes only when they are needed, as opposed to a proactive routing protocol that attempts to maintain a route to all nodes in the network at all times. There are several different reactive routing protocols designed for ad-hoc networks (e.g., the DSR protocol mentioned previously) and the specific one used is not essential for the invention. However, to simplify the description of the invention, it is assumed that the NAL routing protocol used will be based on the AODV protocol mentioned earlier.
[0085] In reactive routing, a route request message is broadcast (not unicast) in the scatternet whenever a route needs to be created. The route request message typically includes the address of the destination node. As the route request message propagates through the scatternet, temporary routes back to the source node are created (in the form of temporary route entries) in the routing tables of the nodes traversed by the message. The traversed nodes will also store the route request packet's identity, which includes the source node address and a sequence number assigned by the source node. This packet identity is used to prevent broadcast loops, as will be explained later in more detail.
[0086] The traversed node also starts a timer for the route entry, referred to as a route entry timer. The route entry timer governs how long the node will keep the temporary route entry without having received a route reply that makes use of the temporary route entry. That is, the timer effectively governs how long the node will wait for route replies for a particular route request. When a temporary route entry is first created, the route entry timer is set to a short timer interval called shortInterval, which may be a few seconds long, for example.
[0087] When a route request message reaches the destination node, the destination node returns a route reply. The route reply is unicast (not broadcast) along the same path used by the particular route request to reach the destination node, guided by the temporary route entries of the various nodes along the way. As the route reply is forwarded to the source node, a route is established in both directions. The route entry timer in each node along the path is then set to a significantly longer time interval longInterval which may be a minute, for example. Thus, the only difference between a temporary route entry and a regular route entry for an established route is the duration of the route entry timer.
[0088] The route request message will accumulate a hop count, which is the number of hops that it has made. Each intermediate node traversed counts as one hop. The route reply message includes the total hop count accumulated by the route request message. An intermediate node can thus calculate the hop count to the destination node by subtracting the hop count to the source node (received in the route request and stored in the temporary route entry) from the total hop count (received in the route reply).
[0089] The temporary route entries in all other nodes through which the route reply did not pass are timed out upon expiration of the respective route entry timers and removed along with the route request's identity. In the nodes along the route from the source node to destination node, the created route entries mainly include the address of the destination node, the address of the next node in the route, and the hop count to the destination node. Similarly, in the other direction, the created route entries include the address of the source node (which is the destination node for packets sent in this direction), the address of the next node in the route, and the hop count to the source node (which is the destination node for packets sent in this direction).
[0090] At the sending node, the start of a route request initiates a timer, denoted route reply timer. The route reply timer governs how long the sending node will wait for a route reply. If the timer expires, the node usually resends the route request and restarts the timer for a predetermined number of times until a route reply is received. If no route reply has been received after the maximum number of repeated route requests have been sent, all packets that were waiting for the route to be established are discarded, and an indication of this may be passed to the higher layers. To simplify the description of the invention, however, it is assumed that a node will send only one route request. When the route reply timer associated with this route request expires, the node gives up. The timeout period of the route reply timer should preferably be the same as for the route entry timer for temporary route entries, or perhaps somewhat longer. For example, the route reply timer could be started at the value routeReplyTimeoutPeriod=1.2×shortInterval.
[0091] When a route reply is received, the receiving node checks its routing table to see whether it already has a route entry for the node that sent the route reply (i.e., the destination node). If yes, the hop count of the old route entry is compared with the one in the received route reply. If the hop count in the received route reply is smaller than or equal to the hop count of the old route entry, the old route entry is replaced with a new one. If no route entry was found, the node creates a route entry for the node that sent the route reply. In either case, the node starts a route entry timer for the new route entry with the value longInterval. If the hop count in the received route reply is greater than the one in the old route entry, the old route entry is kept.
[0092] If the route reply was addressed to the receiving node itself, the receiving node does not need to do anything else. Otherwise, the node checks its routing table to see whether it has a route entry for the node to which the route reply is addressed (i.e., the source node). If yes, the node restarts the route entry timer for the found route entry with the value longInterval, and forwards the route reply to the next node indicated by the found route entry. If no route entry is found, the route reply is discarded.
[0093] Thus, when a packet is subsequently transmitted from the source node to the destination node, the only information needed in the packet for routing purposes is the address of the destination node (and likewise in the other direction). Every time an existing route entry is used to route a packet, its route entry timer is restarted with the value longInterval.
[0094] If a node that already has a route entry for a certain destination node receives a route request for that destination node, it may return a route reply, even though it is not the destination node. Hence, some nodes may receive several route replies to the same route request (recall that the route request message was broadcast to all the nodes in the scatternet). These nodes will initially use the route that is established by the first route reply. If a subsequent route reply is received that has a lower hop count to the source node, the receiving node will replace the existing route with the new route.
[0095] Hop count comparison is also performed in the handling of route request messages. In general, when a node receives a route request, it checks to see whether a route entry back to the source node already exists. If yes, the hop count of the existing route entry is compared with the hop count in the route request. If the hop count in the received route request is greater than that of the existing route entry, the existing route entry is kept. If the hop count in the received route request is smaller than the hop count in the existing route entry, or if they are equal, the existing route entry is replaced with a new route entry. When this happens, a route entry timer for the new route entry is started using the current value of the route entry timer for the existing route entry. In essence, the new route entry timer is a continuation of the existing route entry timer.
[0096] The node receiving the route request may also check to see whether the current route entry timer value of the existing or the new route entry is less than shortInterval. If yes, the node may restart the route entry timer at the value shortInterval.
[0097] If no route entry for the source node was found in the receiving node, the receiving node creates a new route entry for the source node. A route entry timer for this new route entry is then started at the value shortInterval (i.e., the new route entry is a temporary route entry). The node then checks to see whether it has a route entry for the destination node of the route request (unless the route request is addressed to the receiving node itself). If yes, the node restarts the route entry timer for the destination node route entry using the value longInterval and returns a route reply to the source node. If the node does not have a route entry for the destination node, it forwards the route request to its neighbors (except, of course, the neighbor from which the route request was received).
[0098] If the route request is addressed to the receiving node itself, the receiving node either creates a new route entry for the source node, replaces an existing one, or keeps the existing route entry (according to the hop count comparison procedure described above). It then starts the timer of the route entry for the source node at the value longInterval and sends a route reply to the source node using the route entry for the source node.
[0099] A node may have several route entries to different source and destination nodes stored. These route entries are together called a routing table and are stored in a memory area that is accessible to the NAL entity in the BT node. (The NAL entity is a software and/or hardware based functional entity that handles the NAL functionality.) When a route entry's timer expires, the route entry is removed from the routing table. Thus, if a route entry has not been used for routing a packet for a time equal to longInterval, the route entry is timed out and removed.
[0100] Sometimes a route “breaks” before it is timed out. This happens when one of the links along the route is broken or otherwise becomes no longer available. There are two mechanisms to deal with route failures. The first mechanism is triggered by detection of a link loss. When a node with more than one link established detects that the link to one of its neighbors is lost, it checks to see whether it has any entries in its routing table that indicate the now unreachable neighbor as the next hop node. If yes, the node will remove these route entries.
[0101] If any of the node's remaining neighbors also use any of the broken routes, the node sends a “route failure” message to those of its remaining neighbors that are affected by the route failures. Referring back to
[0102] Before sending the route failure messages, a node needs to know which of its neighbors are affected by the route failure. This information is required to prevent the node from indiscriminately forwarding the route failure message to all neighbors. In the NAL routing protocol, the issue is resolved by associating a dependent neighbors table with each affected route entry in the node. The nodes in the dependent neighbors table are the upstream nodes that are dependent on the present node to provide the next hop in any route. Every time a node forwards a route reply (or sends a proxy route reply) for a certain route, the neighbor to which the route reply is sent is included in the forwarding node's dependent neighbors table. The table is then associated with the route entry for the route in which the neighbor is an upstream node (i.e., the route to the destination node in this case). In addition, the neighbor from which the route reply was received (unless it was a proxy route reply) is included in the table, and the table is associated with the route entry for the opposite route (i.e., the route to the source node). Using these dependent neighbors tables, the node can keep track of which of its neighbors depend on each of the node's routes.
[0103] Table 1 below illustrates an example of a dependent neighbors table for node M
TABLE 1 Destination Next Hop Dependent Node Node Upstream Neighbors M1 S1 S2, S3 M3 S1 S3 ... ... ... M9 S2 S1, S4
[0104] Note that the dependent neighbors table informs the upstream neighbors only. There is presently no way to inform a downstream neighbor that one of the routes of the downstream neighbor is no longer available. Therefore, no neighbors will be removed from the dependent neighbors table, except when the link to such a neighbor is broken (and the whole table will of course be removed when the route entry is removed). Thus, the table may sometimes contain neighbors that actually are no longer dependent on the associated route entry. Consequently, the route failure message may sometimes be needlessly sent to unaffected neighbors. Nevertheless, the dependent neighbors tables still serve to significantly limit the number of nodes to which a route failure message is propagated.
[0105] The above described NAL routing protocol must be coupled with ARP in order to bridge a Bluetooth scatternet with an Ethernet LAN. That is to say, the NAL routing protocol must be able route an ARP request through the scatternet in order to bridge a scatternet with a LAN. Therefore, the ARP request is included, or piggybacked, in a NAL route request. The ARP reply (if any) will likewise be piggybacked on a NAL route reply. The result is that when the IP address of the destination node is translated to a MAC address, the route through the scatternet is already established so that subsequent packets can be delivered without a route request. To achieve this end, the NAL includes functionality to monitor or “snoop” every ARP packet it receives from the higher layers before the ARP packet is sent.
[0106] Regular route requests (without piggybacked ARP requests) will of course still be used. For example, when the MAC address of the destination node is known (e.g., from the ARP cache), there is no need to send an ARP request. In this situation, a regular route request will be sent if the node does not already have a route entry for the destination node.
[0107] The piggybacking of ARP requests on route requests and ARP replies on route replies is well known and, therefore, will be described only briefly here. For convenience, a route request with a piggybacked ARP request will be referred to as an “ARP-route-request,” while a route request without a piggybacked ARP request will be referred to as a “regular route request” or a “non-ARP-route-request”. The term “route request” will henceforth refer to any route request generally, with or without an ARP request piggybacked thereon. Similarly, a route reply with a piggybacked ARP reply will be referred to as an “ARP-route-reply,” while a route reply without a piggybacked ARP reply will be referred to as a “regular route reply” or a “non-ARP-route-reply.” The term “route reply” will henceforth refer to any route reply in general, with or without an ARP reply piggybacked thereon. ARP requests and ARP replies will continue to be referred to as such.
[0108] When a node sends an ARP-route-request, it follows the same procedure as previously described for a node sending a regular route request. An ARP-route-request would be sent instead of a regular route request when the IP address of the destination node is known, but not the MAC address. Thus, the only difference between a regular route request and an ARP-route-request is the ARP-route-request does not contain the MAC address of the destination node (since this address is not known). In addition, only the destination node can reply to an ARP-route-request. Proxy replies by intermediate nodes (as is the case for regular route request) are not allowed. This means that in a stand-alone scatternet or a scatternet connected to only a single NAP, a node can (in most situations) receive only one ARP-route-reply to an ARP-route-request. Reception of more than one ARP-route-reply by a node indicates that more than one node is using the same IP address. Such an error would be obvious also from the fact that the MAC addresses of the nodes sending the route replies would be different. However, in a scatternet connected to more than one NAP, it is perfectly normal to receive two ARP-route-replies in response to the same ARP-route-request (as will be explained later).
[0109] All nodes that receive an ARP-route-request will pass it to the higher layers where the request can be processed by the ARP entity, which is a software and/or hardware based functional entity that handles the ARP protocol and the ARP cache. This occurs regardless of whether the node forwards the ARP-route-request or terminates it (e.g., when the receiving node itself is the destination node of the ARP-route-request). The ARP entity will then update or refresh the ARP cache with the IP address and MAC address of the node sending the ARP request. The receiving node will also reply to the ARP request if it happens to be the destination node.
[0110] In addition, when a node receives an ARP-route-request, it checks whether a route entry for the source node already exists. If yes, the hop counts of the current route entry is compared with the one in the received ARP-route-request. If the hop count in the received ARP-route-request is greater than that of the current route entry, the current route entry is kept. If the hop count in the received ARP-route-request is smaller than the hop count of the current route or if they are equal, the current route entry is replaced with a new one. The route entry timer of the new route entry is then started at the current value of the route entry timer of the existing route entry. Regardless of which route entry is used, if the current value of the route entry timer for the route entry is less than shortInterval, the node may restart the timer at the value shortInterval. If no route entry was found, the node creates a new route entry for the source node and starts the route entry timer for this new route entry at the value shortInterval (i.e., it makes the