Discussion of Handling Middlebox and Session Policy in the Session Initiation Protocol
Cisco Systems, Inc.101 Cooper StreetSanta CruzCA95060USArohan@cisco.com
Transport
SIPPING WGI-DInternet-Draftpolicymidcomfirewall
SIP Entities (especially User Agents) are frequently setup in private networks where a policy element or other middlebox must be traversed to communicate with other networks including the public Internet. The document discusses the apparent paradox of balancing the concerns and requirements of administrators of these middleboxes with the rights of individual users. Consistent with this discussion, this document also proposes a new SIP response code with which middleboxes can communicate policy requirements back to SIP User Agents.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described
in RFC-2119.
Many SIP networks consist of User Agents which are located in a private network which is connected to the Internet by various types of middleboxes. These middleboxes are primarily concerned with details about sessions which are contained in offers and answers, each of which can appear in a variety of requests or responses.
This document defines a new 400-class SIP response code which middleboxes can use to communicate that
490 Use Policy
This response contains one or more sipfrags which each of which includes an error message indicating a part of the request which was unacceptable.
Requests
490 Use Policy
Content-Type: message/sipfrag
493 Undecipherable
406 Not Acceptable
Accept: application/sdp
Firewall traversal
To accomplish firewall traversal, the user agent sends a request which contains a session description which the firewall controller can read to open pinholes on behalf of the user agent.
perhaps the user agent sent a session description which was end-to-end encrypted. The firewall controller sends a response back to the initiator indicating that the message wasn't readable to allow for firewall traversal.
If the user agent has session details it wishes to keep secret, such as end-to-end encryption keys, it can keep these secret by sending both an end-to-end encrypted session description intended for the final recipient and a more abbreviated session description intended for the firewall controller.
NAT traversal
To accomplish NAT traversal, the user agent has two options. It can send a request which contains a session description already suitable for NAT traversal (using a protocol such as STUN to detect this), in which case the middlebox acts just as a firewall, verifying the addresses map to existing bindings. Alternatively, the user agent can send a session description with private addresses. Rather than break end-to-end message integrity by modifying the session description, the NAT controller returns a 490 Use Policy response which contains a sipfrag with an appropriately remapped session description. If the user agent approves of the remapping, the user agent can then send the request (optionally with end-to-end message integrity).
488 Not Acceptable Here
Content-Type: application/sdp
m=audio 19502
Responses
when forwarding requests to a UAS, middlebox controllers add a new option-tag to the Require header of the request.
Require: policy
include a matching
In addition this document proposes that SIP proxy servers should be allowed to append message bodies to any SIP message, and to delete message bodies "addressed" to them.
Offer is in a request, Answer is in a response
INVITE/18x
INVITE/200
PRACK/200
UPDATE/200
Content-Type: application/sdp
Content-Disposition: session;handling=required;direction=offer
Content-Type: message/sipfrag
Content-Disposition: policy;handling=optional;direction=answer
SIP/2.0 490 Use Policy
Content-Type: application/sdp
m=
c=
Offer is in a response, Answer is in a request
18x/PRACK
200/ACK
INVITE --> --> --> -->
<-- <-- <-- <-- 18x (w/offer)
PRACK (w/answer)
<-- 490
PRACK (w/ no m-lines answer) --> ---> -->
UPDATE -> (offer)
<-- 200 (answer)
who needs to get these requests
this is somewhat complicated by the fact that only the offer or answer appears in a given message, that there is no way to respond to responses, and that offers can appear in responses.
preconditions
policy preconditions
each
side has precon
should work in two NAT model or the one NAT model.
One NAT at UAC
offer in request
offer in response
One NAT at UAS
offer in request
offer in response
NAT on both sides
"Layered" NATs
try with preconditions as well....
The following syntax specification uses the augmented Backus-Naur Form (BNF) as described in
RFC-2234.
***
***