[asterisk-bugs] [JIRA] (ASTERISK-29963) res_rtp_asterisk: mapping->ssrc_invalid on unidirectional videostream after confbridge reinvite

Erik Bergschöld (JIRA) noreply at issues.asterisk.org
Thu Mar 10 04:56:06 CST 2022


     [ https://issues.asterisk.org/jira/browse/ASTERISK-29963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Erik Bergschöld updated ASTERISK-29963:
---------------------------------------

    Summary: res_rtp_asterisk: mapping->ssrc_invalid on unidirectional videostream after confbridge reinvite  (was: res_rtp_asterisk: ssrc_invalid on unidirectional videostream after confbridge reinvite)

> res_rtp_asterisk: mapping->ssrc_invalid on unidirectional videostream after confbridge reinvite
> -----------------------------------------------------------------------------------------------
>
>                 Key: ASTERISK-29963
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29963
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_rtp_asterisk
>    Affects Versions: 18.8.0
>         Environment: Alma Linux 8, Chrome WebRTC with JsSIP
>            Reporter: Erik Bergschöld
>              Labels: webrtc
>         Attachments: sip.txt
>
>
> When a client joins a Confbridge and there is another participant in the conference already then the client get an INVITE from asterisk looking like this
> INVITE sip:14hjh1lr at 192.168.1.64:61731;transport=ws;ob SIP/2.0
> Via: SIP/2.0/WSS 192.168.1.231:9062;rport;branch=z9hG4bKPjafc6d2ba-2841-43e9-9184-92fb5d27f465;alias
> From: <sip:9988 at 192.168.1.231>;tag=f044d3f5-97b1-4305-86e8-d7f6d6f57feb
> To: <sip:1_webrtc at 192.168.1.231>;tag=27mgt9i7b4
> Contact: <sip:192.168.1.231:9062;transport=ws>
> Call-ID: vralkvok6h1vp2r8ab6c
> CSeq: 14043 INVITE
> Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, REFER, MESSAGE
> Supported: 100rel, timer, replaces, norefersub, histinfo
> Session-Expires: 1800;refresher=uas
> Min-SE: 90
> Max-Forwards: 70
> User-Agent: wx3.se pbx
> Content-Type: application/sdp
> Content-Length:  2599
> v=0
> o=- 1395058744 5 IN IP4 192.168.1.231
> s=Asterisk
> c=IN IP4 192.168.1.231
> t=0 0
> a=msid-semantic:WMS *
> a=group:BUNDLE 0 1 video-2
> m=audio 14264 UDP/TLS/RTP/SAVPF 111 9 8 0 126
> a=connection:existing
> a=setup:actpass
> a=fingerprint:SHA-256 49:A0:82:79:46:CC:46:F0:92:57:E9:15:5D:B6:11:A1:4E:C4:31:8E:4B:C9:1C:B9:1C:72:DA:23:FD:9E:49:BE
> a=ice-ufrag:4c67f5b33099618527fbe21c2244c63a
> a=ice-pwd:34a17def72e1fcc62c4a9c990cc02295
> a=candidate:Hc0a801e7 1 UDP 2130706431 192.168.1.231 14264 typ host
> a=rtpmap:111 opus/48000/2
> a=fmtp:111 useinbandfec=1
> a=rtpmap:9 G722/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:126 telephone-event/8000
> a=fmtp:126 0-16
> a=ptime:20
> a=maxptime:20
> a=sendrecv
> a=rtcp-mux
> a=ssrc:767905177 cname:0e429237-8399-4f4c-ab63-ed627706fffd
> a=msid:46167cbd-25d9-46c1-a6d5-80d3cf7cb7a2 70a3431c-0a02-45ac-8890-59adaaa1095a
> a=rtcp-fb:* transport-cc
> a=mid:0
> m=video 14264 UDP/TLS/RTP/SAVPF 98 102 96
> a=connection:existing
> a=setup:actpass
> a=fingerprint:SHA-256 49:A0:82:79:46:CC:46:F0:92:57:E9:15:5D:B6:11:A1:4E:C4:31:8E:4B:C9:1C:B9:1C:72:DA:23:FD:9E:49:BE
> a=ice-ufrag:4c67f5b33099618527fbe21c2244c63a
> a=ice-pwd:34a17def72e1fcc62c4a9c990cc02295
> a=rtpmap:98 VP9/90000
> a=rtpmap:102 H264/90000
> a=fmtp:102 packetization-mode=1;level-asymmetry-allowed=1;profile-level-id=42001F
> a=rtpmap:96 VP8/90000
> a=sendrecv
> a=rtcp-mux
> a=ssrc:1528787399 cname:939a44f3-407e-4b38-a965-8f06ab7fe96c
> a=msid:46167cbd-25d9-46c1-a6d5-80d3cf7cb7a2 57cf4b7a-ef1b-4088-88e3-e41ba3cd6034
> a=rtcp-fb:* transport-cc
> a=rtcp-fb:* ccm fir
> a=rtcp-fb:* nack
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> a=mid:1
> m=video 14264 UDP/TLS/RTP/SAVPF 98 102 96
> a=connection:existing
> a=setup:actpass
> a=fingerprint:SHA-256 49:A0:82:79:46:CC:46:F0:92:57:E9:15:5D:B6:11:A1:4E:C4:31:8E:4B:C9:1C:B9:1C:72:DA:23:FD:9E:49:BE
> a=ice-ufrag:4c67f5b33099618527fbe21c2244c63a
> a=ice-pwd:34a17def72e1fcc62c4a9c990cc02295
> a=rtpmap:98 VP9/90000
> a=rtpmap:102 H264/90000
> a=fmtp:102 packetization-mode=1;level-asymmetry-allowed=1;profile-level-id=42001F
> a=rtpmap:96 VP8/90000
> a=sendonly
> a=rtcp-mux
> a=ssrc:733408114 cname:15205e51-0bd9-4d35-a90f-59614506084a
> a=msid:dcd91543-5b85-4550-8047-4a585743e859 16b8b8c5-1661-4a1a-8f5d-39f566c1d834
> a=rtcp-fb:* transport-cc
> a=rtcp-fb:* ccm fir
> a=rtcp-fb:* nack
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> a=mid:video-2
> SIP/2.0 200 OK
> Via: SIP/2.0/WSS 192.168.1.231:9062;rport;branch=z9hG4bKPjafc6d2ba-2841-43e9-9184-92fb5d27f465;alias
> To: <sip:1_webrtc at 192.168.1.231>;tag=27mgt9i7b4
> From: <sip:9988 at 192.168.1.231>;tag=f044d3f5-97b1-4305-86e8-d7f6d6f57feb
> Call-ID: vralkvok6h1vp2r8ab6c
> CSeq: 14043 INVITE
> Contact: <sip:14hjh1lr at gn423gqo2vbs.invalid;transport=ws;ob>
> Session-Expires: 1800;refresher=uas
> Supported: timer,ice,replaces,outbound
> Content-Type: application/sdp
> Content-Length: 3426
> v=0
> o=- 849152999030188088 3 IN IP4 127.0.0.1
> s=-
> t=0 0
> a=group:BUNDLE 0 1 video-2
> a=msid-semantic: WMS u6tstBvLcUbxW0IEheMslXD1t1b6fIKF4cVM
> m=audio 60600 UDP/TLS/RTP/SAVPF 111 9 8 0 126
> c=IN IP4 212.247.4.149
> a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3460887983 1 udp 2122260223 192.168.1.64 60600 typ host generation 0 network-id 1
> a=candidate:945327227 1 udp 1686052607 212.247.4.149 60600 typ srflx raddr 192.168.1.64 rport 60600 generation 0 network-id 1
> a=candidate:2160789855 1 tcp 1518280447 192.168.1.64 9 typ host tcptype active generation 0 network-id 1
> a=ice-ufrag:Nk03
> a=ice-pwd:wkJ1TKIZ6kf3QyBGgL6QYZXz
> a=ice-options:trickle
> a=fingerprint:sha-256 5A:29:86:1F:EE:42:53:0F:14:2C:90:9A:02:19:C3:0E:DE:78:74:D6:2E:15:DD:47:F5:CE:4D:03:72:45:7D:2B
> a=setup:passive
> a=mid:0
> a=sendrecv
> a=msid:u6tstBvLcUbxW0IEheMslXD1t1b6fIKF4cVM b8a51bfa-2ff0-4c5a-8b5e-0f3374fa0c66
> a=rtcp-mux
> a=rtpmap:111 opus/48000/2
> a=rtcp-fb:111 transport-cc
> a=fmtp:111 minptime=10;useinbandfec=1
> a=rtpmap:9 G722/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:126 telephone-event/8000
> a=ssrc:1854519133 cname:LDd7LE4FD0g2MJyG
> m=video 63435 UDP/TLS/RTP/SAVPF 98 102 96
> c=IN IP4 212.247.4.149
> b=AS:1000a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3460887983 1 udp 2122260223 192.168.1.64 63435 typ host generation 0 network-id 1
> a=candidate:945327227 1 udp 1686052607 212.247.4.149 63435 typ srflx raddr 192.168.1.64 rport 63435 generation 0 network-id 1
> a=candidate:2160789855 1 tcp 1518280447 192.168.1.64 9 typ host tcptype active generation 0 network-id 1
> a=ice-ufrag:Nk03
> a=ice-pwd:wkJ1TKIZ6kf3QyBGgL6QYZXz
> a=ice-options:trickle
> a=fingerprint:sha-256 5A:29:86:1F:EE:42:53:0F:14:2C:90:9A:02:19:C3:0E:DE:78:74:D6:2E:15:DD:47:F5:CE:4D:03:72:45:7D:2B
> a=setup:passive
> a=mid:1
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> a=sendrecv
> a=msid:u6tstBvLcUbxW0IEheMslXD1t1b6fIKF4cVM d1f0a022-7164-49a7-acb9-74e9ef8bbee6
> a=rtcp-mux
> a=rtpmap:98 VP9/90000
> a=rtcp-fb:98 transport-cc
> a=rtcp-fb:98 ccm fir
> a=rtcp-fb:98 nack
> a=fmtp:98 profile-id=0
> a=rtpmap:102 H264/90000
> a=rtcp-fb:102 transport-cc
> a=rtcp-fb:102 ccm fir
> a=rtcp-fb:102 nack
> a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
> a=rtpmap:96 VP8/90000
> a=rtcp-fb:96 transport-cc
> a=rtcp-fb:96 ccm fir
> a=rtcp-fb:96 nack
> a=ssrc-group:FID 12683906 4121512
> a=ssrc:12683906 cname:LDd7LE4FD0g2MJyG
> a=ssrc:4121512 cname:LDd7LE4FD0g2MJyG
> m=video 9 UDP/TLS/RTP/SAVPF 98 102 96
> c=IN IP4 0.0.0.0
> a=rtcp:9 IN IP4 0.0.0.0
> a=ice-ufrag:Nk03
> a=ice-pwd:wkJ1TKIZ6kf3QyBGgL6QYZXz
> a=ice-options:trickle
> a=fingerprint:sha-256 5A:29:86:1F:EE:42:53:0F:14:2C:90:9A:02:19:C3:0E:DE:78:74:D6:2E:15:DD:47:F5:CE:4D:03:72:45:7D:2B
> a=setup:passive
> a=mid:video-2
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> a=recvonly
> a=rtcp-mux
> a=rtpmap:98 VP9/90000
> a=rtcp-fb:98 transport-cc
> a=rtcp-fb:98 ccm fir
> a=rtcp-fb:98 nack
> a=fmtp:98 profile-id=0
> a=rtpmap:102 H264/90000
> a=rtcp-fb:102 transport-cc
> a=rtcp-fb:102 ccm fir
> a=rtcp-fb:102 nack
> a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
> a=rtpmap:96 VP8/90000
> a=rtcp-fb:96 transport-cc
> a=rtcp-fb:96 ccm fir
> a=rtcp-fb:96 nack
> Asterisk will send the other participants video stream on the second video with ssrc=12683906 and everything is working with video and voice coming from and to both participants.
> The problem is when the client loses a packet and sends a NACK request to Asterisk, then asterisk is unable to map that rtcp instance to the sendonly stream since the mapping is marked as ssrc_invalid=0. Asterisk will then fail to map to the correct instance and try to act on the voice instance instead and write res_rtp_asterisk.c:6551 ast_rtcp_interpret: (0x7ff0c8083bc0) RTCP before handle NACK request, retransmissions are not enabled ignore this message!
> I can see by adding some extra logging in asterisk that the function ast_rtp_bundle sets the mapping.ssrc_valid=child_rtp->themssrc_valid wich in this case is 0 right after asterisk processes the sdp.
> It's possible to get retransmissions to work by changing this line in __rtp_find_instance_by_ssrc
> if (mapping->ssrc_valid && mapping_ssrc == ssrc) {
> to
> if (mapping_ssrc == ssrc) {



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list