pion / transport

Transport testing for Pion
https://pion.ly/
MIT License
78 stars 54 forks source link

Potential regression in v2.2.5, indefinitely stuck `packetio.(*Buffer).Read` #298

Closed streamer45 closed 2 months ago

streamer45 commented 3 months ago

There seems to be a regression starting from commit https://github.com/pion/transport/commit/c72ccc10e2c6eb585dcacc6088631d5c4e6d0f1e

Calls to packetio.(*Buffer).Read are at times stuck indefinitely, even past closing the connection.

goroutine 63548 [select, 1565 minutes]:
github.com/pion/transport/v2/packetio.(*Buffer).Read(0x40006c0ba0, {0x4000ed2000, 0x5b4, 0x5b4})
    github.com/pion/transport/v2@v2.2.5/packetio/buffer.go:265 +0x1b4
github.com/pion/srtp/v2.(*ReadStreamSRTP).Read(...)
    github.com/pion/srtp/v2@v2.0.18/stream_srtp.go:79
github.com/pion/webrtc/v3.(*DTLSTransport).streamsForSSRC.func1({0x4000ed2000?, 0x5?, 0x2?}, 0x4000dcc420?)
    github.com/pion/webrtc/v3@v3.2.40/dtlstransport.go:494 +0x54
github.com/pion/interceptor.RTPReaderFunc.Read(0x40004cf9b0?, {0x4000ed2000?, 0x2?, 0x2?}, 0x9603c8?)
    github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x38
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRemoteStream.func1({0x4000ed2000, 0x28708?, 0x5b4}, 0x2838c?)
    github.com/pion/interceptor@v0.1.29/pkg/report/receiver_interceptor.go:126 +0x54
github.com/pion/interceptor.RTPReaderFunc.Read(0x0?, {0x4000ed2000?, 0x4001bc25e8?, 0x188c0?}, 0x2000?)
    github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x38
github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).BindRemoteStream.func1({0x4000ed2000, 0x0?, 0x5b4}, 0x4001bc2680?)
    github.com/pion/interceptor@v0.1.29/pkg/twcc/sender_interceptor.go:119 +0x60
github.com/pion/interceptor.RTPReaderFunc.Read(0x4001bc26d8?, {0x4000ed2000?, 0x4001bc26d8?, 0x1f2cc?}, 0xeac720?)
    github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x38
github.com/pion/webrtc/v3.(*RTPReceiver).readRTP(0x4001470bd0, {0x4000ed2000, 0x5b4, 0x5b4}, 0x4001849560)
    github.com/pion/webrtc/v3@v3.2.40/rtpreceiver.go:369 +0x11c
github.com/pion/webrtc/v3.(*TrackRemote).Read(0x4001849560, {0x4000ed2000, 0x5b4, 0x5b4})
    github.com/pion/webrtc/v3@v3.2.40/track_remote.go:139 +0x240
github.com/pion/webrtc/v3.(*TrackRemote).ReadRTP(0x4001849560)
    github.com/pion/webrtc/v3@v3.2.40/track_remote.go:177 +0x64

The main difference I notice is that we are receiving the track (onTrack event) and a few moments after we get an unhandled RTP error causing everything to halt:

trace [2024-07-18 10:31:59.405 +02:00] got new track: &{mu:{w:{state:0 sema:0} writerSem:0 readerSem:0 readerCount:{_:{} v:0} readerWait:{_:{} v:0}} id:31646962-5b22-4b42-9b1c-0e4dd0079edd streamID:fd0e4e8f-f667-4991-8842-0fe56f0df8fb payloadType:111 kind:1 ssrc:2433275910 rtxSsrc:0 codec:{RTPCodecCapability:{MimeType:audio/opus ClockRate:48000 Channels:2 SDPFmtpLine:minptime=10;useinbandfec=1 RTCPFeedback:[{Type:transport-cc Parameter:}]} PayloadType:111 statsID:} params:{HeaderExtensions:[{URI:urn:ietf:params:rtp-hdrext:ssrc-audio-level ID:1} {URI:http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 ID:5}] Codecs:[{RTPCodecCapability:{MimeType:audio/opus ClockRate:48000 Channels:2 SDPFmtpLine:minptime=10;useinbandfec=1 RTCPFeedback:[{Type:transport-cc Parameter:}]} PayloadType:111 statsID:}]} rid: receiver:0xc0025854d0 peeked:[144 111 49 65 51 239 155 157 145 8 216 6 190 222 0 2 81 0 4 16 181 0 0 0 120 138 111 212 170 245 159 35 216 51 51 123 131 13 60 180 22 64 177 99 47 100 220 13 124 241 55 132 140 242 215 54 60 139 188 223 215 171 57 206 239 254 172 51 113 195 98 173 198 126 184 228 88 126 120 127 141 216 116 149 255 170 135 207 108 59 253 48 15 253 24 143 142 211 180] peekedAttributes:map[0:0xc002409770]} caller="rtc/logger.go:62" origin="webrtc/v3.(*PeerConnection).onTrack webrtc/v3@v3.2.40/peerconnection.go:466"
error [2024-07-18 10:31:59.746 +02:00] Incoming unhandled RTP ssrc(2433275910), OnTrack will not be fired. incoming SSRC failed Simulcast probing caller="rtc/logger.go:86" origin="webrtc/v3.(*PeerConnection).undeclaredRTPMediaProcessor.func1 webrtc/v3@v3.2.40/peerconnection.go:1679"

On previous (working) versions, we'd get the sporadic unhandled RTP error, but it would be followed by the OnTrack event firing.

/cc @paulwe @cnderrauber @Sean-Der

cnderrauber commented 3 months ago

do you have two goroutines to read a single TrackRemote concurrently?

streamer45 commented 3 months ago

do you have two goroutines to read a single TrackRemote concurrently?

@cnderrauber I don't believe so :thinking: . We go into a standard read loop inside the OnTrack handler. The only concurrency I can see at first glance is on the RTPReceiver for that track, which is handled in a separate goroutine that deals with RTCP. Wondering if that could be an issue then.

cnderrauber commented 3 months ago

Which client are you using to send the rtp tracks? From your description that you had seen incoming unhandled ... first then onTrack fired I doubt the client is sending rtp packets before negotiation completed OR you send the answer to remote peer before call pc.SetLocalDescription? The race condition can happen in below sequence:

  1. remote peer establishes the connection
  2. remote peer publish a track and renegotiate, start sending before renegotiation completed
  3. local peer receives packet with unknown ssrc and go to simulcast probe here, it will call Read to probe simulcast rtp extensions in a goroutine
  4. sdp negotiated at same time and the ssrc becomes known in a transceiver then pion will peek the packet and fire onTrack event [here], then you start the read loop
  5. pc closed before simulcast goroutine exited then only one blocking read method will exit because the reason discussed in #291

It is hard to make sure remote peer start sending before negotiation is completed, we need to make Close unblock all Read methods. cc @paulwe

streamer45 commented 3 months ago

Which client are you using to send the rtp tracks?

@cnderrauber This is reproducing with two clients (both Chrome Linux 126.0.6478.114) connecting through a pion SFU.

  1. ClientA is connected and sharing two tracks, one voice, and one screen.
  2. ClientB connects and receives the above tracks correctly.
  3. After a couple of seconds, ClientB offers a voice track, which gets negotiated correctly and is received by ClientA.
  4. For a very brief moment (half a second maybe?) ClientA can receive the audio packets from ClientB but as soon as the unhandled RTP error fires, everything goes to a halt with ClientB unable to "hear" ClientA any longer.

From your description that you had seen incoming unhandled ... first then onTrack fired I doubt the client is sending rtp packets before negotiation completed OR you send the answer to remote peer before call pc.SetLocalDescription?

Yes, I've seen this before and it seemed mostly benign. I am also fairly certain we set the local description before sending out any answer through the signaling channel.

cnderrauber commented 3 months ago

So there's no close called in you reproduce steps? Then there might be another reason to cause the halt. The change seems unlikely cause other deaklock except concurrently reading, can you replace transport version to previous one in your go mod to try to reproduce the issue to confirm it is caused by this change?

streamer45 commented 3 months ago

So there's no close called in you reproduce steps?

Correct. Closing the session does not unblock the Read, but at that point, the main issue is already ongoing.

Then there might be another reason to cause the halt. The change seems unlikely cause other deaklock except concurrently reading, can you replace transport version to previous one in your go mod to try to reproduce the issue to confirm it is caused by this change?

Before opening this issue I did exactly that and bisected to the mentioned commit. Of course, I can give it another try.

streamer45 commented 3 months ago

I can confirm 465cf3158bdb7b91470f16e3abce742df44982f4 to be the last working commit.

except concurrently reading

I'll look deeper into this but nothing stands out at the moment unless the concurrency is coming from pion internals.

streamer45 commented 3 months ago

@cnderrauber It seems like in the reproducing case, we have at least three goroutines trying to read from the track, in the following order:

goroutine 4430 [running]:
runtime/debug.Stack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:24 +0x5e
runtime/debug.PrintStack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:16 +0x13
github.com/pion/transport/v2/packetio.(*Buffer).Read(0xc001bcfaa0, {0xc00259d200, 0x5b4, 0x5b4})
    /home/streamer45/go/src/github.com/pion/transport/packetio/buffer.go:206 +0xdc
github.com/pion/srtp/v2.(*ReadStreamSRTP).Read(0xdeaf28?, {0xc00259d200?, 0x0?, 0x0?})
    /home/streamer45/go/pkg/mod/github.com/pion/srtp/v2@v2.0.18/stream_srtp.go:79 +0x22
github.com/pion/webrtc/v3.(*PeerConnection).handleIncomingSSRC(0xc0000ee900, {0xddff60, 0xc00258f950}, 0x1275b1ff)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:1574 +0x2a5
github.com/pion/webrtc/v3.(*PeerConnection).undeclaredRTPMediaProcessor.func1({0xddff60?, 0xc00258f950?}, 0x22bf020?)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:1678 +0x45
created by github.com/pion/webrtc/v3.(*PeerConnection).undeclaredRTPMediaProcessor in goroutine 4404
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:1677 +0x2dd
goroutine 4466 [running]:
runtime/debug.Stack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:24 +0x5e
runtime/debug.PrintStack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:16 +0x13
github.com/pion/transport/v2/packetio.(*Buffer).Read(0xc001bcfaa0, {0xc002609800, 0x5b4, 0x5b4})
    /home/streamer45/go/src/github.com/pion/transport/packetio/buffer.go:211 +0x7ab
github.com/pion/srtp/v2.(*ReadStreamSRTP).Read(...)
    /home/streamer45/go/pkg/mod/github.com/pion/srtp/v2@v2.0.18/stream_srtp.go:79
github.com/pion/webrtc/v3.(*DTLSTransport).streamsForSSRC.func1({0xc002609800?, 0xc001db8530?, 0x41a188?}, 0xc001a29920?)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/dtlstransport.go:494 +0x42
github.com/pion/interceptor.RTPReaderFunc.Read(0x0?, {0xc002609800?, 0x4dcaa0?, 0xc001a29900?}, 0xc001db84b0?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRemoteStream.func1({0xc002609800, 0x0?, 0x5b4}, 0x0?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/pkg/report/receiver_interceptor.go:126 +0x4c
github.com/pion/interceptor.RTPReaderFunc.Read(0xc001db8598?, {0xc002609800?, 0xc001cda3c0?, 0x60?}, 0x58?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).BindRemoteStream.func1({0xc002609800, 0xc0020a06c0?, 0x5b4}, 0xc001db8501?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/pkg/twcc/sender_interceptor.go:119 +0x64
github.com/pion/interceptor.RTPReaderFunc.Read(0x30?, {0xc002609800?, 0xc001db86a0?, 0x40b808?}, 0xc001cda3c0?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/webrtc/v3.(*RTPReceiver).readRTP(0xc002105050, {0xc002609800, 0x5b4, 0x5b4}, 0xc002497b00)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/rtpreceiver.go:369 +0x10e
github.com/pion/webrtc/v3.(*TrackRemote).Read(0xc002497b00, {0xc002609800, 0x5b4, 0x5b4})
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/track_remote.go:139 +0x24e
github.com/pion/webrtc/v3.(*TrackRemote).peek(0xc002497b00, {0xc002609800, 0xc001db87d0?, 0x5b4})
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/track_remote.go:191 +0x26
github.com/pion/webrtc/v3.(*PeerConnection).startReceiver.func1(0xc0022bf020?)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:1241 +0x79
created by github.com/pion/webrtc/v3.(*PeerConnection).startReceiver in goroutine 4452
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:1239 +0x1e5

Finally the OnTrack handler on the application side which is expected.

goroutine 4453 [running]:
runtime/debug.Stack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:24 +0x5e
runtime/debug.PrintStack()
    /home/streamer45/sdk/go1.21.9/src/runtime/debug/stack.go:16 +0x13
github.com/pion/transport/v2/packetio.(*Buffer).Read(0xc001bcfaa0, {0xc0024f4600, 0x5b4, 0x5b4})
    /home/streamer45/go/src/github.com/pion/transport/packetio/buffer.go:211 +0x7ab
github.com/pion/srtp/v2.(*ReadStreamSRTP).Read(...)
    /home/streamer45/go/pkg/mod/github.com/pion/srtp/v2@v2.0.18/stream_srtp.go:79
github.com/pion/webrtc/v3.(*DTLSTransport).streamsForSSRC.func1({0xc0024f4600?, 0x1?, 0x0?}, 0x5?)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/dtlstransport.go:494 +0x42
github.com/pion/interceptor.RTPReaderFunc.Read(0xcc66d8?, {0xc0024f4600?, 0xc0011c0420?, 0xc0022556e0?}, 0x2?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRemoteStream.func1({0xc0024f4600, 0x20?, 0x5b4}, 0x0?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/pkg/report/receiver_interceptor.go:126 +0x4c
github.com/pion/interceptor.RTPReaderFunc.Read(0x1?, {0xc0024f4600?, 0xc0024e9020?, 0xc0025147c8?}, 0xad0a3c?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).BindRemoteStream.func1({0xc0024f4600, 0xc0020a06c0?, 0x5b4}, 0xc002514701?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/pkg/twcc/sender_interceptor.go:119 +0x64
github.com/pion/interceptor.RTPReaderFunc.Read(0xc0001f91e0?, {0xc0024f4600?, 0x2?, 0x0?}, 0xc0025147d0?)
    /home/streamer45/go/pkg/mod/github.com/pion/interceptor@v0.1.29/interceptor.go:91 +0x28
github.com/pion/webrtc/v3.(*RTPReceiver).readRTP(0xc002105050, {0xc0024f4600, 0x5b4, 0x5b4}, 0xc002497b00)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/rtpreceiver.go:369 +0x10e
github.com/pion/webrtc/v3.(*TrackRemote).Read(0xc002497b00, {0xc0024f4600, 0x5b4, 0x5b4})
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/track_remote.go:139 +0x24e
github.com/pion/webrtc/v3.(*TrackRemote).ReadRTP(0xc002497b00)
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/track_remote.go:177 +0x66
github.com/mattermost/rtcd/service/rtc.(*Server).InitSession.func6(0xc002497b00, 0xc002105050)
    /home/streamer45/go/src/github.com/mattermost/rtcd/service/rtc/sfu.go:439 +0x3971
created by github.com/pion/webrtc/v3.(*PeerConnection).onTrack in goroutine 4466
    /home/streamer45/go/pkg/mod/github.com/pion/webrtc/v3@v3.2.40/peerconnection.go:469 +0x165
cnderrauber commented 3 months ago

For a very brief moment (half a second maybe?) ClientA can receive the audio packets from ClientB but as soon as the unhandled RTP error fires, everything goes to a halt with ClientB unable to "hear" ClientA any longer.

It sounds like the track is closed unexpectedly then packet fires simucalst probe for unknown ssrc, can you confirm there is no close method called or sdp negotiation make the transceiver go to inactive by print all the sdps?

streamer45 commented 3 months ago

It sounds like the track is closed unexpectedly then packet fires simucalst probe for unknown ssrc, can you confirm there is no close method called or sdp negotiation make the transceiver go to inactive by print all the sdps?

Yeah, something is likely happening due to the video track being part of the offer because in an audio tracks only scenario I can't reproduce this. Here's the full sequence of the affected client's SDP exchange:

Offer (client) v=0 o=- 1284299247372039849 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 a=extmap-allow-mixed a=msid-semantic: WMS m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:actpass a=mid:0 a=sctp-port:5000 a=max-message-size:262144
Answer (pion) v=0 o=- 3154593525473217347 1721313512 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 CB:44:8D:F0:37:41:1E:B5:EA:37:D3:63:63:43:F1:A4:95:2C:90:93:7B:56:07:C6:BC:8A:36:C7:CF:76:62:F0 a=extmap-allow-mixed a=group:BUNDLE 0 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=setup:active a=mid:0 a=sendrecv a=sctp-port:5000 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv
Offer (pion) v=0 o=- 3154593525473217347 1721313513 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 CB:44:8D:F0:37:41:1E:B5:EA:37:D3:63:63:43:F1:A4:95:2C:90:93:7B:56:07:C6:BC:8A:36:C7:CF:76:62:F0 a=extmap-allow-mixed a=group:BUNDLE 0 1 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=setup:actpass a=mid:0 a=sendrecv a=sctp-port:5000 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=candidate:2878742611 1 udp 2130706431 127.0.0.1 30443 typ host a=candidate:2878742611 2 udp 2130706431 127.0.0.1 30443 typ host a=candidate:1923487681 1 udp 2130706431 192.168.254.1 30443 typ host a=candidate:1923487681 2 udp 2130706431 192.168.254.1 30443 typ host m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:1 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtcp-fb:111 transport-cc a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=ssrc:1694965936 cname:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=ssrc:1694965936 mslabel:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 label:voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=sendrecv
Answer (client) v=0 o=- 1284299247372039849 3 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS m=application 58329 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 192.168.254.1 a=candidate:2912308788 1 udp 2122194687 192.168.254.1 58329 typ host generation 0 network-id 1 a=candidate:3698760548 1 udp 2122129151 172.17.0.1 60263 typ host generation 0 network-id 2 a=candidate:1535142394 1 udp 2122063615 192.168.1.64 56602 typ host generation 0 network-id 3 a=candidate:3446450365 1 udp 2121998079 100.104.198.120 34093 typ host generation 0 network-id 4 a=candidate:4270152963 1 udp 2122265343 fd7a:115c:a1e0:ab12:4843:cd96:6268:c678 52469 typ host generation 0 network-id 5 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:passive a=mid:0 a=sctp-port:5000 m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:passive a=mid:1 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=recvonly a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1
Offer (pion) v=0 o=- 3154593525473217347 1721313514 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 CB:44:8D:F0:37:41:1E:B5:EA:37:D3:63:63:43:F1:A4:95:2C:90:93:7B:56:07:C6:BC:8A:36:C7:CF:76:62:F0 a=extmap-allow-mixed a=group:BUNDLE 0 1 2 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=setup:actpass a=mid:0 a=sendrecv a=sctp-port:5000 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=candidate:2878742611 1 udp 2130706431 127.0.0.1 30443 typ host a=candidate:2878742611 2 udp 2130706431 127.0.0.1 30443 typ host a=candidate:1923487681 1 udp 2130706431 192.168.254.1 30443 typ host a=candidate:1923487681 2 udp 2130706431 192.168.254.1 30443 typ host a=candidate:233762139 1 udp 2130706431 172.17.0.1 30443 typ host a=candidate:233762139 2 udp 2130706431 172.17.0.1 30443 typ host a=candidate:2975927411 1 udp 2130706431 100.104.198.120 30443 typ host a=candidate:2975927411 2 udp 2130706431 100.104.198.120 30443 typ host a=candidate:1952023002 1 udp 2130706431 192.168.1.64 30443 typ host a=candidate:1952023002 2 udp 2130706431 192.168.1.64 30443 typ host a=candidate:375738803 1 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:375738803 2 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:3478480417 1 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:3478480417 2 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:2954730683 1 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:2954730683 2 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:210926995 1 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:210926995 2 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:3383423034 1 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=candidate:3383423034 2 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=end-of-candidates m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:1 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtcp-fb:111 transport-cc a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=ssrc:1694965936 cname:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=ssrc:1694965936 mslabel:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 label:voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=sendrecv m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:2 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtcp-fb:96 transport-cc a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=ssrc:2095059163 cname:p7ytoh9j5i8hxf3h7zrmg7491o a=ssrc:2095059163 msid:p7ytoh9j5i8hxf3h7zrmg7491o screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=ssrc:2095059163 mslabel:p7ytoh9j5i8hxf3h7zrmg7491o a=ssrc:2095059163 label:screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=msid:p7ytoh9j5i8hxf3h7zrmg7491o screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=sendrecv
Answer (client) SDP:v=0 o=- 1284299247372039849 4 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 a=extmap-allow-mixed a=msid-semantic: WMS m=application 58329 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 192.168.254.1 a=candidate:2912308788 1 udp 2122194687 192.168.254.1 58329 typ host generation 0 network-id 1 a=candidate:3698760548 1 udp 2122129151 172.17.0.1 60263 typ host generation 0 network-id 2 a=candidate:1535142394 1 udp 2122063615 192.168.1.64 56602 typ host generation 0 network-id 3 a=candidate:3446450365 1 udp 2121998079 100.104.198.120 34093 typ host generation 0 network-id 4 a=candidate:4270152963 1 udp 2122265343 fd7a:115c:a1e0:ab12:4843:cd96:6268:c678 52469 typ host generation 0 network-id 5 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:passive a=mid:0 a=sctp-port:5000 m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:passive a=mid:1 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=recvonly a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:passive a=mid:2 a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:- 914c9c62-fd70-40a8-9ded-db002c8324c9 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=ssrc:1872051997 cname:LU26xme7tGsQzW+c
Offer (client) v=0 o=- 1284299247372039849 5 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 a=extmap-allow-mixed a=msid-semantic: WMS ee850ccc-ff46-4fa0-b097-3a8d839278fe m=application 58329 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 192.168.254.1 a=candidate:2912308788 1 udp 2122194687 192.168.254.1 58329 typ host generation 0 network-id 1 a=candidate:3698760548 1 udp 2122129151 172.17.0.1 60263 typ host generation 0 network-id 2 a=candidate:1535142394 1 udp 2122063615 192.168.1.64 56602 typ host generation 0 network-id 3 a=candidate:3446450365 1 udp 2121998079 100.104.198.120 34093 typ host generation 0 network-id 4 a=candidate:4270152963 1 udp 2122265343 fd7a:115c:a1e0:ab12:4843:cd96:6268:c678 52469 typ host generation 0 network-id 5 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:actpass a=mid:0 a=sctp-port:5000 a=max-message-size:262144 m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:actpass a=mid:1 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:14 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:ee850ccc-ff46-4fa0-b097-3a8d839278fe 5ed55ae1-748c-4c80-9bda-e16b6a8858c3 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:126 telephone-event/8000 a=ssrc:2526930264 cname:LU26xme7tGsQzW+c a=ssrc:2526930264 msid:ee850ccc-ff46-4fa0-b097-3a8d839278fe 5ed55ae1-748c-4c80-9bda-e16b6a8858c3 m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 103 104 105 106 107 108 109 127 125 39 40 45 46 98 99 100 101 112 113 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:jafp a=ice-pwd:ZBrZbCp3lRSfwg7fdqx2cZ0R a=ice-options:trickle a=fingerprint:sha-256 C7:A2:B3:32:5C:47:66:BB:38:52:B1:8C:A8:74:D2:07:04:4B:3B:71:B5:25:2B:C4:A8:78:08:56:29:B8:3F:8A a=setup:actpass a=mid:2 a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=extmap:13 urn:ietf:params:rtp-hdrext:toffset a=extmap:14 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:12 urn:3gpp:video-orientation a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=sendrecv a=msid:- 914c9c62-fd70-40a8-9ded-db002c8324c9 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:103 rtx/90000 a=fmtp:103 apt=102 a=rtpmap:104 H264/90000 a=rtcp-fb:104 goog-remb a=rtcp-fb:104 transport-cc a=rtcp-fb:104 ccm fir a=rtcp-fb:104 nack a=rtcp-fb:104 nack pli a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:105 rtx/90000 a=fmtp:105 apt=104 a=rtpmap:106 H264/90000 a=rtcp-fb:106 goog-remb a=rtcp-fb:106 transport-cc a=rtcp-fb:106 ccm fir a=rtcp-fb:106 nack a=rtcp-fb:106 nack pli a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=106 a=rtpmap:108 H264/90000 a=rtcp-fb:108 goog-remb a=rtcp-fb:108 transport-cc a=rtcp-fb:108 ccm fir a=rtcp-fb:108 nack a=rtcp-fb:108 nack pli a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:109 rtx/90000 a=fmtp:109 apt=108 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:125 rtx/90000 a=fmtp:125 apt=127 a=rtpmap:39 H264/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:45 AV1/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=fmtp:45 level-idx=5;profile=0;tier=0 a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:112 red/90000 a=rtpmap:113 rtx/90000 a=fmtp:113 apt=112 a=rtpmap:114 ulpfec/90000 a=ssrc:1872051997 cname:LU26xme7tGsQzW+c a=ssrc:1872051997 msid:- 914c9c62-fd70-40a8-9ded-db002c8324c9
Answer (pion) v=0 o=- 3154593525473217347 1721313515 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 CB:44:8D:F0:37:41:1E:B5:EA:37:D3:63:63:43:F1:A4:95:2C:90:93:7B:56:07:C6:BC:8A:36:C7:CF:76:62:F0 a=extmap-allow-mixed a=group:BUNDLE 0 1 2 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=setup:active a=mid:0 a=sendrecv a=sctp-port:5000 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=candidate:375738803 1 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:375738803 2 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:3478480417 1 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:3478480417 2 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:2954730683 1 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:2954730683 2 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:210926995 1 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:210926995 2 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:3383423034 1 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=candidate:3383423034 2 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=candidate:2878742611 1 udp 2130706431 127.0.0.1 30443 typ host a=candidate:2878742611 2 udp 2130706431 127.0.0.1 30443 typ host a=candidate:1923487681 1 udp 2130706431 192.168.254.1 30443 typ host a=candidate:1923487681 2 udp 2130706431 192.168.254.1 30443 typ host a=candidate:233762139 1 udp 2130706431 172.17.0.1 30443 typ host a=candidate:233762139 2 udp 2130706431 172.17.0.1 30443 typ host a=candidate:2975927411 1 udp 2130706431 100.104.198.120 30443 typ host a=candidate:2975927411 2 udp 2130706431 100.104.198.120 30443 typ host a=candidate:1952023002 1 udp 2130706431 192.168.1.64 30443 typ host a=candidate:1952023002 2 udp 2130706431 192.168.1.64 30443 typ host a=end-of-candidates m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=setup:active a=mid:1 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtcp-fb:111 transport-cc a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=ssrc:1694965936 cname:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=ssrc:1694965936 mslabel:ecsos9wppbfzug1bo59nbnceio a=ssrc:1694965936 label:voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=msid:ecsos9wppbfzug1bo59nbnceio voice_bmm4cyphgb847mgjcpeg13rech_inzpfo1a a=sendrecv m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=setup:active a=mid:2 a=ice-ufrag:UaMrFyhUIVKnSSPE a=ice-pwd:qDzYGaQJrJXdHvujxVeEDzdzybzxtKzv a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=ssrc:2095059163 cname:p7ytoh9j5i8hxf3h7zrmg7491o a=ssrc:2095059163 msid:p7ytoh9j5i8hxf3h7zrmg7491o screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=ssrc:2095059163 mslabel:p7ytoh9j5i8hxf3h7zrmg7491o a=ssrc:2095059163 label:screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=msid:p7ytoh9j5i8hxf3h7zrmg7491o screen_bmm4cyphgb847mgjcpeg13rech_8wyruk9a a=sendrecv
Offer (pion) v=0 o=- 5843810858778859013 1721313500 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 BC:15:6F:07:8F:E2:02:7E:52:77:0C:BF:1B:DA:98:2A:6C:F8:FF:0B:5A:2F:5A:15:3F:98:F0:9E:CA:D8:E3:33 a=extmap-allow-mixed a=group:BUNDLE 0 1 2 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=setup:actpass a=mid:0 a=sendrecv a=sctp-port:5000 a=ice-ufrag:YWmeUNDXBDYNdqrf a=ice-pwd:UuQjvADEbGilgVJdVVofbhcSquBhEwwz a=candidate:2878742611 1 udp 2130706431 127.0.0.1 30443 typ host a=candidate:2878742611 2 udp 2130706431 127.0.0.1 30443 typ host a=candidate:1923487681 1 udp 2130706431 192.168.254.1 30443 typ host a=candidate:1923487681 2 udp 2130706431 192.168.254.1 30443 typ host a=candidate:233762139 1 udp 2130706431 172.17.0.1 30443 typ host a=candidate:233762139 2 udp 2130706431 172.17.0.1 30443 typ host a=candidate:2975927411 1 udp 2130706431 100.104.198.120 30443 typ host a=candidate:2975927411 2 udp 2130706431 100.104.198.120 30443 typ host a=candidate:1952023002 1 udp 2130706431 192.168.1.64 30443 typ host a=candidate:1952023002 2 udp 2130706431 192.168.1.64 30443 typ host a=candidate:375738803 1 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:375738803 2 tcp 1671430143 127.0.0.1 30443 typ host tcptype passive a=candidate:3478480417 1 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:3478480417 2 tcp 1671430143 192.168.254.1 30443 typ host tcptype passive a=candidate:2954730683 1 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:2954730683 2 tcp 1671430143 172.17.0.1 30443 typ host tcptype passive a=candidate:210926995 1 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:210926995 2 tcp 1671430143 100.104.198.120 30443 typ host tcptype passive a=candidate:3383423034 1 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=candidate:3383423034 2 tcp 1671430143 192.168.1.64 30443 typ host tcptype passive a=end-of-candidates m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:1 a=ice-ufrag:YWmeUNDXBDYNdqrf a=ice-pwd:UuQjvADEbGilgVJdVVofbhcSquBhEwwz a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=recvonly m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:2 a=ice-ufrag:YWmeUNDXBDYNdqrf a=ice-pwd:UuQjvADEbGilgVJdVVofbhcSquBhEwwz a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtcp-fb:111 transport-cc a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=ssrc:928869044 cname:r5qazk113pyy9kjjuruf8p4zae a=ssrc:928869044 msid:r5qazk113pyy9kjjuruf8p4zae voice_noptzz5jwinkt8418hnfppxs1w_tqtpgbi5 a=ssrc:928869044 mslabel:r5qazk113pyy9kjjuruf8p4zae a=ssrc:928869044 label:voice_noptzz5jwinkt8418hnfppxs1w_tqtpgbi5 a=msid:r5qazk113pyy9kjjuruf8p4zae voice_noptzz5jwinkt8418hnfppxs1w_tqtpgbi5 a=sendrecv
Answer (client) v=0 o=- 8065232482067447291 5 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 a=extmap-allow-mixed a=msid-semantic: WMS 553e4c6c-4e72-47fb-8f61-35bd2243db84 5c1ece8f-e211-4d5b-ab9d-f900e76e3e1b m=application 37344 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 192.168.254.1 a=candidate:1278021067 1 udp 2122194687 192.168.254.1 37344 typ host generation 0 network-id 1 a=candidate:1036900507 1 udp 2122129151 172.17.0.1 60831 typ host generation 0 network-id 2 a=candidate:3124439557 1 udp 2122063615 192.168.1.64 40142 typ host generation 0 network-id 3 a=candidate:752347970 1 udp 2121998079 100.104.198.120 40860 typ host generation 0 network-id 4 a=candidate:524164860 1 udp 2122265343 fd7a:115c:a1e0:ab12:4843:cd96:6268:c678 36869 typ host generation 0 network-id 5 a=ice-ufrag:txEO a=ice-pwd:s1W98gZAtRlIEF9nM/x8vFXe a=ice-options:trickle a=fingerprint:sha-256 AA:79:C0:4F:DE:B7:B2:48:F2:AF:1F:06:7D:98:FC:E3:76:C1:C7:18:0A:0C:45:89:D3:35:4A:8A:D2:AC:A1:7C a=setup:passive a=mid:0 a=sctp-port:5000 m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:txEO a=ice-pwd:s1W98gZAtRlIEF9nM/x8vFXe a=ice-options:trickle a=fingerprint:sha-256 AA:79:C0:4F:DE:B7:B2:48:F2:AF:1F:06:7D:98:FC:E3:76:C1:C7:18:0A:0C:45:89:D3:35:4A:8A:D2:AC:A1:7C a=setup:passive a=mid:1 a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendonly a=msid:5c1ece8f-e211-4d5b-ab9d-f900e76e3e1b b141720e-7091-4e78-93c0-af2507972131 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=ssrc-group:FID 135833559 3831208114 a=ssrc:135833559 cname:rJPpzuiiRUpzDZu3 a=ssrc:3831208114 cname:rJPpzuiiRUpzDZu3 m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:txEO a=ice-pwd:s1W98gZAtRlIEF9nM/x8vFXe a=ice-options:trickle a=fingerprint:sha-256 AA:79:C0:4F:DE:B7:B2:48:F2:AF:1F:06:7D:98:FC:E3:76:C1:C7:18:0A:0C:45:89:D3:35:4A:8A:D2:AC:A1:7C a=setup:passive a=mid:2 a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=sendrecv a=msid:553e4c6c-4e72-47fb-8f61-35bd2243db84 32aeb59e-3758-417e-9d8e-2e0c64d910bf a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=ssrc:2170722514 cname:rJPpzuiiRUpzDZu3
cnderrauber commented 3 months ago

You said there were 2 clients A and B, does the message only contain 1 client's sdp?

streamer45 commented 3 months ago

You said there were 2 clients A and B, does the message only contain 1 client's sdp?

Yeah, that's just clientB's exchange with pion. That's the side showing the issue. After the last Offer/Answer pair we get the Incoming unhandled RTP ssrc(2526930264), OnTrack will not be fired. incoming SSRC failed Simulcast probing, interrupting the incoming voice track's reader.

cnderrauber commented 3 months ago

The last offer/answer looks weird, the audio/video transceiver exchanged their postion and mid. Pion should not reuse audio transceiver to send video track, what did you do before send last offer to client?

streamer45 commented 3 months ago

Ah, that last exchange is actually pion offering the incoming voice track from clientB to clientA. After negotiating the two existing tracks from the other client (voice + screen), client B offers its voice track. That's what triggers the second to last offer/answer exchange.

cnderrauber commented 3 months ago

so the last offer/answer is pion negotiating with client A?

streamer45 commented 3 months ago

correct

cnderrauber commented 3 months ago

In my opinion the last one should be another peerconnection communicate with client A, how does it impact the peerconnect communicate with client B

streamer45 commented 3 months ago

In my opinion the last one should be another peerconnection communicate with client A, how does it impact the peerconnect communicate with client B

Well yes, there are two peer connections at play here. ClienA <-> pion and ClientB <-> pion. I can share the full exchange including ClientA initial offers if it helps. Also, I may find some time to work on a proper reproducer next week. So far we simply downgraded to v2.2.4 so it's not too urgent.

streamer45 commented 2 months ago

Thank you for the quick fix @edaniels, appreciate it :100: