RTPENGINE redis 测试
把呼叫信息保存到 redis,目的是 rtpengine 重启后可以恢复呼叫
我记得 yufeitao 写过一篇文章,回头找找,rtpengine 做 HA
目前先做简单的测试
先写标题,再做测试,一步步来
这两个链接:
https://kamailio.org/events/2020-KamailioWorldOnline/KW2020-YufeiTao-HAForKamailioAndRTPEngine.pdf
https://www.kamailio.org/events/2016-KamailioWorld/Day2/20-Pawel.Kuzak-High-Quality-Telephony-Using-A-Fail-Safe-Media-Relay-Setup.pdf
顺便说下, yufeitao 是国人的骄傲
我逐步做一些很基础的测试,并分享出来
rtpengine.conf 文件的内容为:
[rtpengine]
interface=eth0
foreground=true
log-stderr=true
no-fallback = false
table=-1
listen-ng=127.0.0.1:2223
port-min=10000
port-max=20000
recording-dir=/tmp
recording-method=pcap
recording-format=raw
log-level=6
delete-delay=30
#listen-http=LOCAL_IP:8222
recording-dir = /tmp
redis = 127.0.0.1:6379/1
redis-write = 127.0.0.1:6379/0
redis-num-threads = 8
# no-redis-required = false
redis-expires = 86400
redis-allowed-errors = -1
redis-disable-time = 10
redis-cmd-timeout = 0
redis-connect-timeout = 1000
kamailio-local.cfg 的内容为:
#!define WITH_JSONRPC
#!define WITH_NAT
#!define WITH_RTPENGINE
kamailio.cfg 不变
microsip1 注册
microsip2 注册
microsip1 呼叫 microsip2
运行 redis-cli
127.0.0.1:6379> KEYS *
1) "2293a3eaea18424c91d4a863c94278d6"
127.0.0.1:6379> type 50f52e748e444de4b51e267eddde32c6
string
127.0.0.1:6379> get 50f52e748e444de4b51e267eddde32c6
美化之后内容如下:
{
"json": {
"created": "1761095079238772",
"destroyed": "0",
"last_signal": "1761095081",
"tos": "0",
"deleted": "0",
"num_sfds": "4",
"num_streams": "4",
"num_medias": "2",
"num_tags": "2",
"num_maps": "2",
"ml_deleted": "0",
"created_from": "127.0.0.1:49842",
"created_from_addr": "127.0.0.1",
"redis_hosted_db": "0",
"recording_metadata": "",
"block_dtmf": "0",
"call_flags": "1376256"
},
"sfd-0": {
"pref_family": "IP4",
"localport": "10456",
"fd": "8",
"logical_intf": "default",
"local_intf_uid": "0",
"stream": "0"
},
"sfd-1": {
"pref_family": "IP4",
"localport": "10457",
"fd": "9",
"logical_intf": "default",
"local_intf_uid": "0",
"stream": "1"
},
"sfd-2": {
"pref_family": "IP4",
"localport": "15734",
"fd": "10",
"logical_intf": "default",
"local_intf_uid": "0",
"stream": "2"
},
"sfd-3": {
"pref_family": "IP4",
"localport": "15735",
"fd": "11",
"logical_intf": "default",
"local_intf_uid": "0",
"stream": "3"
},
"stream-0": {
"media": "0",
"sfd": "0",
"rtcp_sibling": "1",
"last_packet": "1761095088",
"ps_flags": "16318464",
"component": "1",
"endpoint": "192.168.43.68:44370",
"advertised_endpoint": "192.168.43.68:44370",
"stats-packets": "342",
"stats-bytes": "58824",
"stats-errors": "0"
},
"stream-1": {
"media": "0",
"sfd": "1",
"rtcp_sibling": "4294967295",
"last_packet": "1761095088",
"ps_flags": "16384001",
"component": "2",
"endpoint": "192.168.43.68:44371",
"advertised_endpoint": "192.168.43.68:44371",
"stats-packets": "3",
"stats-bytes": "484",
"stats-errors": "0"
},
"stream-2": {
"media": "1",
"sfd": "2",
"rtcp_sibling": "3",
"last_packet": "1761095088",
"ps_flags": "16318464",
"component": "1",
"endpoint": "192.168.43.68:4002",
"advertised_endpoint": "192.168.43.68:4002",
"stats-packets": "339",
"stats-bytes": "58308",
"stats-errors": "0"
},
"stream-3": {
"media": "1",
"sfd": "3",
"rtcp_sibling": "4294967295",
"last_packet": "1761095086",
"ps_flags": "16384000",
"component": "2",
"endpoint": "192.168.43.68:4003",
"advertised_endpoint": "192.168.43.68:4003",
"stats-packets": "4",
"stats-bytes": "280",
"stats-errors": "0"
},
"stream_sfds-0": ["0"],
"rtp_sinks-0": ["2"],
"rtcp_sinks-0": [],
"stream_sfds-1": ["1"],
"rtp_sinks-1": [],
"rtcp_sinks-1": ["3"],
"stream_sfds-2": ["2"],
"rtp_sinks-2": ["0"],
"rtcp_sinks-2": [],
"stream_sfds-3": ["3"],
"rtp_sinks-3": [],
"rtcp_sinks-3": ["1"],
"tag-0": {
"created": "1761095079",
"deleted": "0",
"block_dtmf": "0",
"ml_flags": "0",
"desired_family": "IP4",
"logical_intf": "default",
"tag": "2f07555b7e1448cb90e8b99a6cb3816a"
},
"tag-1": {
"created": "1761095079",
"deleted": "0",
"block_dtmf": "0",
"ml_flags": "0",
"desired_family": "IP4",
"logical_intf": "default",
"tag": "8a2eab16"
},
"associated_tags-0": ["1"],
"medias-0": ["1"],
"ssrc_table-0": [
{
"ssrc": "730224144",
"in_srtp_index": "0",
"in_srtcp_index": "0",
"in_payload_type": "8",
"out_srtp_index": "0",
"out_srtcp_index": "0",
"out_payload_type": "255"
},
{
"ssrc": "3484845702",
"in_srtp_index": "0",
"in_srtcp_index": "0",
"in_payload_type": "255",
"out_srtp_index": "0",
"out_srtcp_index": "0",
"out_payload_type": "8"
}
],
"associated_tags-1": ["0"],
"medias-1": ["0"],
"ssrc_table-1": [
{
"ssrc": "730224144",
"in_srtp_index": "0",
"in_srtcp_index": "0",
"in_payload_type": "255",
"out_srtp_index": "0",
"out_srtcp_index": "0",
"out_payload_type": "8"
},
{
"ssrc": "3484845702",
"in_srtp_index": "0",
"in_srtcp_index": "0",
"in_payload_type": "8",
"out_srtp_index": "0",
"out_srtcp_index": "0",
"out_payload_type": "255"
}
],
"media-subscriptions-0": ["1/1/0/0"],
"media-0": {
"tag": "1",
"index": "1",
"type": "audio",
"format_str": "8 101",
"protocol": "RTP/AVP",
"desired_family": "IP4",
"logical_intf": "default",
"ptime": "0",
"media_flags": "2293772"
},
"media-subscriptions-1": ["0/1/0/0"],
"media-1": {
"tag": "0",
"index": "1",
"type": "audio",
"format_str": "8 101",
"protocol": "RTP/AVP",
"desired_family": "IP4",
"logical_intf": "default",
"ptime": "0",
"media_flags": "65548"
},
"streams-0": ["0", "1"],
"maps-0": ["0"],
"payload_types-0": ["8/PCMA/8000///0/20", "101/telephone-event/8000//0-15/0/-1"],
"streams-1": ["2", "3"],
"maps-1": ["1"],
"payload_types-1": ["8/PCMA/8000///0/20", "101/telephone-event/8000//0-15/0/-1"],
"map-0": {
"wildcard": "0",
"num_ports": "2",
"intf_preferred_family": "IP4",
"logical_intf": "default",
"endpoint": "192.168.43.68:4002"
},
"map-1": {
"wildcard": "0",
"num_ports": "2",
"intf_preferred_family": "IP4",
"logical_intf": "default",
"endpoint": "192.168.43.68:44370"
},
"map_sfds-0": ["loc-0", "0", "1"],
"map_sfds-1": ["loc-0", "2", "3"]
}