Check out the new USENIX Web site.

Home About USENIX Events Membership Publications Students
MobiSys '03 Paper    [MobiSys '03 Tech Program Index]

Pp. 145-158 of the Proceedings
Check out the new USENIX Web site.

Contact Networking: A Localized Mobility System

Casey Carter         Robin Kravets   Jean Tourrilhes
Department of Computer Science, UIUC   Hewlett Packard Labs
{ccarter,rhk}@uiuc.edu   jt@hpl.hp.com
[*]

Abstract:

MobileIP, the standard for Internet mobility, enables transparent mobility for a mobile node, but requires communication to take a multihop path through the node's Home Agent. Although a user with a multiple-interface mobile node may desire the ability to communicate locally, perhaps while disconnected from the Internet, MobileIP offers no such support.

Contact Networking provides lightweight, localized network communication to a node with diverse network interfaces. The goal is to provide support for local connectivity equivalent to that provided by MobileIP for remote connectivity. The concept of link-layer awareness enables Contact Networking to tailor its operation to different links, using link-layer native services to implement abstract services when possible. Interface management and autoconfiguration insulate the user from concerns about the number and type of interfaces available.

In this paper, we motivate the need for localized mobility, and present the design and architecture of Contact Networking. Details of our prototype implementation illustrate the complexities of providing a localized mobility facility.


1 Introduction

Recent years have witnessed the development of a new class of mobile computing devices, merging personal communications and data access into a single device. One part mouse and two parts remote control, these mobile nodes are the interface point between users and the information environment. As users move through the world, they want to use their mobile nodes to maintain reachability through access to the global Internet, a form of mobility that is already well supported by MobileIP [21]. However, users would benefit from avoiding expensive multihop Internet connectivity and taking advantage of computing resources and services discovered locally, using whatever network interface is most convenient.

The inspiration for the name Contact Networking is to orchestrate direct communication between a mobile node and its neighbors. This focus on last-hop connectivity addresses the shortcomings of earlier work that assumes the presence of a network interface, with no concern for how that interface is link-layer configured. Contact Networking's approach to mobility support is diametrically opposite that of MobileIP. MobileIP treats all communication as though it is remote, even if local, whereas Contact Networking treats all communication as though it is local, even if remote. This difference in philosophy enables Contact Networking to provide lightweight service by being link-layer aware, tailoring itself to the characteristics of each link layer.

Contact Networking manages both IP and link-layer configuration, connecting to neighbors using all available interfaces. Exploring the environment informs Contact Networking when communication is possible. As long as some pair of compatible interfaces exists, Contact Networking can maintain connectivity between neighbors. To preserve battery power and maximize flexibility, interface activation is delayed until applications indicate demand to communicate with a given neighbor. Contact Networking configures network interfaces to provide link-layer connectivity and bidirectional routing between the two nodes using a mechanism developed in earlier work [33]. Communication is maintained as links form and break by rerouting to other interfaces as necessary. This neighbor handoff mechanism, P-Handoff in earlier work [32], is transparent to the user and ensures persistent connectivity.

In addition to active interface configuration and routing support, Contact Networking provides name resolution to enable operation without infrastructure. The Contact Naming System (CNS) allows users to refer to local resources with friendly names. CNS is implemented by mechanisms native to each link layer. Since distant communication relies on the primitive hop-by-hop interaction of neighbors, Contact Networking extends to manage multihop end-to-end communications when infrastructure access is available.

In this paper, we present the design of and case for Contact Networking. Section 2 motivates better mobility support for mobile nodes, particularly localized mobility. We present the requirements for localized networking in Section 3, which is realized by the Contact Networking architecture of Section 4. Some examples detail the operational requirements for localized networking in Section 5. Section 6 discusses our prototype implementation of Contact Networking, including limitations and lessons learned. Section 7 contains the natural progression from Contact Networking to future work.


2 Motivation

We define local and remote communication, and detail the lack of support in mobility solutions for localized networking. We advocate link-layer awareness, the idea that the network layer should incorporate link-layer knowledge to provide better service. The following hypothetical scenario provides a context in which to discuss the issues of localized networking:

You and your colleague Xue board the train to travel to the client presentation. Xue hasn't seen the final version of the video, so you both point your PDAs' infrared ports at each other, and you push the video file to her PDA. Your PDAs connect over infrared, establishing a local communication channel without requiring Internet connectivity. Seconds after the transfer is initiated, you put your PDA back in your briefcase. This breaks the infrared link, so your PDA switches automatically to 5GHz radio to continue the transfer.

After a few moments, you decide to walk back to the dining car. Due to the limited range of 5GHz radio, that link also soon breaks, forcing the communication to fall back to 2.4GHz radio. As you walk away, you leave 2.4GHz radio range and your PDA's only option to preserve communication is to activate its GSM radio and communicate over the Internet with Xue's PDA. For the first time, your PDA registers with MobileIP and begins using multihop remote communication.

In the dining car, you use 5GHz radio to exchange business cards with a new acquaintance, without even needing to see his PDA - you simply push the card to whichever device in your vicinity responds to the nickname ``Gerard.'' This transaction does not interfere with the ongoing transfer to Xue's PDA three train cars away.

As you return to Xue's car, the PDAs discover they can again connect to each other over local links. They shut down the expensive GSM radios and handoff the communication to the faster, cheaper 5GHz radio channel.


1 Local and Remote Communication

Mobile nodes carry out two fundamentally different kinds of communication, which we term local and remote communication. Local communication is between a mobile node and another node with which it shares direct connectivity. The defining characteristic is locality--interacting with ``this'' device that the user discovers in the environment, such as a local printer. A local communication is a simple unplanned association between two hosts, requiring no infrastructure access, but only that the two nodes share compatible communication hardware. Two users who meet each other and wish to exchange data between their mobile nodes, like the video in the scenario, use local communication.

Remote communication is between a node and some other explicitly addressed node that is not in the immediate neighborhood. Web browsing is the classic example of remote communication. The web browser knows the web server's identity, but not its location. The mobile node must have access to the network infrastructure to communicate. Unlike the case of local communication, there is no possibility of spontaneous interaction. In the scenario, when local communication links no longer provide connectivity, the PDAs automatically fall back to remote GSM communication over the Internet.

Remote communication is more resource-intensive than local. A short local transaction could be completed by briefly powering up a network interface and exchanging packets. A remote communication requires a mobile node to power up an interface, find an infrastructure provider, register with its home agent and then perform the communication before unregistering and powering the interface back down. The setup time necessary to register the mobile node's location, together with much longer delays incurred by the multihop path, keep the network interface powered over a longer time.

A mix of concurrent local and remote communication is not supported by current mobility approaches. MobileIP focuses on multihop remote communication [21]. MobileIP even explicitly forbid a node to directly communicate with any neighbor except its Foreign Agent:

While the mobile node is away from home, it MUST NOT transmit any broadcast ARP Request or ARP Reply messages. Finally, while the mobile node is away from home, it MUST NOT reply to ARP Requests in which the target IP address is its own home address. . .

The PDAs in the scenario would be unable to communicate via MobileIP had access to the Internet been unavailable, even though they share compatible hardware. If a network administrator was available, the devices could be manually configured. The administrator must choose between two alternatives:

  • Use the shortest range, lowest power link supported by both nodes. This conserves battery power for the mobile nodes, but constrains the users' motion within the limited range provided.

  • Use the longest range, highest power link supported by both nodes. This provides a large area within which users can move freely. However, they pay for this flexibility with battery power.
Neither approach is optimal in all cases. From the users' perspective, the optimal solution would be to use the lowest power, shortest range links that provide connectivity at any given time. This dynamic approach is untenable for manual configuration.


2 Multiple Wireless Technologies

There is no perfect wireless technology for all applications. The design of a wireless technology is a trade-off between range, capacity and power consumption. As soon as a technology comes to market it is obsoleted by newer, faster, more efficient technology. There will always be periods of transition from the current to the new wireless technology during which mobile nodes will support multiple links.

The management of multiple links is not integrated well into the traditional network stack. A multi-interface mobile node should be able to simultaneously utilize as many interfaces as necessary to satisfy its communication needs. In fact, users should not need to be aware of the number or type of interfaces available.

Among the many types of wireless technologies we pay special attention to a distinguished class we call Directional Area Networking technologies. These Directional links are characterized by short range and directional transmission characteristics, for example, infrared and laser. Although directional technologies are often deprecated, we see their limitations as features. Short range and directionality make directional technologies an ideal choice for a picking mechanism - selection of a particular device in the environment simply requires the user to point and click.


3 Link-layer Awareness

One of the best qualities of the Internet Protocol is its support for a variety of link layers by providing a uniform interface at the network layer. Although not every link layer was designed for IP, IP works over every link layer [3,5,10,15,23,25,26,27,29]. This least-common-denominator approach loses link-layer specific advantages. By restricting its expectations to simple datagram delivery, IP loses the richness of the individual link layers.

Link-layer awareness provides access to the capabilities of each link layer. The advantages are 1) lightweight discovery mechanisms for finding new neighbors, 2) tighter attachment to neighbor nodes, allowing rapid detection of link failure, and 3) the ability to perform link-specific optimizations, such as header compression, when appropriate. The richness of wireless links in particular makes link-layer awareness more attractive.

To clarify, consider two different wireless link layers: IEEE 802.11 [13], and IrDA (Infrared Data Association) [17]. Both links natively detect link breakage. These link failure mechanisms provide useful information to a link-layer aware network layer. The aware network layer can immediately stop using the broken route and more rapidly find a new route. In the absence of link-layer failure indications, some periodic messaging system must be used to monitor link integrity. MobileIP monitors links between mobile nodes and foreign agents with periodic beacons. Link-layer awareness conserves resources--the link layer monitors the link, whether the network layer pays attention or not--and can provide more rapid notifications than higher-layer monitoring. In general, link-layer awareness enables higher layers to transparently take advantage of implementations tailored to each link layer by providing abstract APIs for low-level services.

In the absence of link-layer awareness, the network layer must provide basic services like neighbor discovery. This duplication of service already in the link layer wastes resources. In addition, the network layer cannot possibly provide service of the same quality provided by the link layer mechanism without tailoring its approach to specific link layer characteristics. The end result of this approach is a fragile service only suitable on a single link layer, precluding true interface heterogeneity.


3 Design Requirements

The user experience of localized networking must be identical to that of infrastructure networking. The user should not need to use different interfaces or tools for local vs. remote communication. With that goal in mind, we propose the services necessary to support local connectivity and configuration-free multi-interface networking. We also address deployment, since a scheme to support localized networking is useless if not deployable in the current Internet.

1 Support Services

The critical services for localized networking are:
  1. Neighbor Discovery
  2. Name Resolution
  3. On-demand Interface Binding
  4. IP Autoconfiguration
  5. Neighbor Routing
  6. Channel Management
  7. Infrastructure Access
We present a justification for each service requirement.

1 Neighbor Discovery

Neighbor discovery allows a mobile node to determine who its one-hop neighbors are. Neighbor knowledge enables a node to determine which interfaces may be used to contact a particular neighbor. In the absence of a neighbor discovery service, a mobile node would be incapable of performing local communication at all.

IPv6 Neighbor Discovery (IPv6ND) [18] is unsuitable for providing discovery to mobile nodes. First, its operation is not fully specified for multihomed hosts. Second, Neighbor Unreachability Detection may be too slow to support efficient handoffs when a neighbor is actively supporting a flow. Foremost, any IP-based solution obviously requires IP to be up and configured, conflicting with the goal of on-demand interface binding. Using IP as part of the mechanism to bootstrap IP creates a chicken-and-egg problem that is avoided by performing discovery at a lower layer.

2 Name Resolution

To support localized naming, a name-to-address mapping mechanism is necessary, like DNS provides in the Internet. If mobile nodes are to communicate directly each node must participate in the name-to-address mapping. Additionally, it is convenient for the user to select a nearby device without needing to know its proper name. For example, a name that denotes ``the device my Directional Area Networking port is pointing at'' enables the picking mechanism discussed in Section 2-B.

3 On-demand Interface Binding

Binding is the process of configuring an interface to use a particular link-layer medium, like plugging an Ethernet card into a jack. Interfaces have an unbound state in which the interface is not capable of full communication but may be able to perform some tasks, such as scanning for neighbors. Once bound, the interface can send and receive IP packets. Although they lack jacks, wireless interfaces also require configuration to select the link-layer medium. Even broadcast interfaces like 802.11 have parameters that bind the interface to one physical channel at a time. To be link-layer neighbors, two nodes must have interfaces that are bound to the same medium.

There are two reasons to delay interface binding. First, it is important to keep interfaces in a low-power state, since mobile nodes are battery powered. Second, some interfaces provide point-to-point links and can be used to communicate with only one neighbor at a time. To save power and allow flexibility in choosing to which link to bind, a local communication scheme must delay binding as long as possible. Therefore, interface binding should occur on-demand, when an application indicates demand to communicate with a neighbor. Certainly, it is inefficient to maintain connectivity with neighbors with which the node has no need to communicate. Interface unbinding must also be automatic when demand is removed.

4 IP Autoconfiguration

Interface binding does little good if the user must manually configure IP address and netmask. To enable transparent network access, interface IP configuration, including assigning IP address and netmask, must also be automatic.

Link-local (LL) addresses, in either IPv6 [6,9] or IPv4 [4], provide autoconfiguration. Unfortunately, addresses with scope restricted to a single link provide little support for persistent communication. Transient addresses cannot be used as endpoints for a transport layer connection, or that connection will fail upon moving. There is no mapping from LL addresses to home addresses that identify mobile nodes. These two deficiencies render LL addresses little more than IP-layer aliases for link-layer addresses. Further, both IPv4 and IPv6 address require an initial period on the order of several seconds for duplicate address detection before the address can be used. This delay is hardly conducive to performing rapid handoffs across multiple interfaces.

5 Neighbor Routing

The final step necessary to neighbor communication is the establishment of symmetric routing state. Neighbor routes are all that is needed to complete the local communication. Once these routes are available, application layer communication can continue normally.

6 Channel Management

The previous services provide local communication to the mobile node, but do not shield the user from managing links and interfaces. Two abstractions are fundamental to the operation of channel management. First, a connection is a link-layer abstraction that is formed between two neighbors who wish to communicate. Presence of a connection indicates that a handshake has taken place between these neighbors signifying that both have agreed to the communication. Second, a channel is the end-to-end abstraction through which transport flows propagate. We say that the channel between two nodes is realized by a particular connection at any given time.

Although connections can break due to mobility, the goal of mobility support is to preserve the channel across these breaks. If the user is actively communicating with a neighbor through a channel over a connection that fails, the mobile node must maintain the channel by connecting over another interface if possible (see Figure 1). Similarly, if a mobile node is connected to a neighbor over technology A and a new, better path over technology B is discovered, the channel should automatically switch to the new interface.

Figure 1: Link-layer feedback and route failover
\begin{figure}\begin{center}
\epsfig{file=reroute.eps,width=5cm}
\end{center}\end{figure}

7 Infrastructure Access

Enabling a mobile node to communicate locally is an achievement, but not if the local focus completely occludes remote communication. The ability to access the Internet is far too critical to sacrifice in the name of other goals. In addition to the locally-oriented scheme, remote communication is necessary to complete localized networking support.

2 Deployment Considerations

The goals of autoconfiguration, neighbor routing, and channel management are not achievable by only a single node of a neighbor pair. Bidirectional communication necessarily requires support from both neighbors. Consequently, it is impossible to provide localized communication support when directly communicating with legacy network nodes.

To be deployable, a localized communication scheme must not require support from every node in the Internet. The localized scheme can put no special requirements on applications; it should allow unmodified binaries to work with existing networking APIs. One way to achieve this level of transparency is to isolate the scheme at the network layer or below, so that transport and application layers see the standard IP network-layer interface. Applications and users are presented with the illusion of continuous network service, with no effect other than a temporary aberration in service during handoffs.

Application- and transport-layer mobility support advocates claim that applications must see mobility events in order to adapt to changed network service [20,30]. Note that providing the illusion of network stability does not necessarily preclude the potential to provide mobility notifications to interested applications. It only reduces the impact on applications that are not mobility-aware.


4 Architecture

We present Contact Networking's architecture and discuss how its individual modules fit the requirements presented in Section 3. Since the requirements span route management to interface configuration, Contact Networking lies at the junction between the link and network layers in the OSI network stack, extending into both layers as depicted in Figure 2. Contact Networking includes a link-layer agnostic network layer module and several link-layer aware modules. The components of the network layer module manage routing and select between multiple paths available to a neighbor through different interfaces.
Figure 2: Introducing Contact Networking into the OSI stack
\begin{figure}\begin{center}
\epsfig{file=blowup.eps,width=7cm}
\end{center}\end{figure}

Components of the link-layer-aware modules monitor the environment and report discovery events and link transitions. For local communication, link-layer modules also monitor link activity and inform the node when neighbors move out of range (i.e., a link breakage event). Contact Networking's link-layer discovery mechanisms incorporate the functionality of the Address Resolution Protocol (ARP) [24], mapping IP addresses to link-layer addresses.

Our description of Contact Networking architecture begins with its detailed component structure, as depicted in Figure 2. The specific architectural components discussed are:

A.
the network database, where the mobile node stores its model of the environment,
B.
the IP autoconfiguration technique, which assigns addresses to bound interfaces,
C.
the Contact Naming System (CNS), a name resolution scheme for Contact Networking nodes,
D.
the Contact Networking approach to neighbor discovery,
E.
the neighbor routing component,
F.
the routing control, which directs interface binding, neighbor routing, channel management and infrastructure access,
G.
the infrastructure access component, which Contact Networking uses to access the Internet.
For each architectural component, we describe its responsibilities in fulfilling the design requirements, as well as how it interacts with other components.

1 Network Database

Contact Networking includes a database that models a node's current view of the environment. This database is the central communication point for all parts of the architecture. The four basic abstractions with which it is populated are interfaces, links, neighbors and paths.
  • Interfaces are network attachment points on a node, such as Ethernet interfaces or cellular modems.

  • Links are the communication media to which interfaces bind. An interface can bind to only one link at a time. Treating links as first-class entities makes it possible for the database to model both point-to-point links, with one neighbor per link, and broadcast links, with many neighbors per link.

  • Neighbors are the nodes in the environment with which the user may wish to communicate.

  • Paths are a pairing of a link and a neighbor augmented with the neighbor's address on that link.

An interface can bind to only one link at a time. Contact Networking can simultaneously establish connections with any and all neighbors to which it knows paths on a bound link. To establish communication with a neighbor, route control chooses a path to that neighbor from the database to activate. Path activation may necessitate interface binding and IP autoconfiguration using the configuration state for the link in the database. Contact Networking synchronizes path activation between neighbors, ensuring that both neighbors use symmetric routes. Once bidirectional path activate is complete, the paths are considered connected.

A path can be in one of four states:

  • Available - The path is believed to exist but is currently inactive.
  • Connected - The path is currently capable of transporting packets to the neighbor.
  • Blocked - The path was connected, but is currently in a transient failure condition.
  • Unblocked - The transient condition has passed, but the path has not been reactivated.
The blocked and unblocked states make it possible for Contact Networking to temporarily reroute traffic to another path while the primary path is recovering.

To clarify these abstractions, Figure 3 depicts a network composed of two mobile nodes and one stationary node. The base station simply bridges the wired and wireless links, and is therefore not visible to Contact Networking. The stationary node has one interface, and each of the mobile nodes has two. There are two links in the figure, one IrDA and one 802.11/Ethernet. The two bridged segments form a single link. Each mobile node knows a path to the stationary node, and two paths to its mobile counterpart, one over 802.11 and one over IrDA.

Figure 3: Interfaces, Links, Paths, & Neighbors
\begin{figure}\begin{center}
\epsfig{file=ilpn.eps,width=5cm}
\end{center}\end{figure}


2 IP Autoconfiguration

A network interface must be configured with an address and subnet mask before IP can use it. In traditional IP, providing unique interface addresses is a problem in its own right, requiring either configuration or protocol solutions [4,6,7,22]. These heavy-weight solutions require significant setup time to allocate an interface address, and create another problem when considering mobility--a transport flow cannot outlive the IP addresses used to identify its endpoints. If those addresses are transient, interface-specific addresses then mobility is impossible. The goal of mobility is to provide a communication channel that persists beyond the lifetime of a single address-to-interface configuration.

Contact Networking embraces and extends the MobileIP approach to providing a persistent communication channel in the face of link mobility. A home address is associated with the mobile node itself with no subnet mask. MobileIP configures the home address on a particular interface providing mobile networking through only that interface, or selectively configures the home address on the single interface that currently has connectivity, enabling vertical handoffs [31]. Contact Networking extends this notion to its natural conclusion, configuring the home address on all network interfaces simultaneously.

Due to the expanded role of the home address in Contact Networking, we designate it the Globally Routable IP address (GRIP). Every node is identified by a unique GRIP. Contact Networking requires GRIPs to be permanently assigned static home addresses, so that the presence and uniqueness of the GRIP can be guaranteed even when disconnected from the infrastructure. Contact Networking associates each neighbor's GRIP with its entry in the network database. Use of the GRIP for local communication in Contact Networking neatly sidesteps the problem of providing distinct addresses for each network interface. Configuring the GRIP on all interfaces allows the mobile node to persistently communicate through all interfaces simultaneously. The GRIP is guaranteed to live longer than any communication channel.

Using the same address on several interfaces is in direct conflict with the traditional IP addressing model in which one IP address denotes one network interface. Semantically, Contact Networking removes the emphasis that IP places on the role of the network interface. To Contact Networking, interfaces are transient entities, but the GRIP always stays the same. Since all application communication between nodes uses the GRIP, mobile nodes are accessible and successfully mobile as long as at least one network interface is present. The choice of which interface to use for a particular channel becomes a pure routing problem, a choice of path from the network database, and not a question of interface management or configuration.


3 Name Resolution

The Contact Naming System (CNS) is Contact Networking's name resolution and name-to-address mapping facility. CNS names are structured exactly like DNS names, with textual names separated by dots. CNS names enable users and applications to transparently control the operation of Contact Networking by specifying CNS names in place of DNS names.

Every node has a full CNS name, which is exactly the fully-qualified DNS name that resolves to its GRIP. Agreement between CNS and DNS on the proper name for a node enables remote and local communication to use the same name.

CNS also supports link-layer specific name aliases, ``wildcard'' aliases and service aliases that give a user flexibility in choosing a neighbor. Link-layer specific aliases combine a CNS name prefix with a suffix denoting a particular link layer. This facility enables a user to specify that they want, for example, bob.irda, which resolves to any neighbor whose CNS name starts with bob reachable via IrDA. The wildcard alias any can be used to select any reachable neighbor, perhaps additionally qualified with a link-layer specific suffix. The infrared picking mechanism described in Section 2-B can be easily implemented with the alias any.irda.

A node replies to queries with its CNS record, containing its name and GRIP, and possibly service information. For example, the node bob.cs.uiuc.edu, which provides print service and acts as a MobileIP foreign agent, might have the following CNS record:

GRIP : 128.174.244.37
Name : bob.cs.uiuc.edu
Services : printer, MIPFA
Contact Networking attaches each CNS record to the corresponding neighbor record in the network database. Name queries that can be satisfied from the database require no network traffic. Link-specific alias queries that cannot be answered from the database only result in network traffic on links of the specified type. An request to resolve bob.irda queries for bob only on IrDA.

CNS is similar to other multicast name resolution schemes [1,8,19]. The main difference is in implementation. Our goal of link-layer awareness means that CNS is transported by link-layer specific mechanisms instead of relying on IP multicasting support as in other approaches. Furthermore, the lifetime of CNS records is tightly coupled with neighbor knowledge in the network database. This tight coupling allows CNS records to be cached long-term without refreshing, as long as the neighbor is still present.

Each node monitors its interfaces for CNS queries requesting its configuration, although CNS may not use this request-reply model on every link layer. A Contact Networking node uses link-layer native mechanisms when available to disseminate and retrieve CNS records. Some links perform discovery while in the unbound state, so link-layer aware CNS conserves power and lowers delay over an approach that uses IP to resolve names. Nodes with sufficient power may also actively advertise their CNS records either through a link-layer discovery method or by periodic broadcast. These advertisements enable other interested nodes to easily collect CNS records by passive listening.

A node returns its CNS record in response to a the following types of CNS queries:

  • Name queries
  • GRIP queries, enabling reverse lookup
  • Service queries (e.g., a node that provides MobileIP Foreign Agent service might respond to the name MIPFA)
  • Wildcard queries, possibly link-layer qualified
These CNS query types provide several ways for users to choose machines in their environment with which to interact, without requiring changes to IP network software that uses DNS names. CNS access is integrated alongside the normal DNS name resolution mechanism on the nodes, so that application name lookups try CNS resolution before DNS. A unified name resolution API makes localized networking easily available to network applications. For example, to purchase a can of Dr. Pepper™ from a vending machine, a user would point the infrared port of their device at the vending machine and point their web browser at https://any.irda. The CNS resolver would return the vending machine's CNS record that specifies its name and GRIP. An exchange of business cards with another user named Bob would probably use the name bob to locate the GRIP of Bob's mobile node. We call this ``getting a GRIP'' on the destination.


4 Neighbor Discovery

Neighbor discovery must incorporate link-layer awareness. Determining when another node is within the sphere of communication of a particular interface on a particular link is necessarily link-layer specific. Link-layer adaptation modules perform neighbor discovery and indicate neighbor appearance/disappearance to the link-layer agnostic module. Each link-layer aware discovery mechanism is tuned to the particular link, using native discovery mechanisms when available. This level of link-layer awareness provides high quality discovery on each link layer without compromising the generality of the rest of the Contact Networking system.

What other systems term neighbor discovery, finding a reachable peer on a link, is really path discovery in Contact Networking. Neighbor discovery in Contact Networking is only complete after two neighbors have exchanged CNS records. After the exchange of CNS records Contact Networking updates the network database with a new path entry and a new neighbor entry, if the neighbor is not already present.

Contact Networking's use of CNS records for neighbor discovery combines neighbor discovery, address resolution and name resolution into a single protocol. This combination reduces total overhead in contacting a neighbor, as well as allowing for long-term caching of name-to-IP address and IP-to-LL address mappings. The tight coupling of address mappings to neighbor lifetime means that mappings need never be refreshed and are simply flushed when a neighbor goes away.

5 Neighbor Routing

Contact Networking takes link-layer network semantics, a flat address space with one-hop communication, and presents it to the transport layer as a set of host-specific routes. This IP facade on link-local connectivity enables IP applications to use the localized networking facility equivalently to traditional IP support.

Routing necessarily affects the address model of Contact Networking. The use of GRIPs for local communication creates a class of local routes administered by Contact Networking. There is exactly one such route corresponding to each neighbor in the network database. A local route can be inactive, serving as an indication that Contact Networking can provide a path to that neighbor on demand, or active, enabling packet forwarding across some connected path.

Traditional IP routing, which views IP addresses as specifying a location within the internetwork, is retained in Contact Networking for routing to remote destinations. The result is a bipartite routing system that provides maximum flexibility in routing directly to neighbors--via local routes-but does not lose the ability to interface to the Internet with traditional routes. Integrating both styles of routing enables transitional deployment. Contact Networking mobile nodes can contact the current Internet through access points much like MobileIP foreign agents that provide Contact Networking service in addition to traditional IP routing. In the absence of Contact Networking-enabled access routers, a mobile node must resort to traditional techniques for unreachability detection and cannot provide rapid handoff when the link to the access router fails.

6 Route Control

Route control in Contact Networking handles on-demand interface binding and channel management. When a Contact Networking node first wishes to contact some IP address, it performs a lookup in the network database for a neighbor whose GRIP is that address. If the neighbor entry is present, its CNS record and at least one path will be known--the path over which the neighbor was discovered. Route control selects one of the available paths to connect and negotiates connection with the neighbor. If no record is present, the node falls back on traditional IP networking to find a remote route to the destination, possibly initiating infrastructure access as detailed in the next section. Route control also performs channel management by disconnecting idle connections and unbinding idle interfaces when the last connection on that interface is dropped. When better paths are discovered, route control actively switches channels to better connections.


7 Infrastructure Access

Since Contact Networking views all communication as direct neighbor communication, some extension is necessary to support remote communication. Contact Networking treats remote communication as local communication with a virtual neighbor that represents the entire infrastructure network. This conversion of remote to local communication enables Contact Networking to apply its normal mechanisms for on-demand establishment and channel management to infrastructure access.

In Contact Networking, a network node that wishes to provide infrastructure network access to others by performing as a MobileIP Foreign Agent advertises its willingness to do so through the Contact Naming System. Mobile nodes that need infrastructure access then discover the infrastructure provider normally through neighbor discovery. Upon discovering an access provider, Contact Networking creates a virtual path to the virtual neighbor that corresponds to the real path to the access provider (see Figure 4).

Figure 4: Infrastructure as a virtual neighbor
\begin{figure}\begin{center}
\epsfig{file=infra.eps,width=6cm}
\end{center}\end{figure}

Integrating dial-up access into this architecture is trivial. A dial-up phone number is essentially a path description for a type of virtual path. Whenever a mobile node can use a dial-up interface, it is one hop away from the virtual neighbor. This virtual path would be statically configured into Contact Networking, with a simple monitor module that ``discovers'' the virtual path when a modem is plugged in or when within GSM coverage.

Contact Networking route lookups for IP addresses which do not correspond to neighbors in the network database are redirected to the virtual neighbor. Connecting a path to the virtual neighbor also connects its corresponding real path and performs MobileIP registration through the neighbor on the real path.

If a mobile node needs to maintain Internet access to enable externally initiated channels, Contact Networking can be configured to never drop virtual connections due to idleness. Normal neighbor handoff mechanisms would then preserve the channel to the Internet whenever possible, keeping the mobile node accessible to the rest of the world.


5 Examples

Some simple examples serve to illustrate the operation of Contact Networking. For these examples, we discuss a hypothetical user, Prashant, with a mobile node that has infrared, wireless LAN and wired Ethernet interfaces. Prashant is a Computer Science graduate student, who happens to be wandering around the CS building. The GRIP of Prashant's mobile node is topologically located on the Ethernet LAN. There is a building-wide wireless LAN, which has an attached DNS server and a MobileIP Foreign Agent, as in Figure 5. All machines on the CS building network are Contact Networking enabled.
Figure 5: Example network from Section 5
\begin{figure}\begin{center}
\epsfig{file=dcl.eps,width=6cm}
\\ \rule{0in}{0in} \\
\epsfig{file=dcl_legend.eps,width=6cm}
\end{center}\end{figure}

1 Simple Local Communication

In the first scenario, Prashant is walking through the Computer Science building, when he passes a vending machine. Feeling a grumbling in his belly, Prashant decides to purchase a bag of Fritos™. We hypothesize the existence of software in Prashant's mobile node and the vending machine that is capable of automatically performing a small cash transaction. To initiate the transaction, Prashant points his device at the vending machine's infrared port and clicks the ``pay'' button. A flurry of events ensues.

The application on Prashant's machine tries to resolve the CNS alias any.irda. The IrDA-specific CNS module performs native IrDA discovery to detect the vending machine nearby. As a part of the discovery process, Prashant's node and the vending machine exchange CNS records containing their GRIPs and DNS names. As a side effect of CNS discovery, Contact Networking routes are created to enable on-demand connection of the two machines. The CNS resolver on Prashant's machine returns a struct hostent to the application, informing it that any.irda is in fact an alias for chips.cs.uiuc.edu with GRIP 128.174.244.91.

Having obtained an IP address for the desired neighbor, Prashant's application initiates a TCP flow to the application in the vending machine. The first packet of this flow is queued while the path to the vending machine is connected. Since no better path to the vending machine is known, Contact Networking connects the IrDA path. A full path connection occurs:

  1. The IrDA interface on the mobile node is bound to the link between it and the vending machine.
  2. The mobile node establishes a connection to Contact Networking on the vending machine.
  3. Contact Networking on the vending machine accepts the connection request and both nodes create local routes indicating that the channel between the two GRIPs is using this particular connection.

Upon establishing the connection Contact Networking forwards the queued data packets to the vending machine. Transaction processing then continues normally with no further involvement from Contact Networking. Prashant grabs his bag of Fritos™ and starts walking back to his office to write a paper about scatternet formation in Bluetooth. Within several seconds, the IrDA module on each machine informs Contact Networking that the connection has become idle. Contact Networking drops the idle connection and unbinds the IrDA interface since no other connections exist on the link.

2 Local Communication with Handoff

On his way to the office, Prashant passes a soda machine and decides to purchase a can of Coke™ to help wash down those salty Fritos™. The transaction proceeds similarly, until the impatient Prashant returns his mobile node to his pocket, interrupting the TCP flow over IrDA. The IrDA module in Prashant's mobile node informs Contact Networking of the premature connection breakage. Since the connection was being actively used by data traffic, Contact Networking immediately tries to find an alternate path to the soda machine in the network database.

Luckily for Prashant, the soda machine is also connected to an Ethernet segment bridged to the Wireless LAN. Contact Networking connects this alternate path. During the handoff procedure, no connection is available to support the channel to the soda machine, so any data packets are queued. After the neighbor handoff completes successfully, the channel is rerouted over the new connection and the queued packets are retransmitted. TCP on Prashant's node retransmits the single lost packet and recovers the transaction without the application's or the transport layer's awareness or participation. As in the previous example, the transaction completes normally and the connection becomes idle. Contact Networking at both ends drops the connection.

3 Infrastructure Access

On the way back to the office, Prashant decides to load Slashdot into Mozilla to check for interesting news--which can be challenging, with a bag of Fritos™ in one hand and a can of Coke™ in the other. CNS resolution of www.slashdot.org fails since Prashant is nowhere near the Slashdot web server. When his DNS resolver tries to resolve www.slashdot.org, Contact Networking connects the path to the DNS server to complete the resolution, which returns an IP addresses for Slashdot's web server.

In this case, the first TCP packet of the flow is not destined for a neighbor in the network database, so Contact Networking connects its virtual path to the Internet:

  1. Virtual path connection activates the underlying path to the Foreign Agent on the wireless LAN.
  2. Once the Contact Networking connection to the Foreign Agent is established, MobileIP registration takes place.
  3. When registration is complete, the virtual path is considered to be connected.
The TCP packet is finally forwarded over the newly established channel to Slashdot and Prashant's browser retrieves the web page normally. Several seconds after the page load completes, the virtual path becomes idle, forcing MobileIP deregistration and disconnection from the Foreign Agent.


6 Implementation

The prototype implementation of Contact Networking is developed on Linux atop a modified kernel. The implementation supports three different link types: infrared (IrDA), Ethernet and 802.11. The centerpiece of the implementation is the Connectivity Manager, a userspace daemon that runs on each Contact Networking node. Transparent application access to CNS is realized by an extension for the name service switch library.


1 Kernel Modifications

We extended the Linux 2.5 kernel by providing a mechanism for wireless interface drivers to export events to userspace programs. This extension became Wireless Extensions version 14 and has since been integrated into the development series Linux kernel at version 2.5.7, as well as back-ported into the stable kernel series at version 2.4.20. One event type we included in the Wireless Extensions is link-layer delivery failure notification. The drivers for Orinoco 802.11 cards (orinoco_cs), Aironet cards (airo_cs) and cards based on the Intersil PrismII chipset (hostap_cs) were modified to send these notification events. These driver modifications are in various stages of integration into the kernel sources.


2 Connectivity Manager

In Contact Networking, each computer hosts a Connectivity Manager (CM) that configures its network interfaces and coordinates its discovery of and connection to neighbors, as well as maintaining the Contact Networking network database. The CM provides a common rendezvous point between user programs, the network stack and the routing tables.

1 Management and Adaptation Layers

The CM is organized as a process that reacts to asynchronous events. Low-level events are passed up from the link-layer specific adaptation modules, collectively denoted the adaptation layer, to the link-layer agnostic management layer. The management layer responds to events by directing the adaptation modules to connect or disconnect paths, or by modifying the network database. The management layer also responds to application name resolution queries from the Name Service Switch (NSS) interface (see Section 6-C), searching the network database for appropriate CNS records.

Adaptation modules signal the management layer when the following events occur:

  • An interface is inserted/removed from the node
  • A link is discovered/lost
  • A neighbor is discovered/lost
  • A path to some neighbor is discovered/lost
  • A path has changed state
  • A connection request was received from a neighbor
In response to these signals, the management layer uses an abstract API to manipulate interfaces, links, and paths. Each adaptation module provides a concrete implementation of the abstract API with behaviors appropriate to its link technology. The management layer uses these APIs to direct an adaptation module to bind/unbind an interface to a link, connect/disconnect a path on a bound link, or reject/accept a connection request from a neighbor by connecting the return path.

Contact Networking takes an approach different from that of traditional IP in providing network layer services. Contact Networking is aware of the characteristics of each link layer and uses link-layer specific functionality to provide better network service. Contact Networking has a link-layer specific adaptation module for each supported link type. Adaptation modules implement CNS querying and neighbor discovery in a lightweight manner, using native link-layer discovery mechanisms when available. Link-layer modules also inform the CM of dynamic interface insertion and removal or conditions that represent failure of a connection.

Link-layer modules also provide mechanisms to form connections to neighbors - path connection sets up bidirectional connectivity with the neighbor over the chosen path, binding an available interface to the path's link if necessary. Once a path is connected, the link-layer module monitors the connection for breakage with link-native mechanisms (e.g., failure to receive an acknowledgment on 802.11). Link-layer connection break indications cause the CM to reroute the channel to that neighbor over another path, if possible. Removal of a bound interface also causes rerouting to occur for any channels using that interface. The adaptation modules monitor connections for idleness and signal the management layer to drop the connection. Disconnection tears down the neighbor connection, causing the interface to unbind from the link upon disconnecting the last connection. Unbinding and powering down the interface at the earliest possible time enables power conservation and allows the interface to be used to bind to other links.

All link-layer adaptation modules use a Linux rtnetlink socket to monitor interface creation events [28]. This enables each adaptation module to report interface discovery/loss events to the management layer.

The interface management aspect of Contact Networking is similar to Physical Media Independence (PMI), ``an architecture for dynamically diverse network interface management'' [14]. PMI observes the availability of network interfaces and informs applications of changes in interface state and availability, as well as coordinating a vertical handoff of the default route. Unlike the active interface management of Contact Networking, PMI passively reacts to network interface state changes.

2 IrDA Adaptation Module

The IrDA [17] adaptation module uses mechanisms native to IrDA and IrNET to provide services to the management layer. IrDA has a native discovery mechanism and a link-layer attribute exchange protocol (IrIAP). Path connection is realized by IrNET, which uses synchronous PPP for control, operating directly on IrDA frames. IrNET generates events to signal the IrDA adaptation module.

Upon receiving an IrNET discovery event, the IrDA adaptation module uses IrIAP to exchange CNS records with the new neighbor and delivers the resulting CNS record along with a neighbor discovery signal to the management layer. Since IrDA is a point-to-point technology, paths and links are unified in the IrDA adaptation layer. The architectural constraint of binding an interface to at most one link at a time mirrors the point-to-point nature of the link layer in Contact Networking. When the corresponding IrDA neighbor un-discovery event is reported from IrNET, the adaptation module reports both a lost path and a lost link event to the management layer.

Link block and connection request events are passed unmodified up to the management layer. The adaption layer maps link-layer identifiers into the database entry for the path corresponding to the blocked connection or the requesting neighbor.

The IrDA adaptation module, when instructed to connect a path by the management layer, forks a child pppd on the IrNET control channel. The pppd ``connect script'' argument is actually directions for IrNET to choose which neighbor to connect. The binding completes when the IrNET event channel reports successful connection, which is signaled to the management layer. If PPP/IrNET connection fails, the pppd will exit prematurely and the IrDA adaptation module notifies connection failure to the management layer.

To force disconnection, the IrDA adaptation module simply kills the child pppd. When the connection has finally shut down, IrNET will report disconnection on its event channel, at which time the IrDA adaptation module marks the interface in the network database as once again available for binding to other links and reports disconnection to the management layer.

Forking a child pppd process for neighbor connection is a heavyweight procedure, so using IrIAP to exchange CNS records below IP provides low latency discovery, avoiding IP setup altogether. On a connection-oriented link layer like IrDA or Bluetooth, it is unclear how one would perform network-layer discovery. To which neighbor do you connect your link layer before sending, say, an ARP request? Contact Networking's link-layer awareness enables support for discovery on connection-oriented link layers.

3 Ethernet/802.11 Adaptation Module

802.11 [13], besides being wireless, is as different from IrDA as possible. 802.11 provides a simple datagram-delivery-port abstraction, with no additional frills built in. These facilities must then be directly coded in the 802.11 adaptation module. Interestingly, the additional code this creates is traded for code the IrDA module uses to monitor the external pppd. Both modules weigh in at almost exactly 2000 lines of C.

The 802.11 layer requires protocol support to handle many issues that IrNET/IrDA does not. Consequently, we devised a set of protocol commands that are encodable in a trivial subset of XML to facilitate easy communication between neighbor adaptation modules. This message encoding is used for CNS transport, path connection, path disconnection and idleness monitoring.

Lacking IrIAP, the 802.11 adaption module must provide an alternate means to exchange CNS records. A UDP broadcast request/reply protocol enables the adaptation layer to query the CNS records of its neighbors on a link or reply to their CNS queries. Since CNS record exchange must precede any connection between two neighbors on the link, a CNS request necessarily contains an advertisement for the source. Neighbors use the CNS request/reply as an opportunity to record MAC addresses and GRIPs. The adaptation layer creates an ARP table entry for the neighbor's GRIP with the discovered MAC address. The ARP entry's lifetime is coupled to the CNS record, avoiding ARP resolution altogether for a neighbor whose MAC address is already known.

Neighbor CNS records discovered over 802.11 are immediately reported to the management layer. Unlike with IrDA, it is possible to discover many paths to different neighbors on the same 802.11 link. Path connection for 802.11 requires only a simple handshake of XML commands to ensure bidirectional connectivity, so connection is much lighter weight and lower latency than IrDA.

The 802.11 adaptation module monitors an rtnetlink socket for Wireless Event reports, specifically packet delivery failure notifications from the device driver. The device driver reports the unreachable neighbor's MAC address, which is used to locate the path corresponding to that neighbor in the network database. Currently, the prototype treats a single failure indication as path blockage and reports it as such to the management layer. Future work will analyze this decision to determine if some level of hysteresis may provide better performance than single-packet-loss path blockage.

Although connection establishment needs only a simple request/reply and a single route creation, connection monitoring for 802.11 is greatly complicated over IrDA. In IrDA, monitoring the interface's send/receive packet counters is sufficient to indicate idleness of link and path. In 802.11, it is possible to connect many paths over the same interface, so that it is impossible to determine which path or paths are idle by simply examining the packet send/receive counters. Our prototype uses the Linux iptables firewall support to add an iptables rule for each connection that only recognizes traffic on that connection. The adaptation layer can determine connection idleness by reading the iptables rule's packet counter.

The iptables rules created by the 802.11 adaptation layer are a rather problematic piece of state in that they can outlive the CM process. While under development and prone to crashing, the CM tends to litter the iptables with stale rules. To avoid this problem, the adaptation layer forks a child process that clears out all associated iptables rules when/if the CM exits unexpectedly.

Path disconnection is relatively simple. At the management layer's behest, or in response to a neighbor's disconnect request, the 802.11 adaptation layer destroys the corresponding route and iptables rule and sends a disconnect command to the neighbor. After the neighbor confirms disconnection, the final path disconnect notification can be reported to the management layer.

A future goal for the 802.11 adaptation module is to support access point scanning to determine the Extended Service Set Identifiers (ESSIDs) of nearby access points. Each distinct ESSID discovered can be modeled as a distinct link in the network database. Although we added access point scanning support to Wireless Extensions v14, time did not allow completely integrating this feature into the prototype.

4 Virtual Adaptation Module

This adaptation module exists to support infrastructure access via virtual paths to the virtual neighbor. To Contact Networking, the single virtual neighbor represents the entire Internet. In Figure 4, the mobile node has two paths available to the infrastructure through different providers. When informed of the discovery of a path $P$ to a neighbor $N$ that advertises infrastructure service, the management layer directs the virtual adaptation module to create a corresponding virtual path $P'$ with the virtual neighbor as its destination. The path $P'$ is dependent on $P$, so that destruction of $P$ causes destruction of $P'$. Semantically, this path dependency asserts that infrastructure access on the path $P'$ is only possible while $P$ is reachable. The dependency relationship between $P'$ and $P$ implicitly captures the fact that the node must direct packets destined for remote hosts through its neighbor $N$.

Requests from applications to contact non-neighbors are treated as requests to contact the virtual neighbor. When the user requires remote access, the normal path selection mechanisms in the management layer choose a virtual path $P'$. Connection of $P'$ causes connection of the underlying real path $P$ and initiates MobileIP registration through the neighbor $N$ that $P$ reaches, as well as creation of a default route with next hop $N$.

Virtual paths are monitored just like other paths. Therefore, vertical handoff for remote communication naturally falls out as an effect of neighbor handoff between virtual paths. When applications communicate with remote hosts, Contact Networking sees traffic over the virtual connection to the virtual neighbor. A break of the underlying connection is treated as a break of the virtual connection, which will cause the management layer to reroute the infrastructure channel over an alternate virtual path to some other infrastructure access provider.


5 Packet Handling

Contact Networking uses on-demand path connection and interface binding to provide maximum flexibility with minimum resources. To provide on-demand path connection, the CM requires a mechanism to intercept packets from local applications for neighbors to which it has valid paths. We call this mechanism the demand channel. Additionally, the demand channel must also be capable of capturing any non-local packets to support the virtual neighbor. Captured packets are queued until a path to the destination can be connected and then forwarded over the fresh connection.

The demand channel is implemented as a set of routes in the kernel routing table, one per neighbor, that points into a universal tunnel interface. The Linux universal tunnel is a device driver that attaches a network interface to a device file. Packets routed through the interface by the kernel may be read from the file and packets written to the file appear to have been received on the network interface. Packets thus captured are buffered in user-space.

Contact Networking also needs a mechanism to resend packets that it buffers during interface binding and path connection. Simply writing the packets into the universal tunnel will not suffice, since the mobile node is probably not configured to support packet forwarding. Our CM prototype uses a raw IP socket to inject unmodified captured packets into the network stack.


3 Application CNS Interface

The final piece to complete the Contact Networking architecture is a transparent application interface to CNS. Name resolution in Linux is handled through the Name Service Switch (NSS) library. NSS dispatches name/address queries to multiple name services, notably DNS and NIS. Contact Networking inserts a CNS name resolver into the NSS configuration, so that application queries try CNS before other naming services. Application queries are coded in XML and sent to the CM.

The name mapping component of the CM first tries to resolve queries from the network database. Failing that, any action taken to resolve the name is dependent on its structure. If the name ends in a suffix that identifies it as a link-layer specific alias--Currently irda for IrDA and wlan for 802.11--the name is passed to the appropriate adaptation module for on-demand resolution. The link agnostic suffix adhoc specifies that all adaptation modules should try to resolve the name on their links. Otherwise, the name mapping component returns a failure indication to NSS, which then continues to try to resolve the name with other name services as normal.

The wildcard alias any is handled by matching some appropriate neighbor entry in the network database. It is possible for naming conflicts to occur with wildcard aliases. For example, any.irda probably resolves to a single neighbor, but any.wlan or any.adhoc potentially aliases a large number of neighbors. When name ambiguity occurs, the name mapping component currently reports a ``name not unique'' error back to the original application. A more powerful mechanism for name disambiguation, possibly with user assistance, is a topic for future work.


7 Conclusions and Future Work

The main contribution of Contact Networking is to provide a complete solution for communication management on a local scale. Support for naming, routing, channel management and interface configuration in Contact Networking place localized networking on par with traditional Internet mobility. Contact Networking provides everything necessary for neighbor communication in the absence of the usual infrastructure service, while preserving ease of integration with the Internet when available. Unlike earlier work, Contact Networking is not dependent on the presence of the Internet for operation.

Contact Networking realizes the goals of a mobile node with multiple wireless interfaces through the application of link-layer awareness. Support for local communication differentiates Contact Networking from traditional mobility solutions that are infrastructure dependent. The Contact Naming Service provides on-demand naming and basic service discovery using link-layer native support. There are some important avenues we intend to explore to enhance Contact Networking.

Flexible Network Support for Mobile Hosts [35] extends MobileIP with support for multiple packet delivery methods, including MobileIP with or without reverse tunneling and/or route optimization, and regular IP. A mobile policy table enables selective mobility on a per-flows basis. Further, Flexible extends the MobileIP home agent to allow a mobile node to extend this flow-granularity routing support back to the home agent. The Flexible home agent enables different traffic flows to be routed to different care-of-addresses of the mobile node. In this way, Flexible enables mobile support for multiple interface remote communication.

Integration of Contact Networking and Flexible into a single system, along with a policy control to direct which traffic should use which interface, is an interesting avenue of future research. Allowing users to express preferences for network service to the CM would greatly increase the usability and applicability of the system.

Currently we are improving the interface management mechanisms present in Contact Networking. The approach we call co-link configuration will allow two devices to negotiate common link-layer binding configuration for shared interfaces. Co-link uses one interface to bootstrap others. For example, two PDAs could use IrDA to exchange a frequency and encoding key for secure 802.11 communication.

With no authentication, the local discovery and route management components of Contact Networking enable a local attacker to masquerade as an Internet host of the attacker's choice. This vulnerability is a consequence of the absence of infrastructure support and can be seen as a magnification of the ARP security hole [2]. Peer-to-peer authentication approaches from ad hoc networking could address this issue in Contact Networking [12].

Other work has suggested transport protocols that can aggregate bandwidth from multiple interfaces simultaneously [11,16]. Contact Networking provides a framework for discovery of multiple paths that these protocols can use. We are investigating the integration of Contact Networking with an aggregating transport protocol.

Many network services have static or infrastructure-dependent configuration. Notable among these services is DNS. A node is usually configured statically with a set of DNS servers. DNS, and similar services, could possibly benefit from the local service discovery model that CNS makes available. A mobile node that wishes to avoid the expense of remote communication could then use local DNS servers that it discovers through CNS. Generalization of this approach to other services with similar requirements would also be useful. Use of an IP-based protocol for service discovery, such as SLP [34], necessitates IP configuration before service discovery may take place. An IP-based protocol cannot, therefore, be used to bootstrap IP.

Availability

We regret that we are unable to make our prototype available at this time. The current lack of documentation makes it nearly impossible for outside interests to install the prototype. We do intend to make Contact Networking available soon; interested parties should contact the first author at ccarter@uiuc.edu.

Bibliography

1
AppleTalk Network System Overview.
Addison-Wesley Publishing Company, Inc., 1990.

2
S. Bellovin.
Security problems in the TCP/IP protocol suite.
ACM Computer Communications Review, 19(2), April 1989.

3
C. Brown and A. Malis.
Multiprotocol interconnect over frame relay.
Request for Comments (Standard) RFC 2427, Internet Engineering Task Force, September 1998.

4
S. Cheshire, B. Aboba, and E. Guttman.
Dynamic configuration of IPv4 link-local addresses.
Internet Draft (Work in Progress) draft-ietf-zeroconf-ipv4-linklocal-07.txt, Internet Engineering Task Force, August 2002.

5
R. Cole, D. Shur, and C. Villamizar.
IP over ATM: A framework document.
Request for Comments (Informational) RFC 1932, Internet Engineering Task Force, April 1996.

6
A. Conta and S. Deering.
IPv6 stateless address autoconfiguration.
Request for Comments (Draft Standard) RFC 2462, Internet Engineering Task Force, December 1998.

7
R. Droms.
Dynamic host configuration protocol.
Request for Comments (Draft Standard) RFC 2131, Internet Engineering Task Force, March 1997.

8
L. Esibov, B. Aboba, and D. Thaler.
Linklocal multicast name resolution (LLMNR).
Internet Draft (Work in Progress) draft-ietf-dnsext-mdns-12.txt, Internet Engineering Task Force, August 2002.

9
R. Hinden and S. Deering.
Ip version 6 addressing architecture.
Request for Comments (Standards Track) RFC 2373, Internet Engineering Task Force, July 1998.

10
C. Hornig.
Standard for the transmission of IP datagrams over Ethernet networks.
Request for Comments (Standard) RFC 894, Internet Engineering Task Force, April 1984.

11
H.-Y. Hsieh and R. Sivakumar.
A transport layer approach for achieving aggregate bandwidths on multi-homed mobile hosts.
In ACM Mobicom '02, pages 83-94, 2002.

12
J.-P. Hubaux, L. Buttyán, and S. Capkun.
The quest for security in mobile ad hoc networks.
In Proc. of the ACM Symposium on Mobile Ad Hoc Networking & Computing (MobiHOC '01), pages 146-155, October 2001.

13
IEEE Computer Society.
802.11: Wireless LAN medium access control (MAC) and physical layer (PHY) specifications, June 1997.

14
J. Inouye, J. Binkley, and J. Walpole.
Dynamic network reconfiguration support for mobile computers.
In Proceedings of the Third Annual ACM/IEEE International Conference on Mobile Computing and Networking (MobiCom '97), pages 13-22, September 1997.

15
D. Katz.
Transmission of IP and ARP over FDDI networks.
Request for Comments (Standard) RFC 1390, Internet Engineering Task Force, January 1993.

16
L. Magalhães and R. Kravets.
Transport level mechanisms for bandwidth aggregation on mobile hosts.
In 9th International Conference on Network Protocols ICNP 2001, 2001.

17
P. J. Megowan, D. W. Susak, and C. D. Knutson.
IrDA infrared communications: An overview.
https://www.irda.org.

18
T. Narten, E. Nordmark, and W. Simpson.
Neighbor discovery for IP version 6 (IPv6).
Request for Comments (Standards Track) RFC 2461, Internet Engineering Task Force, December 1998.

19
NetBIOS Working Group.
Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and methods.
Request for Comments (Standard) RFC 1001, Internet Engineering Task Force, March 1987.

20
B. D. Noble, M. Satyanarayanan, D. Narayanan, J. E. Tilton, J. Flinn, and R. W. Kevin.
Agile application-aware adaptation for mobility.
In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (SOSP) '97, 1997.

21
C. Perkins.
IP mobility support for IPv4.
Request for Comments (Proposed Standard) RFC 3344, Internet Engineering Task Force, August 2002.

22
C. E. Perkins, J. T. Malinen, R. Wakikawa, and E. M. Belding-Royer.
IP address autoconfiguration for ad hoc networks.
Internet Draft (Work in Progress) draft-perkins-manet-autoconf-01.txt, Internet Engineering Task Force, November 2001.

23
D. Piscitello and J. Lawrence.
Transmission of IP datagrams over the SMDS service.
Request for Comments (Standard) RFC 1209, Internet Engineering Task Force, March 1991.

24
D. Plummer.
Ethernet address resolution protocol: Or converting network protocol addresses to 48.bit Ethernet address for transmission on Ethernet hardware.
Request for Comments (Standard) RFC 826, Internet Engineering Task Force, November 1982.

25
D. Provan.
Transmitting IP traffic over ARCNET networks.
Request for Comments (Standard) RFC 1201, Internet Engineering Task Force, February 1991.

26
J. Renwick.
IP over HIPPI.
Request for Comments (Draft Standard) RFC 2067, Internet Engineering Task Force, January 1997.

27
J. Romkey.
Nonstandard for transmission of IP datagrams over serial lines: SLIP.
Request for Comments (Standard) RFC 1055, Internet Engineering Task Force, June 1988.

28
rtnetlink, NETLINK_ROUTE - Linux IPv4 routing socket.
Linux Man Page rtnetlink(7), April 1999.

29
K. Sklower, B. Lloyd, G. McGregor, D. Carr, and T. Coradetti.
The PPP multilink protocol (MP).
Request for Comments (Draft Standard) RFC 1990, Internet Engineering Task Force, 1996.

30
A. Snoeren and H. Balakrishnan.
An end-to-end approach to host mobility.
In ACM Mobicom '99, 2000.

31
M. Stemm and R. H. Katz.
Vertical handoffs in wireless overlay networks.
ACM Mobile Networking (MONET), Special Issue on Mobile Networking in the Internet, 1998.

32
J. Tourrilhes and C. Carter.
P-Handoff: A protocol for fine grained peer-to-peer vertical handoff.
In Proceedings of the 13th IEEE International Symposium on Personal, Indoor, and Mobile Radio Communications (PIMRC'02), 2002.

33
J. Tourrilhes, L. Magalhães, and C. Carter.
On-demand TCP: Transparent peer-to-peer TCP/IP over IrDA.
In Proceedings of the IEEE International Conference on Communications (ICC '02), 2002.

34
J. Veizades, E. Guttman, C. Perkins, and S. Kaplan.
Service location protocol.
Request for Comments (Standards Track) RFC 2165, Internet Engineering Task Force, June 1997.

35
X. Zhao, C. Castelluccia, and M. Baker.
Flexible network support for mobility.
In Fourth ACM International Conference on Mobile Computing and Networking (MOBICOM'98), 1998.



Footnotes

... [*]
This work was sponsored by Hewlett Packard Labs and National Science Foundation grant number ANI-0081308.



This paper was originally published in the Proceedings of the The First International Conference on Mobile Systems, Applications, and Services, May 5 – 8, 2003, San Francisco, CA, USA
Last changed: 01 May 2003 djc
Technical Program
MobiSys '03 Home
USENIX home