← Back to team overview

rohc team mailing list archive

Re: SIP calls throught ethernet rohc tunnel

 

Hello,

> You were right. The problem was in the arp table of my openflow
> switch. One of them wasn't saving the neighbor's address. I set up
> the arp table manually and the RTP packet started to be compressed
> and decompressed by the rohc tunnel. Thanks for your help!

You're welcome!


> Like you said before, the profile choosed by the compressor isn't too
> efficient. It chooses the UDP profile rather the UDP/RTP profile. I
> captured all packets with wireshark and the ROHC ones have 104 bytes
> each, where my originals RTP packets have 124 bytes.
> 
> I'm using the ethernet ROHC tunnel, so I didn't see any IP header in
> the compressed packets (that's great). For that reason, I expected
> compressed packets of 85 bytes, at least (124 bytes – 40 bytes
> (IP/UDP/RTP headers) + 1 byte (ROHC header)).
> 
> Do you know what could be wrong? Did the compressor don't choose the
> right profile because I'm using UDPs ports that it don't recognizes?
> 
> The originals RTP packets are using ports 4010 (source port) and 4008
> (destination port).

The compression efficiency depends on several things:
 1/ The compression profile (here you use IP/UDP instead of the better
    IP/UDP/RTP profile).
 2/ The way the packets in the compressed stream change: if the change
    too much, the compressor cannot compress the packet down to one
    single byte.


For 1/, you must tell the ROHC library how to identify the RTP streams
among all the UDP streams. There is no specific UDP port dedicated to
RTP streams, so the library cannot detect RTP streams without some
external help.

You have 2 ways to teach the library how to detect RTP streams:
 a/ give it a list of UDP ports that you know are dedicated to RTP
    streams,
 b/ give it a function that you'll write ourself and that returns true
    if the packet is RTP or false if it doesn't.

See https://answers.launchpad.net/rohc/+question/246200 for more
details.


For 2/, I can see in the compression logs, that the IP-ID changes in an
irregular way. You could save 1-2 bytes if it increases at a regular
pace. Try to see why it doesn't.

You may also save two bytes more by disabling UDP checksums for RTP
streams in the piece of software that generates them. The ROHC protocol
cannot compress the UDP checksum away except if disabled (ie. set to 0).


Regards,
Didier

Attachment: signature.asc
Description: PGP signature


References