annotate doc/RTP-analysis @ 6:709aa9ad72d1

new program rtp-stream-dump
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 08 Jul 2023 20:30:33 +0000
parents 5216e7fb1c9e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 The present package includes a number of utilities for analyzing RTP streams
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 that have been captured with tcpdump or equivalent tools in pcap format. In
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 order to use any of these utilities, you need to have a pcap file (obviously),
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 and you need to identify the RTP stream to be analyzed or extracted by either
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 source or destination IP:port. All tools begin by applying a filter,
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 considering only those packets that are UDP in IPv4 (no IPv6 support currently),
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 and only those that match the specified source or destination IP:port. Every
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 matched packet is checked for a valid RTP header, and then the actual RTP stream
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 analysis or extraction takes place, depending on the specific tool:
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 rtp-cont-check This program checks the selected RTP stream for continuity. It
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 verifies that every matched packet has the same SSRC, that the
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 sequence number always increments by 1 from each individual
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 packet to the next, and that the RTP header timestamp always
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 increments by 160 units. (The assumption is that the
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 application at hand is in the traditional telephony domain,
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 with a sampling rate of 8000 samples/s and 20 ms packetization
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 for RTP.) This tool also looks at the capture time deltas
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 between successive packets and reports the observed minimum and
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 maximum; by seeing min and max delta-T, a developer can easily
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 notice timing aberrations that aren't caught by RTP header
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 sequence number and timestamp checks.
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 rtp-g711-extr This program focuses on a single selected RTP stream like the
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 others, enforces its continuity just like rtp-cont-check, and
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 then further enforces that every RTP packet be a 160-byte
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 payload, presumed to be either PCMU or PCMA. (The payload type
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 number is NOT considered, only the payload length.) The
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 selected G.711 RTP stream is then extracted and written into a
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 raw binary file.
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
4
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
32 rtp-gsmfr-dump This program focuses on a single selected RTP stream like the
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
33 others, enforces its continuity just like rtp-cont-check, and
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
34 then expects the RTP payload to be one of GSM FR or EFR formats
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
35 listed in the FR-EFR-formats document. Each recognized FR/EFR
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
36 or BFI payload is then dumped in human-readable form on stdout,
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
37 similarly to the gsmrec-dump utility from Themyscira Wireless
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
38 GSM codec libraries & utilities package.
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
39
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
40 rtp-gsmfr-extr This program operates like rtp-gsmfr-dump, imposing the same
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
41 expectations on the selected RTP stream, but the latter stream
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
42 is then extracted and written into a gsmx binary file, as
5216e7fb1c9e doc: update for new FR/EFR RTP payload formats
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
43 defined in the GSM codec libraries and utilities package.
0
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 rtp-jitter-view This program analyzes a single selected RTP stream just like
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 rtp-cont-check, but instead of reporting minimum and maximum
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 time deltas for the entire stream, it prints the individual
05ff0f7ac977 initial commit: split from gsm-codec-lib
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 capture time delta between every successive pair of packets.