 the best match the contacted peer has for the target ID. The searching peer then contacts the peer to which it has been redirected and the process iterates until the responsible peer is located [17]. In recursive routing, a lookup request is forwarded from node to node until it reaches its destination. If the contacted peer is not responsible for the target ID, it will forward the query to the nearest peer to the target that it knows, and the process repeats until the target is reached. The response unwinds and follows the same path on the message return. Because dSIP uses SIP messages for transport, SIP's proxy behavior is used to enable recursive routing. Semi-recursive is the same as recursive routing on the outbound leg, but the reply "shortcuts" and is directly sent back to the requester. When discussing these techniques, we often just refer to iterative and recursive, because of the similarity between recursive and semi-recursive routing. Various mechanisms may be used within the same overlay and even within the same search [17]. 9.5.2 The dSIP Protocol dSIP is a specific proposal for the P2P SIP peer protocol proposed in the drafts discussed in Section 9.4, which uses SIP messages as the syntax for © 2009 by Taylor & Francis Group, LLC P2P SIP: Network Architecture and Resource Location Strategy encoding the protocol. The function of the P2PSIP peer protocol is to pro- vide for mechanisms to maintain the overlay, as well as to store and retrieve information, and to route messages when needed. dSIP's syntax is SIP with a number of newly defined headers, however, no new methods are added to SIP in dSIP. Since conventional SIP is used for this, there is no need for a P2PSIP client protocol, and therefore, dSIP defines no such protocol [17]. dSIP is modular, allowing for the use of multiple DHTs, including those defined later. DHTs can be negotiated among the peers in much the same way as codecs or features are negotiated in conventional SIP. For compatibility, support for one basic DHT algorithm, Chord, is r