rtpbench conformance cases: reference agent

date 2026-10-21T15:58:45+00:00, image rtpbench:fe41c0856bb3, commit aivc-b95f5af-wave-16-g687f998, runs 1, kernel 6.8.0-147-generic, python 3.14.8

reference agent, clean

netem per direction: none

caseagentexpectedresulttimings, ms (true value within the error bar)failed checksmeasured − truth, ms
invite-retransmitgoodpass passINVITE to the 2xx: 3079.4 ms (-0.4/+0.4)
INVITE copy to the agent's response: 0.2 ms (-0.4/+0.4)
--
invite-retransmitrejectsfail failINVITE to the 2xx: 3131.8 ms (-0.4/+0.4)
INVITE copy to the agent's response: 0.3 ms (-0.4/+0.4)
one final response to the INVITE (503 Service Unavailable without a To-tag, then 200 OK)-
invite-retransmitignoresfail failINVITE to the 2xx: 3064.6 ms (-0.4/+0.4)
INVITE copy to the agent's response: 2563.7 ms (-0.4/+0.4)
INVITE copy answered within 1000 ms (200 OK after 2564 ms)-
refer-lostgoodpass passend of the request to REFER: 1300.8 ms (-17.0/+17.0)
final NOTIFY to agent BYE: 0.3 ms (-0.4/+0.4)
REFER to its copy: 503.2 ms (-0.4/+0.4)
--
refer-lostoncefail failend of the request to REFER: 1301.2 ms (-17.0/+17.0)agent hangs up within 10 s
REFER resent within 1000 ms (timer E) (none; nor did the agent speak again after its timer F)
-
bye-lostgoodpass passBYE to its copy: 502.6 ms (-0.4/+0.4)--
bye-lostoncefail fail-BYE resent within 1000 ms (timer E) (none)-

True value = measured − error; the error lies within:

Wall-clock steps during the run: none.

RTP pacing, reference agent

The agent's RTP as the caller received it, ms, median [min, max] over calls: late, p99 of how much later than their timestamps say the packets arrived, against the earliest before them: the jitter buffer a receiver needs to play 99% of them in time; jitter, the RFC 3550 interarrival jitter estimate, its median over each call. On a clean network both are the agent's own pacing (and a carrier's); a profile adds its own.

profilecallslate, p99jitter
clean30.1 [0.1, 0.1]0.02 [0.02, 0.02]

Pauses: none; outside a hold, the agent's RTP never went on after stopping for a second or more.

Calls

calleragenttall bars: speech · thin: RTP flowing · ticks: SIP (hover for detail)

invite-retransmit · good · clean · run 1 pass

0 s0.5 s1 s1.5 s2 s2.5 s3 s3.5 s4 s4.5 s5 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPagent RTP 3.100 s to 5.100 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE0.001 s ← SIP/2.0 180 Ringing (1 INVITE)0.501 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.501 s ← SIP/2.0 180 Ringing (1 INVITE)180 INVITE3.079 s ← SIP/2.0 200 OK (1 INVITE)200 INVITE3.080 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)ACK5.080 s → BYE sip:agent@172.16.1.3:5060 SIP/2.0 (2 BYE)BYE5.081 s ← SIP/2.0 200 OK (2 BYE)200 BYE
SIP messages (9)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
0.001agent → callerSIP/2.0 180 Ringing1 INVITE
0.501caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.501agent → callerSIP/2.0 180 Ringing1 INVITE
3.079agent → callerSIP/2.0 200 OK1 INVITE
3.080caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
5.080caller → agentBYE sip:agent@172.16.1.3:5060 SIP/2.02 BYE
5.081agent → callerSIP/2.0 200 OK2 BYE

invite-retransmit · rejects · clean · run 1 fail

0 s0.5 s1 s1.5 s2 s2.5 s3 s3.5 s4 s4.5 s5 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPagent RTP 3.152 s to 5.152 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE0.001 s ← SIP/2.0 180 Ringing (1 INVITE)0.501 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.501 s ← SIP/2.0 503 Service Unavailable (1 INVITE)503 INVITE0.502 s → ACK sip:agent@172.16.1.3 SIP/2.0 (1 ACK)3.132 s ← SIP/2.0 200 OK (1 INVITE)200 INVITE3.132 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)ACK5.133 s → BYE sip:agent@172.16.1.3:5060 SIP/2.0 (2 BYE)BYE5.133 s ← SIP/2.0 200 OK (2 BYE)200 BYE
SIP messages (10)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
0.001agent → callerSIP/2.0 180 Ringing1 INVITE
0.501caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.501agent → callerSIP/2.0 503 Service Unavailable1 INVITE
0.502caller → agentACK sip:agent@172.16.1.3 SIP/2.01 ACK
3.132agent → callerSIP/2.0 200 OK1 INVITE
3.132caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
5.133caller → agentBYE sip:agent@172.16.1.3:5060 SIP/2.02 BYE
5.133agent → callerSIP/2.0 200 OK2 BYE

invite-retransmit · ignores · clean · run 1 fail

0 s0.5 s1 s1.5 s2 s2.5 s3 s3.5 s4 s4.5 s5 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPagent RTP 3.085 s to 5.085 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE0.001 s ← SIP/2.0 180 Ringing (1 INVITE)0.501 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE1.501 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE3.065 s ← SIP/2.0 200 OK (1 INVITE)200 INVITE3.065 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)ACK5.066 s → BYE sip:agent@172.16.1.3:5060 SIP/2.0 (2 BYE)BYE5.066 s ← SIP/2.0 200 OK (2 BYE)200 BYE
SIP messages (9)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
0.001agent → callerSIP/2.0 180 Ringing1 INVITE
0.501caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
1.501caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
3.065agent → callerSIP/2.0 200 OK1 INVITE
3.065caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
5.066caller → agentBYE sip:agent@172.16.1.3:5060 SIP/2.02 BYE
5.066agent → callerSIP/2.0 200 OK2 BYE

refer-lost · good · clean · run 1 pass

0 s2 s4 s6 s8 s10 s12 s14 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPcaller speech 11.565 s to 12.951 s (labelled)caller RTP 1.157 s to 15.837 sagent RTP 1.157 s to 15.797 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE1.136 s ← SIP/2.0 200 OK (1 INVITE)1.137 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)ACK14.252 s ← REFER sip:rtpbench@172.16.2.3:56938 SIP/2.0 (1 REFER)REFER14.755 s ← REFER sip:rtpbench@172.16.2.3:56938 SIP/2.0 (1 REFER)14.755 s → SIP/2.0 202 Accepted (1 REFER)202 REFER14.755 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (2 NOTIFY)14.755 s ← SIP/2.0 200 OK (2 NOTIFY)15.781 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (3 NOTIFY)15.781 s ← SIP/2.0 200 OK (3 NOTIFY)15.781 s ← BYE sip:rtpbench@172.16.2.3:56938 SIP/2.0 (2 BYE)BYE15.782 s → SIP/2.0 200 OK (2 BYE)
SIP messages (13)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
1.136agent → callerSIP/2.0 200 OK1 INVITE
1.137caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
14.252agent → callerREFER sip:rtpbench@172.16.2.3:56938 SIP/2.01 REFER
14.755agent → callerREFER sip:rtpbench@172.16.2.3:56938 SIP/2.01 REFER
14.755caller → agentSIP/2.0 202 Accepted1 REFER
14.755caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.02 NOTIFY
14.755agent → callerSIP/2.0 200 OK2 NOTIFY
15.781caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.03 NOTIFY
15.781agent → callerSIP/2.0 200 OK3 NOTIFY
15.781agent → callerBYE sip:rtpbench@172.16.2.3:56938 SIP/2.02 BYE
15.782caller → agentSIP/2.0 200 OK2 BYE

refer-lost · once · clean · run 1 fail

0 s5 s10 s15 s20 s25 s30 s35 s40 s45 s50 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPcaller speech 11.501 s to 12.887 s (labelled)caller RTP 1.133 s to 51.213 sagent RTP 1.133 s to 51.233 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE1.113 s ← SIP/2.0 200 OK (1 INVITE)1.113 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)14.188 s ← REFER sip:rtpbench@172.16.2.3:37557 SIP/2.0 (1 REFER)REFER51.214 s → BYE sip:agent@172.16.1.3:5060 SIP/2.0 (2 BYE)BYE51.214 s ← SIP/2.0 200 OK (2 BYE)200 BYE
SIP messages (7)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
1.113agent → callerSIP/2.0 200 OK1 INVITE
1.113caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
14.188agent → callerREFER sip:rtpbench@172.16.2.3:37557 SIP/2.01 REFER
51.214caller → agentBYE sip:agent@172.16.1.3:5060 SIP/2.02 BYE
51.214agent → callerSIP/2.0 200 OK2 BYE

bye-lost · good · clean · run 1 pass

0 s2 s4 s6 s8 s10 s12 s14 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPcaller speech 11.513 s to 12.898 s (labelled)caller RTP 1.145 s to 15.785 sagent RTP 1.144 s to 15.744 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE1.124 s ← SIP/2.0 200 OK (1 INVITE)1.124 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)ACK14.198 s ← REFER sip:rtpbench@172.16.2.3:51282 SIP/2.0 (1 REFER)REFER14.198 s → SIP/2.0 202 Accepted (1 REFER)202 REFER14.198 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (2 NOTIFY)14.198 s ← SIP/2.0 200 OK (2 NOTIFY)15.225 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (3 NOTIFY)15.225 s ← SIP/2.0 200 OK (3 NOTIFY)15.225 s ← BYE sip:rtpbench@172.16.2.3:51282 SIP/2.0 (2 BYE)BYE15.728 s ← BYE sip:rtpbench@172.16.2.3:51282 SIP/2.0 (2 BYE)15.728 s → SIP/2.0 200 OK (2 BYE)
SIP messages (13)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
1.124agent → callerSIP/2.0 200 OK1 INVITE
1.124caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
14.198agent → callerREFER sip:rtpbench@172.16.2.3:51282 SIP/2.01 REFER
14.198caller → agentSIP/2.0 202 Accepted1 REFER
14.198caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.02 NOTIFY
14.198agent → callerSIP/2.0 200 OK2 NOTIFY
15.225caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.03 NOTIFY
15.225agent → callerSIP/2.0 200 OK3 NOTIFY
15.225agent → callerBYE sip:rtpbench@172.16.2.3:51282 SIP/2.02 BYE
15.728agent → callerBYE sip:rtpbench@172.16.2.3:51282 SIP/2.02 BYE
15.728caller → agentSIP/2.0 200 OK2 BYE

bye-lost · once · clean · run 1 fail

0 s5 s10 s15 s20 s25 s30 s35 s40 s45 s50 scaller SIPcaller speechcaller RTPagent SIPagent speechagent RTPcaller speech 11.504 s to 12.890 s (labelled)caller RTP 1.136 s to 52.316 sagent RTP 1.136 s to 52.336 s0.000 s → INVITE sip:agent@172.16.1.3 SIP/2.0 (1 INVITE)INVITE0.000 s ← SIP/2.0 100 Trying (1 INVITE)100 INVITE1.115 s ← SIP/2.0 200 OK (1 INVITE)1.116 s → ACK sip:agent@172.16.1.3:5060 SIP/2.0 (1 ACK)14.204 s ← REFER sip:rtpbench@172.16.2.3:33153 SIP/2.0 (1 REFER)REFER14.204 s → SIP/2.0 202 Accepted (1 REFER)202 REFER14.204 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (2 NOTIFY)14.204 s ← SIP/2.0 200 OK (2 NOTIFY)15.244 s → NOTIFY sip:agent@172.16.1.3:5060 SIP/2.0 (3 NOTIFY)15.244 s ← SIP/2.0 200 OK (3 NOTIFY)15.244 s ← BYE sip:rtpbench@172.16.2.3:33153 SIP/2.0 (2 BYE)52.316 s → BYE sip:agent@172.16.1.3:5060 SIP/2.0 (4 BYE)BYE52.316 s ← SIP/2.0 200 OK (4 BYE)200 BYE
SIP messages (13)
sdirectionmessageCSeq
0.000caller → agentINVITE sip:agent@172.16.1.3 SIP/2.01 INVITE
0.000agent → callerSIP/2.0 100 Trying1 INVITE
1.115agent → callerSIP/2.0 200 OK1 INVITE
1.116caller → agentACK sip:agent@172.16.1.3:5060 SIP/2.01 ACK
14.204agent → callerREFER sip:rtpbench@172.16.2.3:33153 SIP/2.01 REFER
14.204caller → agentSIP/2.0 202 Accepted1 REFER
14.204caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.02 NOTIFY
14.204agent → callerSIP/2.0 200 OK2 NOTIFY
15.244caller → agentNOTIFY sip:agent@172.16.1.3:5060 SIP/2.03 NOTIFY
15.244agent → callerSIP/2.0 200 OK3 NOTIFY
15.244agent → callerBYE sip:rtpbench@172.16.2.3:33153 SIP/2.02 BYE
52.316caller → agentBYE sip:agent@172.16.1.3:5060 SIP/2.04 BYE
52.316agent → callerSIP/2.0 200 OK4 BYE