UC LabFree University
Offline

Progress

SIP ยท RFC 3261

Basic call

The call is not up until ACK completes the 200 OK. Media often skips the proxy.

Alice, proxy, BobAliceProxyBobINVITEINVITE100100180180200200ACKACKRTPBYE200

  1. INVITE โ€” Early offer: SDP in the INVITE.
  2. INVITE โ€” The proxy forwards toward Bob. Record-Route keeps it on the path.
  3. 100 โ€” 100 Trying is hop-by-hop. Alice's 100 comes from the proxy, not from Bob.
  4. 100 โ€” The proxy generates its own Trying.
  5. 180 โ€” 180 Ringing. A To tag starts an early dialog.
  6. 180 โ€” Relayed toward Alice.
  7. 200 โ€” SDP answer. The dialog is confirmed only after ACK.
  8. 200 โ€” Follows the Via path back.
  9. ACK โ€” ACK for a 2xx is end-to-end, its own transaction.
  10. ACK โ€” Stays on the path when Record-Route is set.
  11. RTP โ€” Media can go direct. The proxy may never see it.
  12. BYE โ€” Either side ends the dialog.
  13. 200 โ€” The BYE transaction completes.

Separate signaling from media. A perfect ladder with a private address in SDP c= is still one-way audio. 100 is not ringing. 180 is not answer.

Sources

Study card carried forward

SIP ยท RFC 3261

Basic call

Alice calls Bob through a proxy. Signaling may hairpin at the proxy. Media often goes direct. The call is not up until ACK completes the 200 OK.

Ladder with Alice, a proxy, and Bob: INVITE, 100 Trying, 180 Ringing, 200 OK, ACK, RTP, BYE, 200 OK.
Three columns: Alice, the proxy, and Bob. RTP is drawn from Alice to Bob because media can skip the proxy.

On a phone, swipe a wide ladder sideways. The steps below repeat the same sequence.

Sequence

  1. INVITE โ€” Alice to Proxy. Early offer: SDP in INVITE
  2. INVITE โ€” Proxy to Bob. Proxied toward Bob
  3. 100 Trying โ€” Bob to Proxy. Hop-by-hop, not end-to-end
  4. 100 Trying โ€” Proxy to Alice. The proxy generates its own
  5. 180 Ringing โ€” Bob to Proxy. Early dialog if a To tag is set
  6. 180 Ringing โ€” Proxy to Alice. Relayed toward Alice
  7. 200 OK โ€” Bob to Proxy. SDP answer; dialog confirmed
  8. 200 OK โ€” Proxy to Alice. Follows the Via path back
  9. ACK โ€” Alice to Proxy. Separate transaction for a 2xx
  10. ACK โ€” Proxy to Bob. Stays on path if Record-Routed
  11. RTP โ€” Alice to Bob. Media may bypass the proxy
  12. BYE โ€” Alice to Proxy. Alice hangs up
  13. BYE โ€” Proxy to Bob. Same Call-ID and tags
  14. 200 OK โ€” Bob to Proxy. BYE accepted
  15. 200 OK โ€” Proxy to Alice. Dialog is gone

Dialogs

A dialog is identified by the Call-ID, the local tag, and the remote tag. The UAC puts a tag on From. The UAS puts a tag on To in a response. A provisional response with a To tag creates an early dialog. The dialog is confirmed when the UAC receives a 2xx to the INVITE.

This ladder is an early offer: Alice puts the SDP offer in the INVITE, and Bob puts the answer in the 200 OK. A delayed offer is the other shape: the INVITE has no SDP, the offer arrives in the 200 OK, and the answer comes back in the ACK.

What is hop-by-hop

  • 100 Trying is hop-by-hop. The proxy answers Alice so she stops retransmitting. Bob's 100, if he sends one, is for the proxy.
  • ACK for a 2xx is a new transaction and travels the dialog route set. If the proxy sent Record-Route, it stays on the ACK and the later BYE. If it did not, those requests go straight to the remote target in Contact.
  • ACK for a non-2xx final response, such as 486 Busy Here, belongs to the INVITE transaction. It is hop-by-hop and is not a separate end-to-end transaction.
  • BYE ends a confirmed dialog. The other side answers 200 OK. The Call-ID does not change.

Sources

  • RFC 3261, sections 12 (dialogs), 13 (INVITE), 15 (BYE), and 17 (transactions)
  • Example: sip:alice at example.com at 192.0.2.10 calls sip:bob at example.com at 192.0.2.20

Download exports