To run the RTP Offline decode process follow the following steps
RTP Offline
Step 1) Start the decode processor
Inside the LXC container run the following
fmadio2pcap -i /opt/fmadio/queue/lxc_market2json_rtp_a | /opt/fmadio/app/market2json/bin/market2json --proto ./streaming/rtp --output-chbin-gap --chbin-host 127.0.0.1:9000 --chbin-user /opt/fmadio/app/market2json/etc/ch.credentials
The output looks similar to below
root@fmadio100v2-228U-market2json:~# fmadio2pcap -i /opt/fmadio/queue/lxc_market2json_rtp_a | /opt/fmadio/app/market2json/bin/market2json --proto ./streaming/rtp --output-chbin-gap --chbin-host 127.0.0.1:9000 --chbin-user /opt/fmadio/app/market2json/etc/ch.credentials
fmadio2pcap
FMAD Ring [/opt/fmadio/queue/lxc_market2json_rtp_a]
RING[/opt/fmadio/queue/lxc_market2json_rtp_a ] Size : 12595200 12595200 16777216
RING[/opt/fmadio/queue/lxc_market2json_rtp_a ] Version: 100 100
RING[/opt/fmadio/queue/lxc_market2json_rtp_a ] Path:/opt/fmadio/queue/lxc_market2json_rtp_a
RING[/opt/fmadio/queue/lxc_market2json_rtp_a ] Put:103d 3d
RING[/opt/fmadio/queue/lxc_market2json_rtp_a ] Get:103d 3d
Setup
LOG: [main ] --proto
LOG: [main ] Protocol Name: [./streaming/rtp]
LOG: [main ] --output-chbin-gap
LOG: [main ] CH-Gap output
LOG: [main ] --chbin-host
LOG: [main ] 127.0.0.1 : 9000 ratelimit: 0
LOG: [main ] --chbin-user
LOG: [main ] ClickHouse binary-over-TCP user info: username default password <redacted>
LOG: [main ] FMADIO Market Data Gap Detector
Step 2) Send traffic
Send traffic to the LXC from the host using the following command
sudo stream_cat -v --ring /opt/fmadio/queue/lxc_market2json_rtp_a rtp_red_20250304_20250508_1454
Example output looks like
fmadio@fmadio100v2-228U:$ sudo stream_cat -v --ring /opt/fmadio/queue/lxc_market2json_rtp_a rtp_red_20250304_20250508_1454
Create FMAD Ring: 0 [/opt/fmadio/queue/lxc_market2json_rtp_a]
stream_cat ioqueue: 4
TimeStamp[0] --pcap
TimeStamp[1] --pcap
TimeStamp[2] --pcap
TimeStamp[3] --pcap
TimeStamp[4] --pcap
TimeStamp[5] --pcap
TimeStamp[6] --pcap
TimeStamp[7] --pcap
RING[/opt/fmadio/queue/lxc_market2json_cme ] 00 : CPU: 0 FilterBPF:[(null)] FilterFrame:[(null)]
StartChunkID: 56156424
StartChunk: 56156424 Offset: 0 Stride: 1
StartChunk: 56156424
RING[/opt/fmadio/queue/lxc_market2json_cme ] Size : 12595200 16777216
RING[/opt/fmadio/queue/lxc_market2json_cme ] Version: 100 100
RING[/opt/fmadio/queue/lxc_market2json_cme ] Put:103d 3d 0x7f67f23f0000
RING[/opt/fmadio/queue/lxc_market2json_cme ] Get:103d 3d 0x7f67f23f1000
RING[/opt/fmadio/queue/lxc_market2json_cme ] thread:0
RING[/opt/fmadio/queue/lxc_market2json_cme ] worker thread start
{"tstr":"20250508_150700", "timestamp":1746688020,"PktCnt": 0, "PktByte": 0, "ChunkID":56156424,"PCAPTS":"00:00:00.000.000.000","PendingB":28141420544,"Read_bps":0,"Read_pps":0,"Write_bps":0,"Write_pps":0,"FwdPct":0.000,""CPUIdle":0.000,"CPUFetch":0.683, "CPUSend":0.000}
{"tstr":"20250508_150703", "timestamp":1746688023,"PktCnt": 1149, "PktByte": 1572550, "ChunkID":56156437,"PCAPTS":"14:18:22.722.976.038","PendingB":28138012672,"Read_bps":4590299,"Read_pps":419,"Write_bps":9168543,"Write_pps":838,"FwdPct":2.000,""CPUIdle":0.000,"CPUFetch":0.001, "CPUSend":0.000}
{"tstr":"20250508_150704", "timestamp":1746688024,"PktCnt": 88797, "PktByte": 122311216, "ChunkID":56156903,"PCAPTS":"14:18:22.815.765.429","PendingB":28015853568,"Read_bps":965420572,"Read_pps":87604,"Write_bps":1928374373,"Write_pps":175207,"FwdPct":2.000,""CPUIdle":0.000,"CPUFetch":0.035, "CPUSend":0.000}
{"tstr":"20250508_150705", "timestamp":1746688025,"PktCnt": 172178, "PktByte": 237112472, "ChunkID":56157346,"PCAPTS":"14:18:22.905.519.631","PendingB":27899723776,"Read_bps":848948700,"Read_pps":77075,"Write_bps":1695762454,"Write_pps":154149,"FwdPct":2.000,""CPUIdle":0.000,"CPUFetch":0.029, "CPUSend":0.000}
{"tstr":"20250508_150706", "timestamp":1746688026,"PktCnt": 254995, "PktByte": 351130760, "ChunkID":56157786,"PCAPTS":"14:18:22.995.471.077","PendingB":27784380416,"Read_bps":910836112,"Read_pps":82698,"Write_bps":1819278627,"Write_pps":165396,"FwdPct":2.000,""CPUIdle":0.000,"CPUFetch":0.032, "CPUSend":0.000}
.
.
.
Step 3) Check the GUI
The URL Address is the FMADIO Capture system using port 3040, e.g
https://192.168.2.100:3040/
If no connection, please check the iptables forwarding setup
Example output looks like below
If unable to find any data, check the time range is correct / make it very wide to locate the data