On Tue, Oct 15, 2013 at 11:19:34AM +0100, Colin Perkins wrote:
> I strongly disagree. An RTP extension header is easy to add from the 
> application, but difficult to distinguish in the forwarding plane. The 
> semantics of the RTP header extension can only be inferred by looking at the 
> signalling channel (e.g., SIP, XMPP, WebRTC, etc.). I don't think we want to 
> tie the media path to the signalling path, nor should we require routers to 
> interact with the signalling protocol. 

Define RTP header extension with well-defined intra-flow priority field.
Lets call it "Network-Signaling" RTP header extension. Might have other
fields in it too beside priority (heck: even DSCP for poor apps that can't
set it via their network stack ;-).

Introduce new attribute to the STUN signaled metadata:
draft-martinsen-mmusic-malice-00.txt. This attribute is signalled
if the RTP packets on the 5-tuple have the network signaling RTP header
extension, and its value is the ID of that RTP header extension.

> I also don't believe deep-packet inspection can usefully be used to find the 
> RTP header extension. Ignoring the layering violation, recall that 
> identifying RTP packets is difficult without keeping per-flow state, that the 
> header extension is at a variable offset into the RTP packet, that multiple 
> header extensions can be included in each RTP packet in an arbitrary order, 
> and that header extensions have a dynamically chosen identifier mapped via 
> the signalling channel with very little fixed text to identify them. Plus, 
> the RTP header extension may well be encrypted if SRTP is used.
> 
> Note also that RTCP, DTLS, or STUN packets are commonly multiplexed onto the 
> same 5-tuple, and don't have a corresponding header extension but can use the 
> DSCP field. I would assume we would want to be able to assign a priority to 
> those packets relative to the media. 

[Deleted rant about why we could not even design IPv6 so that useful new
 onpath header extensions could be placed in there ]


I would hope the above proposed design answers those concerns of yours.
-> Once the sender of the 5-tuple flow clear indicates to the network
   via STUN that the network-signaling header is present and what it's ID
   is, the routre/switches should have all they need.
-> Obviously, the sender would not encrypt this paticular header as it
   specifically intends to signal its content to the network.
-> Multiplexing should work fine because DPI in the network would use the
   sme simple rules to identify RTP vs. non-RTP packets in the flow,
   and then just find the RTP_header extension with the appropriate ID.

> If something in the UDP payload were considered appropriate to assign 
> per-packet priority, then I'd suggest that a shim-layer to identify flows and 
> priorities would be a better approach.

Sure.

> That could add a couple of bytes shim to each packet, to identify both flow 
> priority and flow type. This would also simplify some of the magic around 
> demultiplexing RTP, RTCP, STUN, DTLS, etc., that all get multiplexed onto the 
> same port in many applications. We proposed a shim to address the 
> de-multiplexing part of this in 
> draft-westerlund-avtcore-transport-multiplexing-06, and although it doesn't 
> address the per-packet priority, it would be straight forward to add if it 
> were desirable, and (unlike an RTP header extension) could place the priority 
> field at a fixed location in the packet, with a well-known header to help 
> identify the flows.

I like shim layer, but in the end the design that will succeeed is the one
that apps most likely will adopt. How likely would RTCweb use shim-layer ?

Cheers
    Toerless

Reply via email to