proxies. Each proxy that wishes to stay in the path of the mid-dialog SIP messages simply adds a Record-Route header field containing its URI to the dialog creating messages before forwarding them. The Record-Route header field is defined in RFC 3261 [3], which recom- mends a moderate usage of this approach to ensure scalability. A stronger C 2009 by Taylor & Francis Group, LLC SIP Handbook: Services, Technologies, and Security effort is required to ensure direct connectivity for media flows; for this rea- son, NAT traversal for SIP signaling and for media sessions will be discussed separately. However, before doing this, the most-used generic NAT traversal techniques will be introduced. 12.4 Generic NAT Traversal Techniques NAT traversal techniques are the set of operations required to establish end-to- end connectivity involving hosts behind NATs. More specifically, this section introduces hole punching and relaying methodologies. The first approach is usually preferred when NATs in the packets path satisfy the NAT require- ments set by RFC 4787 as discussed previously. The presented techniques are described in the context of applications running over UDP (exactly the way SIP UAs were originally supposed to do). For additional details, please refer to [4]. 12.4.1 Hole Punching Hole punching is a basic technique to ensure end-to-end communication across NATs. If two hosts willing to exchange packets are both behind a NAT, this technique requires the presence of a rendezvous server S that is for both of them in an external network and helps them establish a direct communication channel. Considering a generic scenario where two hosts called A and B wish to communicate directly, first, both hosts register their external and internal transport addresses with the rendezvous server S; the external addresses are devised by S from the received packets or by the hosts using the solutions described later (see Section 12.4.3). Then, if A is the initiator of the direct connection to B, it sends a communication request to S,