U.S. patent number 7,492,777 [Application Number 11/102,761] was granted by the patent office on 2009-02-17 for device detection and service discovery system and method for a mobile ad hoc communications network.
This patent grant is currently assigned to Nokia Corporation. Invention is credited to Jan-Erik Ekberg, Pekka Lahtinen, Jaakko Lipasti.
United States Patent |
7,492,777 |
Ekberg , et al. |
February 17, 2009 |
Device detection and service discovery system and method for a
mobile ad hoc communications network
Abstract
A system and method of performing device detection and service
discovery in a mobile ad hoc communications network, each network
node storing a local application directory. One of the network
nodes is selected to be a directory server node that stores a
combined application directory. The directory server node sends an
inquiry message to a listening node when the listening node enters
the coverage area of the directory server node. The listening node
sends a notification message to the directory server node that
includes the local application directory stored in the listening
node. The directory server node compares the received local
application directory to the combined application directory and
updates the combined application directory accordingly. The
directory server node sends an update message to each network node
by sending an update portion of the combined application directory.
Each network node updates the local application directories
accordingly.
Inventors: |
Ekberg; Jan-Erik (Helsinki,
FI), Lahtinen; Pekka (Helsinki, FI),
Lipasti; Jaakko (Jorvas, FI) |
Assignee: |
Nokia Corporation (Espoo,
FI)
|
Family
ID: |
32174810 |
Appl.
No.: |
11/102,761 |
Filed: |
April 11, 2005 |
Prior Publication Data
|
|
|
|
Document
Identifier |
Publication Date |
|
US 20050185660 A1 |
Aug 25, 2005 |
|
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
|
10284135 |
Oct 31, 2002 |
6909721 |
|
|
|
Current U.S.
Class: |
370/401; 370/230;
370/231; 370/236; 370/278; 370/311; 370/395.1; 370/400; 370/465;
379/201.1; 379/218.01; 455/410; 455/445; 455/502; 455/517; 709/201;
709/203; 709/204; 709/217; 709/219; 709/221; 709/227; 709/250 |
Current CPC
Class: |
H04W
48/16 (20130101) |
Current International
Class: |
H04L
12/28 (20060101); H04L 12/56 (20060101) |
References Cited
[Referenced By]
U.S. Patent Documents
Foreign Patent Documents
|
|
|
|
|
|
|
1246487 |
|
Feb 2002 |
|
EP |
|
1207707 |
|
May 2002 |
|
EP |
|
1242986 |
|
Sep 2002 |
|
EP |
|
123540 |
|
Oct 2002 |
|
EP |
|
1246487 |
|
Oct 2002 |
|
EP |
|
1392023 |
|
Feb 2004 |
|
EP |
|
1392023 |
|
Feb 2004 |
|
EP |
|
1505811 |
|
Feb 2005 |
|
EP |
|
2410153 |
|
Jul 2005 |
|
GB |
|
2003/016347 |
|
Jan 2003 |
|
JP |
|
WO 99/41876 |
|
Aug 1999 |
|
WO |
|
WO 00/72506 |
|
Nov 2000 |
|
WO |
|
WO 01/31960 |
|
May 2001 |
|
WO |
|
WO 01/45319 |
|
Jun 2001 |
|
WO |
|
WO 01/95592 |
|
Dec 2001 |
|
WO |
|
WO 02/071285 |
|
Sep 2002 |
|
WO |
|
WO 03/034664 |
|
Apr 2003 |
|
WO |
|
WO 03/055150 |
|
Jul 2003 |
|
WO |
|
WO 03/055238 |
|
Jul 2003 |
|
WO |
|
WO 2004/038541 |
|
Oct 2004 |
|
WO |
|
WO 2004/091143 |
|
Oct 2004 |
|
WO |
|
WO 2005/038696 |
|
Apr 2005 |
|
WO |
|
WO 2006/092688 |
|
Sep 2006 |
|
WO |
|
Other References
EPO Communication, 4 pgs. (Oct. 17, 2005). cited by other .
"Assigned Numbers", article [online], Bluetooth SIG, Inc.,
1999-2001 [2 pages retrieved on Sep. 3, 2003]. Retrieved from the
Internet: <http://www.bluetoothsig.org/assigned-numbers/>.
cited by other .
"Assigned Numbers--Bluetooth Baseband", article [online], Bluetooth
SIG., Inc. 1999-2001 [7 pages retrieved on Sep. 3, 2003]. Retrieved
from the Internet
<http://www.bluetoothsig.org/assigned-numbers/baseband.htm>-
;. cited by other .
"Assigned Numbers--Link Manager Protocol (LMP)", article [online],
Bluetooth SIG, Inc. 1999-2001 [1 page retrieved on Sep. 3, 2003].
Retrieved from the Internet
<http://www.bluetoothsig.org/assigned-numbers/Imp.htm>. cited
by other .
"Assigned Numbers--Logical Link Control and Adaptation Protocol
(L2CAP)", article [online], Bluetooth SIG., Inc. 1999-2001 [2 pages
retrieved on Sep. 3, 2003]. Retrieved from the Internet
<http://www.bluetoothsig.org/assigned-numbers/12cap.htm>.
cited by other .
"Assigned Numbers--Service Discovery Protocol (SDP)", article
[online], Bluetooth SIG., Inc. 1999-2001 [11 pages retrieved on
Sep. 3, 2003]. Retrieved from the Internet
<http://www.bluetoothsig.org/assigned-numbers/sdp.htm>. cited
by other .
"Assigned Numbers--Service Discovery Protocol (SDP)", article
[online], Bluetooth SIG., Inc. 1999-2001 [5 pages retrieved on Sep.
3, 2003]. Retrieved from the Internet
<http://www.bluetoothsig.org/assigned-numbers/host.htm>.
cited by other .
"Assigned Numbers--Company Identifiers", article [online],
Bluetooth SIG., Inc., 1999-2001 [3 pages retrieved on Sep. 3,
2003]. Retrieved from the Internet
<http://www.bluetoothsig.org/assigned-numbers/company.htm>- .
cited by other .
"Assigned Numbers--References", article [online], Bluetooth SIG.,
Inc. 1999-2001 [6 pages retrieved on Sep. 3, 2003]. Retrieved from
the Internet
<http://www.bluetoothsig.org/assigned-numbers/tail.htm>.
cited by other .
"All About ISOC", web page [online], Internet Society, 2002 [2
pages retrieved on Oct. 23, 2003]. Retrieved from the Internet:
<http://www.isoc.org/isoc/>. cited by other .
"All About ISOC: Conferences--NDSS", web page [online], Internet
Society, 2002 [1 page retrieved on Oct. 23, 2003]. Retrieved from
the Internet: <http://www.isoc.org/isoc/conference/ndss/>.
cited by other .
"Internet Society (ISOC): All About The Internet", web page
[online], Internet Society, 2002 [1 page retrieved on Oct. 23,
2003]. Retrieved from the Internet:
<http://www.isoc.org/isoc/conferences/ndss/02/>. cited by
other .
"NDSS Conference Proceedings: 2002", web page [online], Internet
Society [2 pages retrieved on Oct. 23, 2003]. Retrieved from the
Internet:
<http://www.isoc.org/isoc/conferences/ndss/02/proceedings/>.
cited by other .
Kammer et al., "Bluetooth Application Developer's Guide: The Short
Range Interconnect Solution", Syngress Publishing, Inc., 2002, pp.
1-68. cited by other .
Bobba et al., Bootstrapping Security Associations for Routing in
Mobile Ad-Hoc Workstations, IEEE Global Telecommunications
Conference Proceedings; San Francisco, CA Dec. 1-5, 2003, IEEE
Global Telecommunications Conference Proceedings, NY, NY: IEEE US,
vol. 7 of 7, Dec. 1, 2003; pp. 1511-1513; GLOBCOM 2003; ISBN:
0-7803-7974-8. cited by other .
"Windows NT Workstation"; Nov. 2, 2003; pp. 1-14; XP002323988;
Retrieved from Internet: www.meetsoon.com/sid3.html; Apr. 11, 2005.
cited by other .
Kolsi et al.; "MIDP 2.0 Security Enhancements" System Sciences,
2004; Proceedings of the 37 Annual Hawaii International Conference
on Jan. 5-8, 2004, Piscataway, NJ; IEEE, Jan. 5, 2004, pp. 287-294,
XP010682881; ISBN: 0-7695-2056-1. cited by other .
PCT International Search for PCT/IB2006/001347, Oct. 24, 2006, 4
pages. cited by other .
Balfanz et al. "Talking to Strangers: Authentication in Ad-Hoc
Wireless Networks", Xerox Palo Alto Research Center, (Date
Unknown), 13 pages. cited by other .
PCT Search Report (Aug. 31, 2004). cited by other.
|
Primary Examiner: Trost, IV; William
Assistant Examiner: Jain; Raj K
Attorney, Agent or Firm: Morgan & Finnegan, LLP
Parent Case Text
CROSS REFERENCE TO A RELATED APPLICATION
This application for letters patent is a continuation application
and hereby incorporates by reference the parent application, U.S.
patent application Ser. No. 10/284,135, filed on Oct. 31, 2002, now
U.S. Pat. No. 6,909,721, entitled "Device Detection And Service
Discovery System And Method for A Mobile Ad Hoc Communications
Network".
Claims
We claim:
1. Apparatus comprising: a storage configured for storing a
combined application directory including local application
directory information of each network node communicating within a
mobile ad hoc communications network; a wireless transmitter
configured for sending an inquiry message to a listening node that
enters the coverage area; a wireless receiver configured for
receiving a notification message from the listening node, the
notification message comprising the local application directory
stored in the listening node; and a processor configured for:
storing an update to the combined application directory based on a
comparison of the local application directory included with the
notification message and the combined application directory; and
sending an update message to each network node communicating with
the mobile ad hoc communications network in response to the
combined application directory update, the update message
comprising an identified counterpart application and an update
portion of the combined application directory that includes at
least the identified counter part application for updating via
middleware software the local application directory of each of the
nodes within the mobile ad hoc communications network.
2. The apparatus of claim 1, wherein the combined application
directory stores a reference to each application program stored in
said at least one network node, and wherein the local application
directory stores a reference to each application program stored in
the network node associated with the local application
directory.
3. The apparatus of claim 2, wherein the reference stored in the
combined application directory, and the reference stored in the
local application directory, include an application identifier, a
network node identifier, and an application role.
4. The apparatus of claim 1, wherein the inquiry message is a
general inquiry access code message.
5. The apparatus of claim 1, wherein the notification message is an
arrival notification and the listening node sends the arrival
notification to initiate the listening node entering the mobile ad
hoc communications network.
6. The apparatus of claim 1, wherein the processor is further
configured for identifying at least one entry in the local
application directory that does not appear in the combined
application directory.
7. The apparatus of claim 6, wherein the processor is further
configured to: (i) add an entry to the combined application
directory for each entry in the local application directory
associated with the listening node that does not appear in the
combined application directory.
8. The apparatus of claim 6, wherein the processor is further
configured to identify comparison at least one entry in the local
application directory that appears in the combined application
directory.
9. The apparatus of claim 7, wherein the processor is further
configured to: (i) delete from the combined application directory
each entry in the local application directory associated with the
listening node that appears in the combined application
directory.
10. The apparatus of claim 1, wherein the notification message is a
departure notification and the listening node sends the departure
notification to initiate the listening node leaving the mobile ad
hoc communication network.
11. The apparatus of claim 1, wherein said at least one network
node communicates via the mobile communication network by a direct
radio connection.
12. The apparatus of claim 11, wherein the direct radio connection
only exists between the storage and each remaining network node in
said mobile communication network.
13. The apparatus of claim 1, wherein the mobile ad hoc
communication network is a Bluetooth piconet, the storage is a
master device in the Bluetooth piconet, and each remaining network
node in said mobile communication network is a slave device in the
Bluetooth piconet.
14. Apparatus comprising: a storage for storing a local application
directory; a wireless receiver configured for receiving an inquiry
message from a directory server node when entering the coverage
area of the directory server; a wireless transmitter configured for
sending a notification message to the directory server node, the
notification message comprising the local application directory
stored in the storage, and a processor configured for: receiving an
update message to a combined application directory from the
directory server node via middleware software, the update message
comprising an identified counter part application and an update
portion for updating the stored local application directory that
includes at least the identified counter part application; wherein
the received update message is based on a comparison of the local
application directory included with the sent notification message
and the combined application directory.
15. The apparatus of claim 14, wherein the combined application
directory stores a reference to each application program stored in
said at least one network node, and wherein the local application
directory stores a reference to each application program stored in
the network node associated with the local application
directory.
16. The apparatus of claim 15, wherein the reference stored in the
combined application directory, and the reference stored in the
local application directory, include an application identifier, a
network node identifier, and an application role.
17. The apparatus of claim 14, wherein the inquiry message is a
general inquiry access code message.
18. The apparatus of claim 14, wherein the notification message is
an arrival notification and the listening node sends the arrival
notification to initiate the listening node entering the mobile ad
hoc communications network.
19. The apparatus of claim 14, wherein the processor is further
configured to identify at least one entry in the local application
directory that does not appear in the combined application
directory.
20. The apparatus of claim 19, wherein the processor is further
configured to: (i) add an entry to the combined application
directory for each entry in the local application directory
associated with the listening node that does not appear in the
combined application directory.
21. The apparatus of claim 20, wherein an update message portion
sent to each network node comprises an update portion of the
combined application directory that is a counterpart application to
an application program resident in the network node.
22. The apparatus of claim 19, wherein the processor is further
configured to identify at least one entry in the local application
directory that appears in the combined application directory.
23. The apparatus of claim 22, wherein the processor is further
configured to: (i) delete from the combined application directory
each entry in the local application directory associated with the
listening node that appears in the combined application
directory.
24. The apparatus of claim 14, wherein the notification message is
a departure notification and the listening node sends the departure
notification to initiate the listening node leaving the mobile ad
hoc communication network.
25. The apparatus of claim 14, wherein said at least one network
node communicates via the mobile communication network by a direct
radio connection.
26. The apparatus of claim 25, wherein the direct radio connection
only exists between the directory server node and each remaining
network node in said mobile communication network.
27. The apparatus of claim 14, wherein the mobile ad hoc
communication network is a Bluetooth piconet, the directory server
node is a master device in the Bluetooth piconet, and each
remaining network node in said mobile communication network is a
slave device in the Bluetooth piconet.
28. A computer program stored in a memory which when executed by a
computer, causes the computer to perform a sequence of operational
instructions, comprising: storing a combined application directory
including local application directory information of each network
node communicating within the mobile ad hoc communications network;
sending via a wireless transmitter an inquiry message to a
listening node that enters the coverage area; receiving in a
wireless receiver a notification message from the listening node,
the notification message comprising the local application directory
stored in the listening node; storing an update to the combined
application directory via middleware software based on a comparison
of the local application directory included with the notification
message and the combined application directory; and sending via the
wireless transmitter an update message to each network node
communicating with the mobile ad hoc communications network, the
update message comprising an identified counter part application
and an update portion of the combined application directory that
includes at least the identified counterpart application for
updating the local application directory of each of the nodes
within the mobile ad hoc communications network.
29. The computer program of claim 28, wherein the combined
application directory stores a reference to each application
program stored in said at least one network node, and wherein the
local application directory stores a reference to each application
program stored in the network node associated with the local
application directory.
30. The computer program of claim 29, wherein the reference stored
in the combined application directory, and the reference stored in
the local application directory, include an application identifier,
a network node identifier, and an application role.
31. The computer program of claim 28, wherein the inquiry message
is a general inquiry access code message.
32. The computer program of claim 28, wherein the notification
message is an arrival notification and the listening node sends the
arrival notification to initiate the listening node entering the
mobile ad hoc communications network.
33. The computer program of claim 32 further comprising
instructions for comparison in identifying at least one entry in
the local application directory that does not appear in the
combined application directory.
34. The instructions of claim 33, wherein storing the update to the
combined application directory further comprises: (i) instructions
for adding an entry to the combined application directory for each
entry in the local application directory associated with the
listening node that does not appear in the combined application
directory.
35. The computer program of claim 34 wherein sending the update
message further comprises (i) instructions for identifying at least
one counterpart application pair, wherein a portion sent to each
network node comprises an update portion of the combined
application directory that is a counterpart application to an
application program resident in the network node.
36. The computer program of claim 28, wherein the notification
message is a departure notification and the listening node sends
the departure notification to initiate the listening node leaving
the mobile ad hoc communication network.
37. The computer program of claim 36 further comprises instructions
for comparison in identifying at least one entry in the local
application directory that appears in the combined application
directory.
38. The computer program of claim 37 wherein the storing of the
update message to the combined application directory further
comprises: (i) instructions for deleting from the combined
application directory each entry in the local application directory
associated with the listening node that appears in the combined
application directory.
39. The computer program of claim 38, wherein the sending the
update message further comprises: (i) instructions for identifying
at least one counterpart application pair, wherein a portion sent
to each network node comprises an update portion of the combined
application directory that is a counterpart application to an
application program resident in the network node.
40. The computer program of claim 38, wherein said at least one
network node communicates via the mobile communication network by a
direct radio connection.
41. The computer program of claim 40, wherein the direct radio
connection only exists between the storage and each remaining
network node in said mobile communication network Node.
42. The computer program of claim 28, wherein the mobile ad hoc
communication network is a Bluetooth piconet, the storage is a
master device in the Bluetooth piconet, and each remaining network
node in said mobile communication network is a slave device in the
Bluetooth piconet.
43. A computer program stored in a memory which when executed by a
computer. causes the computer to perform a sequence of operational
instructions, comprising: storing a local application directory;
receiving in a wireless receiver an inquiry message from a
directory server node when entering the coverage area of the
directory server; sending a notification message in a wireless
transmitter to the directory server node, the notification message
comprising the local application directory stored in the storage,
and receiving an update message in the wireless receiver from the
directory server node via middleware software, the update message
comprising an identified counterpart application and an update
portion that includes at least the identified counterpart
application for updating the stored local application directory;
wherein the received update message is based on a comparison of the
local application directory included with the sent notification
message and the combined application directory.
44. The computer program of claim 43, wherein the combined
application directory stores a reference to each application
program stored in said at least one network node, and wherein the
local application directory stores a reference to each application
program stored in the network node associated with the local
application directory.
45. The computer program of claim 44, wherein the reference stored
in the combined application directory, and the reference stored in
the local application directory, include an application identifier,
a network node identifier, and an application role.
46. The computer program of claim 43, wherein the inquiry message
is a general inquiry access code message.
47. The computer program of claim 43, wherein the notification
message is an arrival notification and the listening node sends the
arrival notification to initiate the listening node entering the
mobile ad hoc communications network.
48. The computer program of claim 47, wherein program code for
comparison identifies at least one entry in the local application
directory that does not appear in the combined application
directory.
49. The computer program of claim 48, wherein the storing of the
update to the combined application directory further comprises: (i)
instructions for adding an entry to the combined application
directory for each entry in the local application directory
associated with the listening node that does not appear in the
combined application directory.
50. The computer program of claim 43, wherein the notification
message is a departure notification and the listening node sends
the departure notification to initiate the listening node leaving
the mobile ad hoc communication network.
51. The computer program of claim 50, further comprises
instructions for comparison in identifying at least one entry in
the local application directory that appears in the combined
application directory.
52. The computer program of claim 51, wherein the storing of the
update to the combined application directory further comprises: (i)
instructions for deleting from the combined application directory
each entry in the local application directory associated with the
listening node that appears in the combined application
directory.
53. The computer program of claim 43, wherein said at least one
network node communicates via the mobile communication network by a
direct radio communication.
54. The computer program of claim 53, wherein the direct radio
connection only exists between the directory server node and each
remaining network node in said mobile communication network.
55. The computer program of claim 43, wherein the mobile ad hoc
communication network is a Bluetooth piconet, the directory server
node is a master device in the Bluetooth piconet, and each
remaining network node in said mobile communication network is a
slave device in the Bluetooth piconet.
Description
FIELD OF THE INVENTION
The disclosed invention is a device detection and service discovery
system and method for a mobile ad hoc communications network. The
system and method employs a centralized distribution model for
sending update messages to the network nodes in a mobile ad hoc
communications network, each update message based upon local
application directory information that describes the network
node.
BACKGROUND OF THE INVENTION
Short-range wireless systems have a range of less than one hundred
meters, but may connect to the Internet to provide communication
over longer distances. Short-range wireless systems include, but
are not limited to, a wireless personal area network (PAN) and a
wireless local area network (LAN). A wireless PAN uses low-cost,
low-power wireless devices that have a typical range of ten meters.
An example of a wireless PAN technology is the Bluetooth Standard.
The Bluetooth Standard operates in the 2.4 GHz Industrial,
Scientific, and Medical (ISM) band and provides a peak air-link
speed of one Mbps and a power consumption low enough for use in
personal, portable electronics such as a personal digital
assistance or mobile phone. A description of the Bluetooth
communication protocol and device operation principles is in
Bluetooth Special Interest Group, Specification of the Bluetooth
Standard, version 1.0B, volumes 1 and 2, December 1999. A wireless
LAN is more costly than a wireless PAN, but has a longer range. An
example of a wireless LAN technology is the IEEE 802.11 Wireless
LAN Standard and the HIPERLAN Standard. The HIPERLAN Standard
operates in the 5 GHz Unlicensed-National Information
Infrastructure (U-NII) band and provides a peak air-link speed
between ten and one hundred Mbps.
An ad hoc network is a short-range wireless system comprising an
arbitrary collection of wireless devices that are physically close
enough to exchange information. An ad hoc network is constructed
quickly with wireless devices joining and leaving the network as
they enter and leave the proximity of the remaining wireless
devices. An ad hoc network also may include one or more access
points, that is, stationary wireless devices operating as a
stand-alone server or as gateway connections to other networks.
In the future, the Bluetooth Standard will likely support the
interconnection of multiple piconets to form a multi-hop ad hoc
network, or scatternet. In a scatternet, a connecting device
forwards traffic between different piconets. The connecting device
may serve as a master device in one piconet, but as a slave device
or a master device in another piconet. Thus, the connecting devices
join the piconets that comprise a scatternet by adapting the timing
and hop sequence to the respective piconet and possibly changing
the roles that they serve from a master device to a slave
device.
A Bluetooth device includes, but is not limited to, a mobile
telephone, personal or laptop computer, radio-frequency
identification tag, and personal electronic device such as a
personal digital assistant (PDA), pager, or portable-computing
device. Each Bluetooth device includes application and operating
system programs designed to find other Bluetooth devices as they
enter and leave the communication range of the network. The
requesting Bluetooth device in a client role and the responding
Bluetooth device in a server role establish a link between the two
devices. The requesting and responding Bluetooth device use the
link and a service discovery protocol to discover the services
offered by the other Bluetooth device and how to connect to those
services.
Prior art systems follow similar patterns of behavior for service
discovery protocols. A service description, created using a
description language and an appropriate vocabulary, is advertised
or made available for query matching. Some prior art systems
advertise the service description by pushing the description to a
directory and requiring the advertisers to discover the directory.
Other prior art systems advertise the service description by making
the descriptions available for peer-to-peer discovery. A client
device that needs to discover the service description composes a
query using a query language and a matching vocabulary and uses
either a query protocol or a decentralized query-processing server
to deliver the query.
Service discovery protocols in the prior art systems require
sending and replying to inquiry messages. If no other device is
present, the inquiry messages are sent in vain. To avoid excessive
power consumption, the prior art systems typically require a human
user to manually initiate device detection when another device of
interest is present. For example, a human user manually initiates
device detection when connecting a cellular telephone to a laptop
computer to handle data communications or when connecting a
wireless headset to a laptop computer to deliver digital audio.
These prior art systems rely upon three assumptions. First, an
application can be freely started because the presence of its
services is guaranteed. Second, an application performs service
discovery when it first needs a service. Third, the composition of
the network does not change during the lifetime of the
application.
Thus, there is a need for a device detection and service discovery
protocol that will avoid excessive power consumption and allow an
application resident in one device to automatically find a
counterpart application or some other resource resident in any of
the remaining devices within the ad hoc communications network. The
protocol does not require a human user to manually initiate device
detection to find the counterpart application or other resource.
Furthermore, the protocol will accommodate a network environment in
which the presence of a particular service is not guaranteed and in
which the composition of the network is dynamic because devices
frequently enter and leave the network. The disclosed invention
addresses this need.
SUMMARY OF THE INVENTION
A system and method of performing device detection and service
discovery in a mobile ad hoc communications network including at
least one network node, each network node storing a local
application directory. The system and method selects a directory
server node from said at least one network node, the directory
server node having a coverage area and storing a combined
application directory. The directory server node sends an inquiry
message to a listening node when the listening node enters the
coverage area of the directory server node. The listening node
sends a notification message to the directory server node, the
notification message comprising the local application directory
stored in the listening node. The directory server node stores an
update to the combined application directory based on a comparison
of the local application directory included with the notification
message and the combined application directory. The directory
server node sends an update message to each network node
communicating with the mobile ad hoc communications network, the
update message comprising an update portion of the combined
application directory for updating the local application
directories of each of the nodes within the mobile ad hoc
communications network.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying figures best illustrate the details of the device
detection and service discovery system and method for a mobile ad
hoc communications network, both as to its structure and operation.
Like reference numbers and designations in these figures refer to
like elements.
FIG. 1 is a network diagram that illustrates the interaction of the
devices that comprise a mobile ad hoc communications network.
FIG. 2A is a block diagram that illustrates the hardware and
software components comprising server 110 shown in FIG. 1.
FIG. 2B is a block diagram that illustrates the hardware and
software components comprising terminal 120 shown in FIG. 1.
FIG. 3A is a flow diagram of an embodiment of server 110 performing
device detection and service discovery for a mobile ad hoc
communications network.
FIG. 3B is a flow diagram of an embodiment of terminal 120
performing device detection and service discovery for a mobile ad
hoc communications network.
FIG. 4A is an exemplary block diagram of the data flow before a
terminal enters a mobile ad hoc communications network.
FIG. 4B shows the exemplary block diagram of FIG. 4A after the
terminal enters the mobile ad hoc communications network.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a network diagram that illustrates the interaction of the
network nodes that comprise a mobile ad hoc communications network.
In one embodiment, the mobile ad hoc communications network is a
Bluetooth piconet that includes one master device and up to seven
active slave devices. As shown in FIG. 1, piconet 100 includes
server 110 and five instances of terminal 120. Server 110 maintains
the network clock and is the communication manager for each
instance of terminal 120. Server 110 typically initiates an
exchange of data with an instance of terminal 120. Two instances of
terminal 120 typically communicate through the server 110 however,
if two instances of terminal 120 communicate directly, one instance
will assume the role of server, or master, and the other instance
will assume the role of client, or slave.
Each device in the mobile ad hoc communications network will either
assume the role of a terminal device or a server device. A terminal
device is a consumer of services that a single user operates. A
terminal device includes devices such as a mobile phone or PDA. A
server is typically a stationary device and only produces services.
A server device creates a hotspot around them for using their
services. "Hotspot" refers to the radio coverage area provided by
the server device for detecting devices and discovering services
offered by the applications hosted in the server. If the server
device is not stationary, one of the terminal devices in the
network will assume the role of application directory server and
perform device detection and service discovery functions for the
remaining terminal devices in the network. The disclosed invention
introduces two roles among such terminal devices, application
directory servers and terminals, where application directory
servers serve terminals in device detection and service discovery.
If stationary servers with hotspots exist, servers typically act as
application directory servers however, device detection and service
discovery is possible without such a stationary server because one
of the terminals will assume the application directory server
duties.
The disclosed invention categorizes an application as a
server-based application, terminal-to-terminal application,
foreground application, background application, or generic
application component. A server-based application requires a server
to produce a service. A terminal-to-terminal application requires
at least two terminal devices to implement a service without the
presence of a server device. A foreground application is an
application resident in a terminal device that a user accesses via
the user interface of the terminal device. A background application
is an application resident in a terminal device that may start
without any intervention by the user A generic application
component can be used either as a standalone application or as a
component of another application.
An application may be further categorized as either active,
passive, new, or rejected. An active application is a foreground or
background application that is resident in (i.e., stored in memory)
the terminal. A passive application is resident in the terminal,
but has not yet been started. In another embodiment, the passive
application is started, but is not actively looking for other
instances of the same application. A new application is not yet
resident in the terminal, but might be in the future. A rejected
application is not resident in the terminal and has been marked by
the user as an application that should never be resident in the
terminal. In another embodiment, the rejected application was once
resident in the terminal, but was subsequently deleted and marked
as rejected. In yet another embodiment, the rejected application
never resided in the terminal, but is of a type of application that
the user has marked as rejected.
Service discovery in a mobile ad hoc communications network
differentiates between a resident application and an unloaded
application. A resident application is stored in the terminal
memory and loaded as either a foreground application or a
background application. An unloaded application is not yet stored
or loaded in the terminal, but has been accepted by the user.
Typically, when an application was previously used, but has been
overwritten to reclaim space, the application is considered
unloaded. Thus, starting an unloaded application may require first
downloading the application.
Service discovery from the perspective of the terminal device
requires categorizing the status of an application as either an
active resident application, active unloaded application, passive
resident application, passive unloaded application, rejected
application, or new application. An active resident application is
loaded in the terminal and looking for peers, servers, or clients.
An active unloaded application is not loaded in the terminal, but
is still looking for such counterpart applications that could be
automatically downloaded if found interesting. A passive resident
application is loaded in the terminal, but is net looking for
counterpart applications. A passive unloaded application is not
loaded in the terminal, but was once accepted by the user. A
rejected application is an application that a user has requested to
exclude from the terminal device. A new application is not loaded
in the terminal device, but the user might have seen an application
in an earlier server for instance.
FIG. 2A is a block diagram that illustrates the hardware and
software components comprising server 110 shown in FIG. 1. Server
110 is a general-purpose wireless device. Bus 200 is a
communication medium that connects keypad 201, display 202, central
processing unit (CPU) 203, and radio frequency (RF) adapter 204 to
memory 210. RF adapter 204 connects via a wireless link to terminal
120 and is the mechanism that facilitates network traffic between
server 110 and terminal 120.
CPU 203 performs the methods of the disclosed invention by
executing the sequences of operational instructions that comprise
each computer program resident in, or operative on, memory 210.
Memory 210 includes operating system software 211, application
programs 212, and middleware software 220. Operating system
software 211 controls keypad 201, display 202, RF adapter 204, and
the management of memory 210. Application programs 212 control the
interactions between a user and server 110. Middleware software 220
includes an application program interface (API) 221 that help an
application program running on server 110 find and communicate with
a counterpart application running on terminal 120. To quickly
locate each application, middleware software 220 also includes
application directory 230 to track the role assumed by each
application that is resides in each device in piconet 100.
FIG. 2B is a block diagram that illustrates the hardware and
software components comprising terminal 120 shown in FIG. 1.
Terminal 120 is a general-purpose wireless device. Bus 250 is a
communication medium that connects keypad 251, display 252, CPU
253, and RF adapter 254 to memory 260. RF adapter 254 connects via
a wireless link to server 110 or another terminal 120 and is the
mechanism that facilitates network traffic between server 110 and
terminal 120.
CPU 253 performs the methods of the disclosed invention by
executing the sequences of operational instructions that comprise
each computer program resident in, or operative on, memory 260.
Memory 260 includes operating system software 261, application
programs 262, and middleware software 270. Operating system
software 261 controls keypad 251, display 252, RF adapter 254, and
the management of memory 260. Application programs 262 control the
interactions between a user and terminal 120. Middleware software
270 includes an API 271 that help an application program running on
terminal 120 find and communicate with a counterpart application
running on server 110 or another terminal 120. To quickly locate
each application, middleware software 270 also includes application
directory 280 to track the role assumed by each application that is
resident on each device in piconet 100.
In one embodiment, the configuration of memory 210 and memory 260
is identical. In another embodiment, the configuration of memory
210 and memory 260 only includes the software necessary to perform
the essential tasks of server 110 and terminal 120, respectively.
For example, if terminal 120 needs to receive a general inquiry
access code, but does not need to send a general inquiry access
code message, only the software that sends this message will reside
in memory 260.
An application executing on a terminal is constantly searching for
a counterpart application, that is, another instance of the same
application that can communicate with the application. Each
instance of an application assumes a particular role. Communication
between an application and a counterpart application is only
meaningful if the roles are complementary. For example, an
application that assumes the role of "client" can communication
with a counterpart application that assumes the role of "server".
Middleware software is a software layer with an API that negotiates
the communication between two applications to help an application
find a counterpart application with the correct role. Thus, an
application installed in a terminal and activated, will query the
API for a continuous stream of new counterpart applications that
are of interest.
A new application is installed by "installer" applications that use
middleware for finding counterparts and installing the new
application into the local storage of a terminal. The actual
finding and selection of new applications takes place in the
application level. Initially, the installer application will be a
dedicated "browser-supplier" (i.e., client-server) application that
accesses counterpart applications in servers, browses their
available application databases, allows a user to pick the
applications to install, and downloads and installs the new
applications. Later, the corresponding functionality may be added
to a wireless access protocol (WAP) and hypertext markup language
(HTML) browsers.
Service discovery is viewed as a three step process. First, new
potential applications are found and will be considered for
installation. Second, active installed applications begin to search
for counterpart application. Third, active installed applications
begin searching for common resources such as printers (i.e.,
resource discovery). The disclosed invention relies upon the
applications to perform resource discovery. Typically, a terminal
application communicates with its counterpart application and use
local (i.e., server) resources. If an application uses a private
resource, the associated service discovery is implemented by the
application in a standard (e.g. Bluetooth or Bluetooth/Java) way
not supported by the terminal middleware software.
FIG. 3A is a flow diagram of an embodiment of the disclosed
invention, wherein one network node assumes a role of a directory
server, such as, server 110 performing device detection and service
discovery for a mobile ad hoc communications network. The process
begins when server 110 sends a general inquiry access code message
to terminal 120 (step 300). Terminal 120 receives the message and
sends an acknowledgment response message to server 110 (step 302).
Server 110 accesses middleware software 220 to request a socket
connection with terminal 120 (step 304). In response to
establishing the socket connection, server 110 receives a message
from terminal 120 that includes a local application directory
listing all of the applications that are locally resident on
terminal 110 (step 306). Server 110 compares the list of
applications resident on terminal 120 to a combined application
directory resident on server 110. Server 110 updates the combined
application directory by adding to the combined application
directory each entry in the local application directory that does
not appear in the combined application directory (step 308). Server
110 sends a portion of the updated combined application directory
to each terminal 120 in piconet 100 (step 310). The portion may
vary for each terminal 120 and includes each entry in the combined
application directory that is a counterpart application to an
application resident in terminal 120. In another embodiment, server
110 sends the entire combined application directory to each
terminal 120 in piconet 100 and relies upon terminal 120 to retain
the pertinent entries. Instances of middleware software in terminal
120 and server 110 begin to schedule the newly found counterpart
application pairs for execution (step 312). In one embodiment, the
scheduled applications make use of any other Bluetooth profile and
protocol. In another embodiment, an application that is an
installer application may suggest to the user other applications
that the user should download. Once server 110 downloads and starts
a new application, counterpart matching repeats and the new
application becomes a part of the middleware scheduling.
FIG. 3B is a flow diagram of an embodiment of the disclosed
invention, wherein one network node assumes a role of a directory
server, such as, terminal 120 performing device detection and
service discovery for a mobile ad hoc communications network. The
process begins when terminal 120 receives a general inquiry access
code message from server 110 (step 320). Terminal 120 generates and
sends an acknowledgment response message to server 110 (step 322).
Terminal 120 sends a message to server 110 that includes a local
application directory that includes all of the applications that
are locally resident on terminal 110 (step 324). Server 110
compares the list of applications resident on terminal 120 to a
combined application directory resident on server 110. Server 110
updates the combined application directory by adding to the
combined application directory each entry in the local application
directory that does not appear in the combined application
directory. Terminal 120 receives from server 110 a portion of the
updated combined application directory (step 326). Server 110
customizes the portion for terminal 120 to include each entry in
the combined application directory that is a counterpart
application to an application resident in terminal 120. In another
embodiment, server 110 sends the entire combined application
directory to terminal 120 and relies on terminal 120 to retain the
pertinent entries. Instances of middleware software in terminal 120
and server 110 begin scheduling these newly found counterpart
application pairs for execution (step 328).
FIGS. 4A and 4B are exemplary block diagrams showing the content of
the application directory before terminal X and terminal Y enter a
mobile ad hoc communications network served by server S. FIG. 4A
shows the configuration of application directory 404, application
directory 415, and application directory 425 before terminal X and
terminal Y enter a communication network managed by server S, a
master device. Application C 401 resides in server S memory 400 and
accesses middleware software 403 via API 402. Middleware software
403 registers application C 401 with application directory 404 by
adding a table entry to indicate that application C resides in the
local device (i.e., server S) and assumes the role of server.
Application A 411 and application B 412 reside in terminal X memory
410 and access middleware software 414 via API 413. Middleware
software 414 registers application A 411 and application B 412 with
application directory 415 by adding a table entry to indicate that
application A resides in the local device (i.e., terminal X) and
assumes the role of client and that application B resides in the
local device (i.e., terminal X) and assumes the role of peer.
Application B 421 and application C 422 reside in terminal Y memory
420 and access middleware software 424 via API 423. Middleware
software 424 registers application B 421 and application C 422 with
application directory 425 by adding a table entry to indicate that
application B resides in the local device (i.e., terminal Y) and
assumes the role of peer and that application C resides in the
local device (i.e., terminal Y) and assumes the role of client.
FIG. 4B shows the configuration of application directory 404,
application directory 415, and application directory 425 after
terminal X and terminal Y enter the communication network managed
by server S, a master device. Server S assumes the role of an
application directory server (ADS) and mediates the registration of
the applications residing in each device in piconet 100. Server S
adds a table entry to application directory 404 for each
application residing in a device on piconet 100. Thus, server S
adds an entry for application A residing in terminal X in a client
role, application B residing in terminal X in a peer role,
application B residing in terminal Y in a peer role, and
application C residing in terminal Y in a client role. Server S
also updates application directory 415 in terminal X and
application directory 425 in terminal Y with application
registrations that may be interesting to those terminal devices. As
shown in FIG. 4B, terminal X and terminal Y both host application B
in a peer role. Since, a peer-to-peer communication session between
application B on terminal X and application B on terminal Y is
likely, server S adds an entry to application directory 415 for
application B residing in terminal Y in a peer role and an entry to
application directory 425 for application B residing in terminal X
in a peer role. Also, since a client-server communication session
between application C on terminal Y and application C on server S
is likely, server S adds an entry to application directory 425 for
application C residing in server S in a server role. Finally, there
is no counterpart in piconet 100 for application A on terminal
X.
As shown in FIGS. 4A and 4B, the disclosed data items for each
entry in the middleware software application directory server
include a device identifier (e.g., "local", an address, or other
unique identifier), an application identifier (e.g., application
name or other unique identifier), and a role for the application
(e.g., "client", "server", "peer", etc.). In another embodiment,
the data items can be expanded to include fields for the local
applications (i.e., device="local") and fields for remote
applications in other terminals or servers. The fields for the
local applications include: Name--An identifier for the application
(e.g., supplier name and data to compare different versions and
hardware variants); My_role--The role that the application takes in
the local device; Partner_role--The role that the application
assumes from interesting counterparts (e.g., peer, client, and
server are the most common roles); Residency--Either RESIDENT
(installed and currently in memory), UNLOADED (installed once, not
currently in memory, but can be re-downloaded automatically),
REJECTED (indicates to the new application installer that it should
ignore the application), and NEW (the application is not installed
or rejected); State--Either RUNNING (has communications, is now
working with its remote counterparts, but there may be either only
one, or more, applications that can use the communications at a
time), WAITING (in execution but does not have any communications),
STARTABLE (active, if a matching peer with the right partner_role
is found, the middleware software starts this application,
downloading the software first if needed), COMPLETE (all
counterpart applications are aware), and PASSIVE (user must do
something to start application); Type--Either FOREGOUND (when the
application terminates, the state will be PASSIVE), and BACKGROUND
(if the application terminates, the state will be STARTABLE);
Unload--Either AUTOMATIC (middleware may remove code when the
application has terminated), or UNINSTALL (user must confirm
removals); Icon--Creates a visual image of the application for the
user; and Timeout--Sets a time limit that the middleware software
uses to detect, for example, when the application is in an
unproductive software loop.
The fields for the remote applications include: Device--An address
for establishing communications with the terminal or server storing
the application instance; Name--An identifier for the application;
and My_role--The role that the application takes in the remote
device.
The client-server roles of the applications are independent of the
roles of the devices as a terminal device and an application
directory server. Typically, the device acting as an application
directory server hosts applications acting in a server role and the
terminal devices act in the client role for the same application.
In another embodiment, two terminal devices each send a general
inquiry access code message and listen for a reply. The terminal
device that first receives a response first will assume the server
role and proceed according to the procedure in FIG. 3A. Another
terminal device that receives the inquiry message will assume the
terminal role, and proceed according to FIG. 3B. Thus, the
disclosed invention supports terminal-to-terminal scenarios (e.g.,
one of identical handheld devices automatically becoming an ADS)
and does not require predetermined application directory
servers.
Although the disclosed embodiments describe a fully functioning
device detection and service discovery system and method for a
mobile ad hoc communications network, the reader should understand
that other equivalent embodiments exist. Since numerous
modifications and variations will occur to those who review this
disclosure, the device detection and service discovery system and
method for a mobile ad hoc communications network is not limited to
the exact construction and operation illustrated and disclosed.
Accordingly, this disclosure intends all suitable modifications and
equivalents to fall within the scope of the claims.
* * * * *
References