← Back to team overview

rohc team mailing list archive

Re: [Question #219566]: “How to calcualte the ip_id on decompressor side when RND bit toggles from 1 to 0”.

 

Question #219566 on rohc changed:
https://answers.launchpad.net/rohc/+question/219566

Didier Barvaux proposed the following answer:
For an example, please build the main branch, then run the following
test program:

  $ SED=sed AWK=gawk
./test/functional/rtp_uor2_disambiguation/test_rtp_uor2_disambiguation_ipv4rnd1_ipv4rnd0_uor2id.sh
verbose verbose


Then read the traces, especially the ones for packet #7:

...
[d_rtp.c:421 rtp_detect_packet_type()] UOR-2* packet disambiguation: no IPv4 header with context(RND) = 0, so try parsing as UOR-2-RTP, and fallback on UOR-2-ID/TS later if value(RND) = 0 in packet
[d_generic.c:4009 d_generic_decode()] decode packet as 'UOR-2 (RTP)'
[d_generic.c:5413 parse_uor2()] 6 TS bits = 0x0
[d_generic.c:5416 parse_uor2()] M flag = 0
[d_generic.c:5419 parse_uor2()] 6 SN bits = 0x1a
[d_generic.c:5528 parse_uor2()] CRC-7 found in packet = 0x1d
[d_generic.c:5532 parse_uor2()] extension is present = 1
[d_generic.c:5566 parse_uor2()] first byte of extension = 0xde
[d_generic.c:6866 parse_extension3()] decode UOR-2* extension 3
[d_generic.c:6928 parse_extension3()] S = 0, R-TS = 1, Tsc = 1, I = 1, ip = 1, rtp = 0, ip2 = 0
[d_generic.c:6956 parse_extension3()] inner IP header flags field is present in EXT-3 = 0x04
[d_generic.c:7003 parse_extension3()] 7 bits of TS found in EXT-3 = 0x1a
[d_generic.c:7424 parse_inner_header_flags()] header flags: TOS = 0, TTL = 0, PR = 0, IPX = 0, NBO = 1, RND = 0
[d_generic.c:7465 parse_inner_header_flags()] DF = 0
[d_generic.c:7049 parse_extension3()] RND changed for outer IP header (1 -> 0)
[d_generic.c:7152 parse_extension3()] at least one RND changed and it makes our choice of packet type wrong, we must reparse the UOR-2* packet with a different packet type
[d_generic.c:5718 parse_uor2()] packet needs to be reparsed because RND changed in extension 3
[d_generic.c:5959 decode_uor2()] packet needs to be reparsed with different assumptions for packet type
[d_generic.c:5970 decode_uor2()] change for packet UOR-2-ID (T = 0)
[d_generic.c:5472 parse_uor2()] 5 IP-ID bits for IP header #1 = 0x0
[d_generic.c:5493 parse_uor2()] M flag = 0
[d_generic.c:5496 parse_uor2()] 6 SN bits = 0x1a
[d_generic.c:5528 parse_uor2()] CRC-7 found in packet = 0x1d
[d_generic.c:5532 parse_uor2()] extension is present = 1
[d_generic.c:5566 parse_uor2()] first byte of extension = 0xde
[d_generic.c:6866 parse_extension3()] decode UOR-2* extension 3
[d_generic.c:6928 parse_extension3()] S = 0, R-TS = 1, Tsc = 1, I = 1, ip = 1, rtp = 0, ip2 = 0
[d_generic.c:6956 parse_extension3()] inner IP header flags field is present in EXT-3 = 0x04
[d_generic.c:7003 parse_extension3()] 7 bits of TS found in EXT-3 = 0x1a
[d_generic.c:7424 parse_inner_header_flags()] header flags: TOS = 0, TTL = 0, PR = 0, IPX = 0, NBO = 1, RND = 0
[d_generic.c:7465 parse_inner_header_flags()] DF = 0
[d_generic.c:7049 parse_extension3()] RND changed for outer IP header (1 -> 0)
[d_generic.c:7193 parse_extension3()] 16 bits of outer IP-ID in EXT3 = 0x136f
[d_rtp.c:784 rtp_parse_uo_remainder()] UDP checksum not present
[d_generic.c:6050 decode_uor2()] ROHC payload (length = 0 bytes) starts at offset 8
[d_generic.c:8269 decode_values_from_bits()] decoded SN = 26 / 0x1a (nr bits = 6, bits = 26 / 0x1a)
[d_generic.c:8323 decode_values_from_bits()] 20 packets seem to have been lost, damaged, or failed to be decompressed (SN jumped from 0x5 to 0x1a)
[d_generic.c:8447 decode_ip_values_from_bits()] decoded outer TOS/TC = 0
[d_generic.c:8460 decode_ip_values_from_bits()] decoded outer TTL/HL = 64
[d_generic.c:8474 decode_ip_values_from_bits()] decoded outer protocol/NH = 17
[d_generic.c:8490 decode_ip_values_from_bits()] decoded outer NBO = 1
[d_generic.c:8503 decode_ip_values_from_bits()] decoded outer RND = 0
[d_generic.c:8516 decode_ip_values_from_bits()] decoded outer SID = 0
[d_generic.c:8564 decode_ip_values_from_bits()] decoded outer IP-ID = 0x1389 (rnd = 0, nbo = 1, sid = 0, nr bits = 16, bits = 0x136f)
...

Regards,
Didier

-- 
You received this question notification because you are a member of ROHC
Team, which is an answer contact for rohc.