 SIP messages are used to implement the DHT operations. The implementation of Chord used in SOSIMPLE saves data not only at the node for which the data hashes, but also at the following k nodes. Accordingly, after hashing their username to a Chord node, the UA sends a SIP REGISTER message to the node and its k successors, which means that the resources, including users' register information, are stored on the node responsible for a particular resource as well as k successor nodes. SOSIMPLE nodes maintain a number of finger table entries for routing and prefetch entries for contacts in the buddy list of the user as well as caching previously contacted nodes for future use. All messages for maintaining the DHT, registering users, locating resources, and establishing sessions are SIP messages. As SOSIMPLE needs P2P functionality, a number of new SIP head- ers are defined. SOSIMPLE uses the SIP REGISTER message to pass the overlay informa- tion between nodes. In SOSIMPLE, User Registration refers to the traditional usage for registering users, while Node Registration refers to REGISTER for DHT operations, such as entering, leaving, or maintaining the overlay. 9.3.1.1 Node-Level Operations When a new node tries to join SOSIMPLE, it uses its IP address to calculate a node-ID. Once the new node has joined the overlay, it will be responsible for storing information associated with the portion of the overlay mapped to that C 2009 by Taylor & Francis Group, LLC P2P SIP: Network Architecture and Resource Location Strategy 3. REGISTER Node B 4. 302 Node C Node-ID 345 REGISTER Bootstrap node Joining Node A 2.302 Node Node-ID 020 Node-ID 842 5. REGISTER Node C Node-ID 850 Node A after join Node-ID 842 FIGURE 9.5 An example of a new node joining SOSIMPLE. calculated node-ID. The joining node must locate the node currently respon- sible for that region, insert itself into the overlay, and transfer the information for the region [4]. Figure 9.5 illustrates how a new node joins SOSIMPLE. The joining node A calculates its node-ID, 