{
  "checked": "2026-10",
  "cards": [
    {
      "front": "SIP",
      "back": "Application signaling for sessions. The base specification is RFC 3261.",
      "href": "rooms/T01-what-sip-is.html",
      "room": "What SIP is for"
    },
    {
      "front": "SDP",
      "back": "Describes media. Offer/answer is RFC 3264.",
      "href": "rooms/T01-what-sip-is.html",
      "room": "What SIP is for"
    },
    {
      "front": "RTP",
      "back": "Carries the media packets after the answer names the port.",
      "href": "rooms/T01-what-sip-is.html",
      "room": "What SIP is for"
    },
    {
      "front": "100 Trying",
      "back": "Hop-by-hop provisional. A stateful proxy generates it and does not relay one.",
      "href": "rooms/T01-what-sip-is.html",
      "room": "What SIP is for"
    },
    {
      "front": "5060",
      "back": "Default port for SIP over UDP and SIP over TCP.",
      "href": "rooms/T01-prereq-network.html",
      "room": "Ports, transports, and where a request can go"
    },
    {
      "front": "5061",
      "back": "Default port for SIP over TLS.",
      "href": "rooms/T01-prereq-network.html",
      "room": "Ports, transports, and where a request can go"
    },
    {
      "front": "Content-Length",
      "back": "On a stream transport, this is how the parser finds the end of the message.",
      "href": "rooms/T01-prereq-network.html",
      "room": "Ports, transports, and where a request can go"
    },
    {
      "front": "WS / WSS",
      "back": "WebSocket transport tokens from RFC 7118. The SIP methods do not change.",
      "href": "rooms/T01-prereq-network.html",
      "room": "Ports, transports, and where a request can go"
    },
    {
      "front": "tel:+15551212",
      "back": "A global telephone URI. The scheme is RFC 3966.",
      "href": "rooms/T01-e164-and-uris.html",
      "room": "E.164, sip URIs, and tel URIs"
    },
    {
      "front": "user=phone",
      "back": "The sip user part should be read as a phone number.",
      "href": "rooms/T01-e164-and-uris.html",
      "room": "E.164, sip URIs, and tel URIs"
    },
    {
      "front": "E.164",
      "back": "The ITU-T numbering plan. The URI citation in this course is RFC 3966.",
      "href": "rooms/T01-e164-and-uris.html",
      "room": "E.164, sip URIs, and tel URIs"
    },
    {
      "front": "Request-URI",
      "back": "Where this hop sends the request. Retargeting changes it and leaves To in place.",
      "href": "rooms/T01-e164-and-uris.html",
      "room": "E.164, sip URIs, and tel URIs"
    },
    {
      "front": "Standards Track",
      "back": "The status of RFC 3261. It is the base specification.",
      "href": "rooms/T01-reading-an-rfc.html",
      "room": "How to read an RFC"
    },
    {
      "front": "Section 20",
      "back": "Header field catalog, including the compact names defined there.",
      "href": "rooms/T01-reading-an-rfc.html",
      "room": "How to read an RFC"
    },
    {
      "front": "Section 21",
      "back": "Response code catalog.",
      "href": "rooms/T01-reading-an-rfc.html",
      "room": "How to read an RFC"
    },
    {
      "front": "Section 25",
      "back": "ABNF. Use it when a message looks almost right.",
      "href": "rooms/T01-reading-an-rfc.html",
      "room": "How to read an RFC"
    },
    {
      "front": "RFC 5411",
      "back": "Informational hitchhiker's guide. A map, not the base spec.",
      "href": "rooms/T01-hitchhiker.html",
      "room": "The hitchhiker guide is a map"
    },
    {
      "front": "RFC 3262",
      "back": "PRACK and reliable provisional responses.",
      "href": "rooms/T01-hitchhiker.html",
      "room": "The hitchhiker guide is a map"
    },
    {
      "front": "RFC 4028",
      "back": "Session timers. Not a substitute chapter inside 5411.",
      "href": "rooms/T01-hitchhiker.html",
      "room": "The hitchhiker guide is a map"
    },
    {
      "front": "RFC 6026",
      "back": "Corrects INVITE 2xx transaction handling after 3261.",
      "href": "rooms/T01-hitchhiker.html",
      "room": "The hitchhiker guide is a map"
    },
    {
      "front": "IETF Trust",
      "back": "Legal provisions for IETF documents. Read them before copying protocol text.",
      "href": "rooms/T01-licensing.html",
      "room": "Licenses, codecs, and what you may copy"
    },
    {
      "front": "Opus",
      "back": "RFC 6716, plus the Opus license page and the IETF IPR disclosures.",
      "href": "rooms/T01-licensing.html",
      "room": "Licenses, codecs, and what you may copy"
    },
    {
      "front": "G.711",
      "back": "ITU-T recommendation for PCMU and PCMA. Not an IETF RFC.",
      "href": "rooms/T01-licensing.html",
      "room": "Licenses, codecs, and what you may copy"
    },
    {
      "front": "G.729",
      "back": "ITU-T recommendation. Verify patent status. Do not state an expiry date.",
      "href": "rooms/T01-licensing.html",
      "room": "Licenses, codecs, and what you may copy"
    },
    {
      "front": "z9hG4bK",
      "back": "Magic cookie at the start of a branch parameter.",
      "href": "rooms/T01-first-message.html",
      "room": "Reading the first INVITE"
    },
    {
      "front": "Max-Forwards: 70",
      "back": "The value a UAC SHOULD put on a request it originates.",
      "href": "rooms/T01-first-message.html",
      "room": "Reading the first INVITE"
    },
    {
      "front": "No To tag",
      "back": "An initial request is outside a dialog, so To has no tag.",
      "href": "rooms/T01-first-message.html",
      "room": "Reading the first INVITE"
    },
    {
      "front": "RFC 5737",
      "back": "Documentation IPv4 ranges used for the examples in this course.",
      "href": "rooms/T01-first-message.html",
      "room": "Reading the first INVITE"
    },
    {
      "front": "UAC",
      "back": "Creates a request. Defined with the rest of the user-agent rules.",
      "href": "rooms/T02-roles.html",
      "room": "Roles a trace is actually showing"
    },
    {
      "front": "Stateful proxy",
      "back": "Transaction state, own Via branch, own 100 Trying.",
      "href": "rooms/T02-roles.html",
      "room": "Roles a trace is actually showing"
    },
    {
      "front": "Redirect",
      "back": "3xx and a Contact, then it is out of the call.",
      "href": "rooms/T02-roles.html",
      "room": "Roles a trace is actually showing"
    },
    {
      "front": "B2BUA",
      "back": "UAS plus UAC. Expect a second dialog. See RFC 7092.",
      "href": "rooms/T02-roles.html",
      "room": "Roles a trace is actually showing"
    },
    {
      "front": "INVITE / ACK / BYE",
      "back": "Set up, complete the handshake, and end a confirmed dialog.",
      "href": "rooms/T02-methods-and-codes.html",
      "room": "Methods and status codes"
    },
    {
      "front": "CANCEL",
      "back": "Abandon an unanswered INVITE. It is not BYE.",
      "href": "rooms/T02-methods-and-codes.html",
      "room": "Methods and status codes"
    },
    {
      "front": "401 vs 407",
      "back": "UAS or registrar challenge versus proxy challenge.",
      "href": "rooms/T02-methods-and-codes.html",
      "room": "Methods and status codes"
    },
    {
      "front": "1xx",
      "back": "Provisional. The transaction is still waiting for a final response.",
      "href": "rooms/T02-methods-and-codes.html",
      "room": "Methods and status codes"
    },
    {
      "front": "v / f / t / i",
      "back": "Via, From, To, Call-ID.",
      "href": "rooms/T02-headers-and-compact.html",
      "room": "Headers and compact forms"
    },
    {
      "front": "m / l / c / k",
      "back": "Contact, Content-Length, Content-Type, Supported.",
      "href": "rooms/T02-headers-and-compact.html",
      "room": "Headers and compact forms"
    },
    {
      "front": "o and u",
      "back": "Event and Allow-Events. RFC 6665.",
      "href": "rooms/T02-headers-and-compact.html",
      "room": "Headers and compact forms"
    },
    {
      "front": "r and b",
      "back": "Refer-To and Referred-By. RFC 3515.",
      "href": "rooms/T02-headers-and-compact.html",
      "room": "Headers and compact forms"
    },
    {
      "front": "Branch",
      "back": "Transaction identifier. Cookie z9hG4bK plus a unique token.",
      "href": "rooms/T02-transactions.html",
      "room": "Transactions and the branch cookie"
    },
    {
      "front": "Retransmission",
      "back": "Same message, same branch, sent again by the transaction timer.",
      "href": "rooms/T02-transactions.html",
      "room": "Transactions and the branch cookie"
    },
    {
      "front": "2xx ACK",
      "back": "New transaction, new branch, end to end. CSeq number matches the INVITE.",
      "href": "rooms/T02-transactions.html",
      "room": "Transactions and the branch cookie"
    },
    {
      "front": "Timer B",
      "back": "INVITE transaction timeout, 64 times T1. No ACK is generated.",
      "href": "rooms/T02-transactions.html",
      "room": "Transactions and the branch cookie"
    },
    {
      "front": "Call-ID + tags",
      "back": "The dialog id. Both tags are required once the dialog exists.",
      "href": "rooms/T02-dialogs.html",
      "room": "Dialog identity"
    },
    {
      "front": "Early",
      "back": "Provisional response with a To tag. Not confirmed yet.",
      "href": "rooms/T02-dialogs.html",
      "room": "Dialog identity"
    },
    {
      "front": "Confirmed",
      "back": "A 2xx to INVITE. BYE is now the teardown.",
      "href": "rooms/T02-dialogs.html",
      "room": "Dialog identity"
    },
    {
      "front": "CSeq",
      "back": "Increments for new in-dialog requests. ACK and CANCEL keep the INVITE number.",
      "href": "rooms/T02-dialogs.html",
      "room": "Dialog identity"
    },
    {
      "front": "T1 = 500 ms",
      "back": "Default RTT estimate. Timer A starts here on UDP.",
      "href": "rooms/T02-three-clocks.html",
      "room": "T1, the transaction timeout, and Timer C"
    },
    {
      "front": "64*T1",
      "back": "Timer B for INVITE and Timer F for non-INVITE.",
      "href": "rooms/T02-three-clocks.html",
      "room": "T1, the transaction timeout, and Timer C"
    },
    {
      "front": "T2 = 4 s, T4 = 5 s",
      "back": "Retransmit cap, and how long a message may remain in the network.",
      "href": "rooms/T02-three-clocks.html",
      "room": "T1, the transaction timeout, and Timer C"
    },
    {
      "front": "Timer C",
      "back": "Proxy timer for an unanswered INVITE. More than 3 minutes.",
      "href": "rooms/T02-three-clocks.html",
      "room": "T1, the transaction timeout, and Timer C"
    },
    {
      "front": "Via transport",
      "back": "UDP, TCP, TLS, WS, or WSS for this hop.",
      "href": "rooms/T02-transports.html",
      "room": "UDP, TCP, TLS, and WebSocket"
    },
    {
      "front": "received / rport",
      "back": "Response address and, with RFC 3581, the source port.",
      "href": "rooms/T02-transports.html",
      "room": "UDP, TCP, TLS, and WebSocket"
    },
    {
      "front": "session protocol sipv2",
      "back": "Dial-peer command that selects SIP for that peer.",
      "href": "rooms/T02-transports.html",
      "room": "UDP, TCP, TLS, and WebSocket"
    },
    {
      "front": "ip address trusted list",
      "back": "Sources allowed to present SIP. See the toll-fraud guidance.",
      "href": "rooms/T02-transports.html",
      "room": "UDP, TCP, TLS, and WebSocket"
    },
    {
      "front": "Non-2xx ACK",
      "back": "Same branch as that hop's INVITE. Generated by the client transaction.",
      "href": "rooms/T03-two-acks.html",
      "room": "Two different ACK rules"
    },
    {
      "front": "2xx ACK",
      "back": "New branch, dialog route set, end to end.",
      "href": "rooms/T03-two-acks.html",
      "room": "Two different ACK rules"
    },
    {
      "front": "CSeq: 1 ACK",
      "back": "Same number as the INVITE. The method token changes to ACK.",
      "href": "rooms/T03-two-acks.html",
      "room": "Two different ACK rules"
    },
    {
      "front": "603 then ACK",
      "back": "Forward the 603. ACK it on this hop. Do not relay the ACK.",
      "href": "rooms/T03-two-acks.html",
      "room": "Two different ACK rules"
    },
    {
      "front": "Record-Route",
      "back": "Inserted by a proxy that must see later requests in the dialog.",
      "href": "rooms/T03-record-route.html",
      "room": "Record-Route and the route set"
    },
    {
      "front": "lr",
      "back": "Required on that URI. It selects loose routing.",
      "href": "rooms/T03-record-route.html",
      "room": "Record-Route and the route set"
    },
    {
      "front": "UAC reverses",
      "back": "Response Record-Route, reversed, becomes the caller's route set.",
      "href": "rooms/T03-record-route.html",
      "room": "Record-Route and the route set"
    },
    {
      "front": "Contact",
      "back": "The remote target. It becomes the mid-dialog Request-URI.",
      "href": "rooms/T03-record-route.html",
      "room": "Record-Route and the route set"
    },
    {
      "front": "Supported: 100rel",
      "back": "The UAC can do reliable provisionals.",
      "href": "rooms/T03-prack.html",
      "room": "PRACK and reliable provisionals"
    },
    {
      "front": "RSeq",
      "back": "Identifies the reliable provisional.",
      "href": "rooms/T03-prack.html",
      "room": "PRACK and reliable provisionals"
    },
    {
      "front": "RAck",
      "back": "RSeq, then the CSeq number and method being acknowledged.",
      "href": "rooms/T03-prack.html",
      "room": "PRACK and reliable provisionals"
    },
    {
      "front": "PRACK",
      "back": "A new transaction. Its success response is 200 OK, not ACK.",
      "href": "rooms/T03-prack.html",
      "room": "PRACK and reliable provisionals"
    },
    {
      "front": "UPDATE",
      "back": "Session refresh or change. Own transaction. RFC 3311.",
      "href": "rooms/T03-update.html",
      "room": "UPDATE before the INVITE completes"
    },
    {
      "front": "No ACK",
      "back": "200 OK finishes UPDATE. ACK is reserved for INVITE.",
      "href": "rooms/T03-update.html",
      "room": "UPDATE before the INVITE completes"
    },
    {
      "front": "Early dialog",
      "back": "UPDATE can run before the first INVITE completes.",
      "href": "rooms/T03-update.html",
      "room": "UPDATE before the INVITE completes"
    },
    {
      "front": "RFC 6141",
      "back": "Read this before changing the remote target.",
      "href": "rooms/T03-update.html",
      "room": "UPDATE before the INVITE completes"
    },
    {
      "front": "Session-Expires",
      "back": "Seconds until the session must be refreshed, plus an optional refresher.",
      "href": "rooms/T03-session-timers.html",
      "room": "Session-Expires and 422"
    },
    {
      "front": "Min-SE",
      "back": "Minimum interval. Never below 90 seconds.",
      "href": "rooms/T03-session-timers.html",
      "room": "Session-Expires and 422"
    },
    {
      "front": "422",
      "back": "Session Interval Too Small. Retry with the Min-SE from the response.",
      "href": "rooms/T03-session-timers.html",
      "room": "Session-Expires and 422"
    },
    {
      "front": "refresher",
      "back": "uac or uas. That side sends re-INVITE or UPDATE.",
      "href": "rooms/T03-session-timers.html",
      "room": "Session-Expires and 422"
    },
    {
      "front": "CANCEL",
      "back": "Same branch as the unanswered INVITE. CSeq number unchanged.",
      "href": "rooms/T03-cancel-bye-reinvite.html",
      "room": "CANCEL, BYE, and re-INVITE"
    },
    {
      "front": "487",
      "back": "Final response to the INVITE that was cancelled. Then ACK.",
      "href": "rooms/T03-cancel-bye-reinvite.html",
      "room": "CANCEL, BYE, and re-INVITE"
    },
    {
      "front": "BYE",
      "back": "Ends a confirmed dialog. Higher CSeq. Both tags.",
      "href": "rooms/T03-cancel-bye-reinvite.html",
      "room": "CANCEL, BYE, and re-INVITE"
    },
    {
      "front": "re-INVITE",
      "back": "Mid-dialog INVITE. See RFC 6141 if Contact changes the target.",
      "href": "rooms/T03-cancel-bye-reinvite.html",
      "room": "CANCEL, BYE, and re-INVITE"
    },
    {
      "front": "Refer-To",
      "back": "The request the recipient should send. Compact form r.",
      "href": "rooms/T03-refer-replaces.html",
      "room": "REFER and Replaces"
    },
    {
      "front": "202 Accepted",
      "back": "REFER was accepted. Watch NOTIFY for the real result.",
      "href": "rooms/T03-refer-replaces.html",
      "room": "REFER and Replaces"
    },
    {
      "front": "Replaces",
      "back": "call-id, to-tag, from-tag of the dialog to take over.",
      "href": "rooms/T03-refer-replaces.html",
      "room": "REFER and Replaces"
    },
    {
      "front": "sipfrag",
      "back": "A status line in the NOTIFY body, such as SIP/2.0 200 OK.",
      "href": "rooms/T03-refer-replaces.html",
      "room": "REFER and Replaces"
    },
    {
      "front": "To on REGISTER",
      "back": "The address-of-record being bound.",
      "href": "rooms/T04-register.html",
      "room": "REGISTER and bindings"
    },
    {
      "front": "Contact",
      "back": "The binding: where requests for that address-of-record can go.",
      "href": "rooms/T04-register.html",
      "room": "REGISTER and bindings"
    },
    {
      "front": "423",
      "back": "Interval Too Brief. Read Min-Expires and retry.",
      "href": "rooms/T04-register.html",
      "room": "REGISTER and bindings"
    },
    {
      "front": "Contact: *",
      "back": "With Expires: 0, removes all bindings for the address-of-record.",
      "href": "rooms/T04-register.html",
      "room": "REGISTER and bindings"
    },
    {
      "front": "NAPTR",
      "back": "Selects the SIP service, such as SIP+D2U or SIP+D2T.",
      "href": "rooms/T04-dns-3263.html",
      "room": "Locating a server with RFC 3263"
    },
    {
      "front": "SRV",
      "back": "Host and port for the selected service.",
      "href": "rooms/T04-dns-3263.html",
      "room": "Locating a server with RFC 3263"
    },
    {
      "front": "A / AAAA",
      "back": "Addresses for the SRV target.",
      "href": "rooms/T04-dns-3263.html",
      "room": "Locating a server with RFC 3263"
    },
    {
      "front": "Numeric IP",
      "back": "No domain lookup. Send to that address.",
      "href": "rooms/T04-dns-3263.html",
      "room": "Locating a server with RFC 3263"
    },
    {
      "front": "lr",
      "back": "Loose routing. Pop Route, keep the Request-URI.",
      "href": "rooms/T04-loose-routing.html",
      "room": "Loose routing and Max-Forwards"
    },
    {
      "front": "Max-Forwards",
      "back": "Starts at 70. Decremented by each proxy.",
      "href": "rooms/T04-loose-routing.html",
      "room": "Loose routing and Max-Forwards"
    },
    {
      "front": "483",
      "back": "Too Many Hops. The request arrived with Max-Forwards 0.",
      "href": "rooms/T04-loose-routing.html",
      "room": "Loose routing and Max-Forwards"
    },
    {
      "front": "482",
      "back": "Loop Detected from a Via loop, not from the hop budget.",
      "href": "rooms/T04-loose-routing.html",
      "room": "Loose routing and Max-Forwards"
    },
    {
      "front": "reg-id",
      "back": "Identifies one flow. A new value is a new flow.",
      "href": "rooms/T04-outbound.html",
      "room": "Outbound, reg-id, and keepalives"
    },
    {
      "front": "+sip.instance",
      "back": "URN for the UA instance, stable across flows.",
      "href": "rooms/T04-outbound.html",
      "room": "Outbound, reg-id, and keepalives"
    },
    {
      "front": "CRLF keepalive",
      "back": "Double CRLF on connection-oriented transports. Single CRLF answers.",
      "href": "rooms/T04-outbound.html",
      "room": "Outbound, reg-id, and keepalives"
    },
    {
      "front": "STUN keepalive",
      "back": "The UDP keepalive in the outbound specification.",
      "href": "rooms/T04-outbound.html",
      "room": "Outbound, reg-id, and keepalives"
    },
    {
      "front": "Path",
      "back": "Inbound vector stored with the binding. RFC 3327.",
      "href": "rooms/T04-path-service-route.html",
      "room": "Path and Service-Route"
    },
    {
      "front": "Service-Route",
      "back": "Outbound preloaded route from the registrar. RFC 3608.",
      "href": "rooms/T04-path-service-route.html",
      "room": "Path and Service-Route"
    },
    {
      "front": "lr on Path",
      "back": "The edge URI is loose-routed, same as Record-Route.",
      "href": "rooms/T04-path-service-route.html",
      "room": "Path and Service-Route"
    },
    {
      "front": "Preloaded Route",
      "back": "The UA puts Service-Route into Route on a new INVITE.",
      "href": "rooms/T04-path-service-route.html",
      "room": "Path and Service-Route"
    },
    {
      "front": "pub-gruu",
      "back": "Stable URI for one UA instance.",
      "href": "rooms/T04-gruu.html",
      "room": "GRUU and a single instance"
    },
    {
      "front": "temp-gruu",
      "back": "Instance URI that hides the address-of-record.",
      "href": "rooms/T04-gruu.html",
      "room": "GRUU and a single instance"
    },
    {
      "front": "+sip.instance",
      "back": "The URN the registrar binds to those GRUUs.",
      "href": "rooms/T04-gruu.html",
      "room": "GRUU and a single instance"
    },
    {
      "front": "gr",
      "back": "URI parameter that marks a GRUU.",
      "href": "rooms/T04-gruu.html",
      "room": "GRUU and a single instance"
    },
    {
      "front": "Fork",
      "back": "One incoming INVITE, one client transaction per target.",
      "href": "rooms/T04-forking.html",
      "room": "Forking and early dialogs"
    },
    {
      "front": "Early dialog",
      "back": "A To tag on a provisional response. One per branch.",
      "href": "rooms/T04-forking.html",
      "room": "Forking and early dialogs"
    },
    {
      "front": "Multiple 200 OK",
      "back": "Forward each. The UAC ACKs each and may BYE the extras.",
      "href": "rooms/T04-forking.html",
      "room": "Forking and early dialogs"
    },
    {
      "front": "6xx",
      "back": "Cancel the other pending branches. Do not start new ones.",
      "href": "rooms/T04-forking.html",
      "room": "Forking and early dialogs"
    },
    {
      "front": "RFC 8866",
      "back": "Current SDP. It obsoletes RFC 4566. Trust the RFC Editor status banner.",
      "href": "rooms/T05-sdp-anatomy.html",
      "room": "The lines in an SDP body"
    },
    {
      "front": "c=",
      "back": "Connection address where media should be sent.",
      "href": "rooms/T05-sdp-anatomy.html",
      "room": "The lines in an SDP body"
    },
    {
      "front": "m=",
      "back": "One media stream: type, port, protocol, and payload types.",
      "href": "rooms/T05-sdp-anatomy.html",
      "room": "The lines in an SDP body"
    },
    {
      "front": "a=",
      "back": "An attribute. After m=, it belongs to that stream.",
      "href": "rooms/T05-sdp-anatomy.html",
      "room": "The lines in an SDP body"
    },
    {
      "front": "Same count",
      "back": "The answer has exactly as many m-lines as the offer.",
      "href": "rooms/T05-offer-answer-order.html",
      "room": "Same m-lines, same order"
    },
    {
      "front": "Same order",
      "back": "Line n in the answer answers line n in the offer.",
      "href": "rooms/T05-offer-answer-order.html",
      "room": "Same m-lines, same order"
    },
    {
      "front": "Port 0",
      "back": "Rejects that stream and keeps its position.",
      "href": "rooms/T05-offer-answer-order.html",
      "room": "Same m-lines, same order"
    },
    {
      "front": "RFC 6337",
      "back": "Usage examples and the pitfalls of rebuilding SDP.",
      "href": "rooms/T05-offer-answer-order.html",
      "room": "Same m-lines, same order"
    },
    {
      "front": "Encoding name",
      "back": "Match opus to opus even when the payload type numbers differ.",
      "href": "rooms/T05-rtpmap-fmtp.html",
      "room": "rtpmap names and fmtp parameters"
    },
    {
      "front": "0 / 8 / 9 / 18",
      "back": "PCMU/8000, PCMA/8000, G722/8000, G729/8000.",
      "href": "rooms/T05-rtpmap-fmtp.html",
      "room": "rtpmap names and fmtp parameters"
    },
    {
      "front": "G722/8000",
      "back": "RTP clock is 8000. Audio sample rate is 16 kHz.",
      "href": "rooms/T05-rtpmap-fmtp.html",
      "room": "rtpmap names and fmtp parameters"
    },
    {
      "front": "fmtp",
      "back": "Parameters for one payload type. Do not guess unknown ones.",
      "href": "rooms/T05-rtpmap-fmtp.html",
      "room": "rtpmap names and fmtp parameters"
    },
    {
      "front": "sendrecv",
      "back": "Send and receive. The usual active call.",
      "href": "rooms/T05-direction-hold.html",
      "room": "Direction attributes and hold"
    },
    {
      "front": "sendonly",
      "back": "Send, and do not receive. A common hold.",
      "href": "rooms/T05-direction-hold.html",
      "room": "Direction attributes and hold"
    },
    {
      "front": "recvonly",
      "back": "Receive only. The usual answer to sendonly.",
      "href": "rooms/T05-direction-hold.html",
      "room": "Direction attributes and hold"
    },
    {
      "front": "inactive",
      "back": "Neither direction. Also a common hold.",
      "href": "rooms/T05-direction-hold.html",
      "room": "Direction attributes and hold"
    },
    {
      "front": "m=audio 0",
      "back": "Rejects that audio stream. Keep proto and a format.",
      "href": "rooms/T05-port-zero.html",
      "room": "Port 0 rejects a stream"
    },
    {
      "front": "Same index",
      "back": "A rejected line is still answered in its original position.",
      "href": "rooms/T05-port-zero.html",
      "room": "Port 0 rejects a stream"
    },
    {
      "front": "No common codec",
      "back": "Port 0 on that m-line, not a deleted body.",
      "href": "rooms/T05-port-zero.html",
      "room": "Port 0 rejects a stream"
    },
    {
      "front": "Offer port 0",
      "back": "The answer port is also 0.",
      "href": "rooms/T05-port-zero.html",
      "room": "Port 0 rejects a stream"
    },
    {
      "front": "183 + SDP",
      "back": "Usual early-media pattern. Not true of every 183.",
      "href": "rooms/T05-early-media.html",
      "room": "Early media and 183"
    },
    {
      "front": "180",
      "back": "Ringing. Local ringback when this message has no SDP.",
      "href": "rooms/T05-early-media.html",
      "room": "Early media and 183"
    },
    {
      "front": "100rel",
      "back": "Makes a provisional response reliable. PRACK it.",
      "href": "rooms/T05-early-media.html",
      "room": "Early media and 183"
    },
    {
      "front": "Two bodies",
      "back": "Compare 183 SDP with the 200 OK SDP before you lock the port.",
      "href": "rooms/T05-early-media.html",
      "room": "Early media and 183"
    },
    {
      "front": "RFC 6337",
      "back": "Offer/answer usage and the mistakes to stop repeating.",
      "href": "rooms/T05-pitfalls-6337.html",
      "room": "Offer/answer pitfalls in RFC 6337"
    },
    {
      "front": "sess-version",
      "back": "Increase it when the SDP changes.",
      "href": "rooms/T05-pitfalls-6337.html",
      "room": "Offer/answer pitfalls in RFC 6337"
    },
    {
      "front": "Delayed offer",
      "back": "No SDP in the INVITE. Offer in the reliable response. Answer in the ACK.",
      "href": "rooms/T05-pitfalls-6337.html",
      "room": "Offer/answer pitfalls in RFC 6337"
    },
    {
      "front": "Do not rebuild",
      "back": "Edit m-lines in place. Do not drop, swap, or renumber them.",
      "href": "rooms/T05-pitfalls-6337.html",
      "room": "Offer/answer pitfalls in RFC 6337"
    },
    {
      "front": "V=2",
      "back": "RTP version is 2.",
      "href": "rooms/T06-rtp-header.html",
      "room": "The RTP header"
    },
    {
      "front": "Sequence",
      "back": "Plus one for every packet from that source.",
      "href": "rooms/T06-rtp-header.html",
      "room": "The RTP header"
    },
    {
      "front": "Timestamp",
      "back": "Media clock. 20 ms of G.711 or G.722 steps by 160.",
      "href": "rooms/T06-rtp-header.html",
      "room": "The RTP header"
    },
    {
      "front": "SSRC",
      "back": "32-bit source id chosen by the sender.",
      "href": "rooms/T06-rtp-header.html",
      "room": "The RTP header"
    },
    {
      "front": "PT 0",
      "back": "PCMU/8000, static.",
      "href": "rooms/T06-payload-types.html",
      "room": "Static and dynamic payload types"
    },
    {
      "front": "PT 8",
      "back": "PCMA/8000, static. Not the same as PCMU.",
      "href": "rooms/T06-payload-types.html",
      "room": "Static and dynamic payload types"
    },
    {
      "front": "PT 9",
      "back": "G722/8000. Sample rate is still 16 kHz.",
      "href": "rooms/T06-payload-types.html",
      "room": "Static and dynamic payload types"
    },
    {
      "front": "PT 18",
      "back": "G729/8000, static.",
      "href": "rooms/T06-payload-types.html",
      "room": "Static and dynamic payload types"
    },
    {
      "front": "G.711",
      "back": "PCMU/8000 and PCMA/8000. Read ITU-T G.711. They are not interchangeable.",
      "href": "rooms/T06-codec-choices.html",
      "room": "G.711, G.729, and Opus"
    },
    {
      "front": "G.729",
      "back": "rtpmap G729/8000, static PT 18. Read ITU-T G.729. This course states no licensing result.",
      "href": "rooms/T06-codec-choices.html",
      "room": "G.711, G.729, and Opus"
    },
    {
      "front": "Opus",
      "back": "RFC 6716. Read the RFC and the license.",
      "href": "rooms/T06-codec-choices.html",
      "room": "G.711, G.729, and Opus"
    },
    {
      "front": "IPR",
      "back": "Check IETF IPR disclosures. This course states no legal result.",
      "href": "rooms/T06-codec-choices.html",
      "room": "G.711, G.729, and Opus"
    },
    {
      "front": "SR",
      "back": "Sender report. Used when this participant has sent RTP.",
      "href": "rooms/T06-rtcp.html",
      "room": "RTCP sender and receiver reports"
    },
    {
      "front": "RR",
      "back": "Receiver report. Fraction lost, cumulative loss, jitter.",
      "href": "rooms/T06-rtcp.html",
      "room": "RTCP sender and receiver reports"
    },
    {
      "front": "Port pair",
      "back": "RTP on an even port, RTCP on the next higher port, by default.",
      "href": "rooms/T06-rtcp.html",
      "room": "RTCP sender and receiver reports"
    },
    {
      "front": "Not SIP",
      "back": "200 OK does not carry fraction lost.",
      "href": "rooms/T06-rtcp.html",
      "room": "RTCP sender and receiver reports"
    },
    {
      "front": "RFC 4733",
      "back": "telephone-event. Obsoletes RFC 2833. Trust the status banner.",
      "href": "rooms/T06-telephone-event.html",
      "room": "telephone-event and other digit paths"
    },
    {
      "front": "Events 0-15",
      "back": "DTMF. Event 16 is flash.",
      "href": "rooms/T06-telephone-event.html",
      "room": "telephone-event and other digit paths"
    },
    {
      "front": "Dynamic PT",
      "back": "Match the name telephone-event in SDP.",
      "href": "rooms/T06-telephone-event.html",
      "room": "telephone-event and other digit paths"
    },
    {
      "front": "Not INFO",
      "back": "RFC 6086 is a method. application/dtmf-relay is a vendor body.",
      "href": "rooms/T06-telephone-event.html",
      "room": "telephone-event and other digit paths"
    },
    {
      "front": "a=ptime:20",
      "back": "20 ms of media per packet. SDP, not RTP.",
      "href": "rooms/T06-ptime.html",
      "room": "ptime, packet rate, and EF"
    },
    {
      "front": "50 and 160",
      "back": "G.711 at 20 ms: 50 packets/s, 160 payload bytes, plus headers.",
      "href": "rooms/T06-ptime.html",
      "room": "ptime, packet rate, and EF"
    },
    {
      "front": "EF",
      "back": "Voice service class in RFC 4594.",
      "href": "rooms/T06-ptime.html",
      "room": "ptime, packet rate, and EF"
    },
    {
      "front": "RFC 3246",
      "back": "Defines the EF per-hop behavior. No router config in this lesson.",
      "href": "rooms/T06-ptime.html",
      "room": "ptime, packet rate, and EF"
    },
    {
      "front": "200 OK",
      "back": "Offer/answer finished. It does not prove both RTP directions.",
      "href": "rooms/T06-one-way-audio.html",
      "room": "One-way audio"
    },
    {
      "front": "sendonly answer",
      "back": "Answerer sends, does not receive. One-way by negotiation.",
      "href": "rooms/T06-one-way-audio.html",
      "room": "One-way audio"
    },
    {
      "front": "c= and port",
      "back": "The destination you must capture.",
      "href": "rooms/T06-one-way-audio.html",
      "room": "One-way audio"
    },
    {
      "front": "SR from one side",
      "back": "The other side is not sending, according to RTCP.",
      "href": "rooms/T06-one-way-audio.html",
      "room": "One-way audio"
    },
    {
      "front": "401",
      "back": "From the UAS. Challenge is WWW-Authenticate. Retry with Authorization.",
      "href": "rooms/T07-digest.html",
      "room": "401, 407, and digest"
    },
    {
      "front": "407",
      "back": "From the proxy. Challenge is Proxy-Authenticate. Retry with Proxy-Authorization.",
      "href": "rooms/T07-digest.html",
      "room": "401, 407, and digest"
    },
    {
      "front": "RFC 7616",
      "back": "HTTP digest algorithms. Read the algorithm parameter.",
      "href": "rooms/T07-digest.html",
      "room": "401, 407, and digest"
    },
    {
      "front": "Stop here",
      "back": "Identify the header. Do not compute a digest in this lesson.",
      "href": "rooms/T07-digest.html",
      "room": "401, 407, and digest"
    },
    {
      "front": "RFC 3261 §18",
      "back": "SIP over TLS. Same methods. Via transport TLS.",
      "href": "rooms/T07-tls-certs.html",
      "room": "TLS and domain certificates"
    },
    {
      "front": "5061",
      "back": "Usual TLS port in RFC 3261.",
      "href": "rooms/T07-tls-certs.html",
      "room": "TLS and domain certificates"
    },
    {
      "front": "RFC 5922",
      "back": "The certificate must identify the SIP domain.",
      "href": "rooms/T07-tls-certs.html",
      "room": "TLS and domain certificates"
    },
    {
      "front": "Not SRTP",
      "back": "TLS on SIP does not select the media keying method.",
      "href": "rooms/T07-tls-certs.html",
      "room": "TLS and domain certificates"
    },
    {
      "front": "RFC 3711",
      "back": "SRTP. Protects RTP. Profile RTP/SAVP.",
      "href": "rooms/T07-srtp-keying.html",
      "room": "SRTP and two keying methods"
    },
    {
      "front": "RFC 4568",
      "back": "SDES. a=crypto in SDP. Protect the signaling.",
      "href": "rooms/T07-srtp-keying.html",
      "room": "SRTP and two keying methods"
    },
    {
      "front": "RFC 5764",
      "back": "DTLS-SRTP. Keys from DTLS. Fingerprint in SDP.",
      "href": "rooms/T07-srtp-keying.html",
      "room": "SRTP and two keying methods"
    },
    {
      "front": "Per leg",
      "back": "Do not assume two peers share one keying method.",
      "href": "rooms/T07-srtp-keying.html",
      "room": "SRTP and two keying methods"
    },
    {
      "front": "RFC 3323",
      "back": "Privacy header. id withholds a network-asserted identity.",
      "href": "rooms/T07-privacy-pai.html",
      "room": "Privacy and asserted identity"
    },
    {
      "front": "PPI",
      "back": "P-Preferred-Identity. A hint from the UA inside the trust domain.",
      "href": "rooms/T07-privacy-pai.html",
      "room": "Privacy and asserted identity"
    },
    {
      "front": "PAI",
      "back": "P-Asserted-Identity. Trusted networks only. Not a signature.",
      "href": "rooms/T07-privacy-pai.html",
      "room": "Privacy and asserted identity"
    },
    {
      "front": "Strip",
      "back": "Remove PAI and PPI when the request leaves the trust domain.",
      "href": "rooms/T07-privacy-pai.html",
      "room": "Privacy and asserted identity"
    },
    {
      "front": "RFC 8224",
      "back": "STIR. Identity header in SIP.",
      "href": "rooms/T07-stir-shaken.html",
      "room": "STIR, PASSporT, and SHAKEN"
    },
    {
      "front": "RFC 8225",
      "back": "PASSporT.",
      "href": "rooms/T07-stir-shaken.html",
      "room": "STIR, PASSporT, and SHAKEN"
    },
    {
      "front": "RFC 8226",
      "back": "Certificates for STIR.",
      "href": "rooms/T07-stir-shaken.html",
      "room": "STIR, PASSporT, and SHAKEN"
    },
    {
      "front": "Levels A/B/C",
      "back": "ATIS SHAKEN. Confirm the current ATIS document. See also the FCC page.",
      "href": "rooms/T07-stir-shaken.html",
      "room": "STIR, PASSporT, and SHAKEN"
    },
    {
      "front": "Scanning",
      "back": "Unsolicited SIP from addresses you did not provision. Close the exposure.",
      "href": "rooms/T07-threats.html",
      "room": "Scanning, hijack, and toll fraud"
    },
    {
      "front": "Hijack",
      "back": "Unexpected Contact on an address-of-record. Authenticate REGISTER.",
      "href": "rooms/T07-threats.html",
      "room": "Scanning, hijack, and toll fraud"
    },
    {
      "front": "Toll fraud",
      "back": "Unauthorized calls that run up charges. Authorize the source.",
      "href": "rooms/T07-threats.html",
      "room": "Scanning, hijack, and toll fraud"
    },
    {
      "front": "FCC page",
      "back": "Call authentication is not a substitute for outbound authorization.",
      "href": "rooms/T07-threats.html",
      "room": "Scanning, hijack, and toll fraud"
    },
    {
      "front": "Allow list",
      "back": "Named peers only. See the CME toll-fraud guide for trusted sources.",
      "href": "rooms/T07-hardening.html",
      "room": "Hardening a SIP edge"
    },
    {
      "front": "Digest",
      "back": "401 uses Authorization. 407 uses Proxy-Authorization.",
      "href": "rooms/T07-hardening.html",
      "room": "Hardening a SIP edge"
    },
    {
      "front": "RFC 5922",
      "back": "Certificate name equals the SIP domain.",
      "href": "rooms/T07-hardening.html",
      "room": "Hardening a SIP edge"
    },
    {
      "front": "Per-leg SRTP",
      "back": "Do not copy keying from one peer to another.",
      "href": "rooms/T07-hardening.html",
      "room": "Hardening a SIP edge"
    },
    {
      "front": "Embedded",
      "back": "Via, Contact, and SDP c= carry addresses NAT does not rewrite.",
      "href": "rooms/T08-nat-breaks-sip.html",
      "room": "Embedded addresses and NAT"
    },
    {
      "front": "c=",
      "back": "Media destination. A private value is non-routable on the public Internet.",
      "href": "rooms/T08-nat-breaks-sip.html",
      "room": "Embedded addresses and NAT"
    },
    {
      "front": "200 OK",
      "back": "Signaling can succeed while RTP still cannot go where c= points.",
      "href": "rooms/T08-nat-breaks-sip.html",
      "room": "Embedded addresses and NAT"
    },
    {
      "front": "RFC 5737",
      "back": "203.0.113.10 and the other lab addresses are documentation ranges.",
      "href": "rooms/T08-nat-breaks-sip.html",
      "room": "Embedded addresses and NAT"
    },
    {
      "front": "RFC 3581",
      "back": "rport. Symmetric SIP response routing.",
      "href": "rooms/T08-rport.html",
      "room": "rport and symmetric responses"
    },
    {
      "front": "received",
      "back": "Source address the server saw.",
      "href": "rooms/T08-rport.html",
      "room": "rport and symmetric responses"
    },
    {
      "front": "rport value",
      "back": "Source port the server saw.",
      "href": "rooms/T08-rport.html",
      "room": "rport and symmetric responses"
    },
    {
      "front": "Not SDP",
      "back": "rport does not rewrite c=.",
      "href": "rooms/T08-rport.html",
      "room": "rport and symmetric responses"
    },
    {
      "front": "RFC 8489",
      "back": "Current STUN. Obsoletes RFC 5389. Trust the status banner.",
      "href": "rooms/T08-stun.html",
      "room": "STUN server-reflexive addresses"
    },
    {
      "front": "Binding",
      "back": "Request that asks what address the server sees.",
      "href": "rooms/T08-stun.html",
      "room": "STUN server-reflexive addresses"
    },
    {
      "front": "XOR-MAPPED-ADDRESS",
      "back": "The reflexive address in the success response.",
      "href": "rooms/T08-stun.html",
      "room": "STUN server-reflexive addresses"
    },
    {
      "front": "Not SIP",
      "back": "A STUN server does not store a SIP Contact.",
      "href": "rooms/T08-stun.html",
      "room": "STUN server-reflexive addresses"
    },
    {
      "front": "RFC 8656",
      "back": "Current TURN. Obsoletes RFC 5766. Trust the status banner.",
      "href": "rooms/T08-turn.html",
      "room": "TURN relays"
    },
    {
      "front": "Allocate",
      "back": "Reserves a relayed transport address.",
      "href": "rooms/T08-turn.html",
      "room": "TURN relays"
    },
    {
      "front": "Relay",
      "back": "Peers send media to the relay. TURN forwards it.",
      "href": "rooms/T08-turn.html",
      "room": "TURN relays"
    },
    {
      "front": "Not SIP",
      "back": "Allocate is not REGISTER and not an SDP rewrite.",
      "href": "rooms/T08-turn.html",
      "room": "TURN relays"
    },
    {
      "front": "RFC 8445",
      "back": "Current ICE. Obsoletes RFC 5245. Trust the status banner.",
      "href": "rooms/T08-ice.html",
      "room": "ICE candidate types"
    },
    {
      "front": "host",
      "back": "Local interface.",
      "href": "rooms/T08-ice.html",
      "room": "ICE candidate types"
    },
    {
      "front": "srflx / relay",
      "back": "STUN reflexive address, and TURN relay.",
      "href": "rooms/T08-ice.html",
      "room": "ICE candidate types"
    },
    {
      "front": "prflx",
      "back": "Discovered during a connectivity check.",
      "href": "rooms/T08-ice.html",
      "room": "ICE candidate types"
    },
    {
      "front": "ALG",
      "back": "In-path SIP and SDP rewrite. Often corrupts the call.",
      "href": "rooms/T08-sip-alg.html",
      "room": "The SIP ALG problem"
    },
    {
      "front": "Length",
      "back": "If Content-Length does not match the body, the edit is corrupt.",
      "href": "rooms/T08-sip-alg.html",
      "room": "The SIP ALG problem"
    },
    {
      "front": "TLS",
      "back": "The ALG cannot rewrite what it cannot see.",
      "href": "rooms/T08-sip-alg.html",
      "room": "The SIP ALG problem"
    },
    {
      "front": "Disable it",
      "back": "Turn the ALG off. Do not stack a second hidden editor.",
      "href": "rooms/T08-sip-alg.html",
      "room": "The SIP ALG problem"
    },
    {
      "front": "Latch",
      "back": "Learn the remote RTP address from the first packet instead of trusting c=.",
      "href": "rooms/T08-media-latching.html",
      "room": "Media latching on an SBC"
    },
    {
      "front": "RFC 5853",
      "back": "SBC requirements. Not an IETF algorithm for latching.",
      "href": "rooms/T08-media-latching.html",
      "room": "Media latching on an SBC"
    },
    {
      "front": "Authenticated",
      "back": "Latch only after signaling is accepted, and only toward the expected side.",
      "href": "rooms/T08-media-latching.html",
      "room": "Media latching on an SBC"
    },
    {
      "front": "ICE",
      "back": "RFC 8445 is the specified candidate check when both ends use it.",
      "href": "rooms/T08-media-latching.html",
      "room": "Media latching on an SBC"
    },
    {
      "front": "RFC 5853",
      "back": "Informational requirements from SBC deployments. Not an SBC protocol.",
      "href": "rooms/T09-requirements-5853.html",
      "room": "RFC 5853 is requirements, not a protocol"
    },
    {
      "front": "No SBC method",
      "back": "INVITE and OPTIONS stay as RFC 3261 defined them.",
      "href": "rooms/T09-requirements-5853.html",
      "room": "RFC 5853 is requirements, not a protocol"
    },
    {
      "front": "Datasheet",
      "back": "Session and transcode limits are platform-specific.",
      "href": "rooms/T09-requirements-5853.html",
      "room": "RFC 5853 is requirements, not a protocol"
    },
    {
      "front": "B2BUA",
      "back": "The usual SIP role behind an SBC. Taxonomy is RFC 7092.",
      "href": "rooms/T09-requirements-5853.html",
      "room": "RFC 5853 is requirements, not a protocol"
    },
    {
      "front": "B2BUA",
      "back": "UAS plus UAC. Two dialogs for one call.",
      "href": "rooms/T09-b2bua-7092.html",
      "room": "An SBC is commonly a B2BUA"
    },
    {
      "front": "Pure proxy",
      "back": "Forwards the request and adds Via.",
      "href": "rooms/T09-b2bua-7092.html",
      "room": "An SBC is commonly a B2BUA"
    },
    {
      "front": "Call-ID",
      "back": "Often different on the two legs of an SBC.",
      "href": "rooms/T09-b2bua-7092.html",
      "room": "An SBC is commonly a B2BUA"
    },
    {
      "front": "RFC 3261",
      "back": "Defines the B2BUA as UAS concatenated with UAC.",
      "href": "rooms/T09-b2bua-7092.html",
      "room": "An SBC is commonly a B2BUA"
    },
    {
      "front": "Via",
      "back": "Identifies the previous SIP hop. Hide the internal one.",
      "href": "rooms/T09-topology-hiding.html",
      "room": "Topology hiding rewrites the addresses you leak"
    },
    {
      "front": "Contact",
      "back": "Dialog target. An SBC usually substitutes its own.",
      "href": "rooms/T09-topology-hiding.html",
      "room": "Topology hiding rewrites the addresses you leak"
    },
    {
      "front": "c=",
      "back": "SDP connection address. Anchoring rewrites it.",
      "href": "rooms/T09-topology-hiding.html",
      "room": "Topology hiding rewrites the addresses you leak"
    },
    {
      "front": "User-Agent",
      "back": "A common topology leak. Stripping it is a product rule.",
      "href": "rooms/T09-topology-hiding.html",
      "room": "Topology hiding rewrites the addresses you leak"
    },
    {
      "front": "Anchor",
      "back": "RTP terminates on the SBC. SDP c= names the SBC.",
      "href": "rooms/T09-media-modes.html",
      "room": "Anchor, bypass, transcode, and DTMF"
    },
    {
      "front": "Bypass",
      "back": "SIP through the SBC. Media between endpoints.",
      "href": "rooms/T09-media-modes.html",
      "room": "Anchor, bypass, transcode, and DTMF"
    },
    {
      "front": "Transcode",
      "back": "Decode and encode. Capacity is on the datasheet.",
      "href": "rooms/T09-media-modes.html",
      "room": "Anchor, bypass, transcode, and DTMF"
    },
    {
      "front": "telephone-event",
      "back": "RFC 4733 DTMF in RTP.",
      "href": "rooms/T09-media-modes.html",
      "room": "Anchor, bypass, transcode, and DTMF"
    },
    {
      "front": "OPTIONS",
      "back": "Capability and liveness request. RFC 3261.",
      "href": "rooms/T09-options-keepalive.html",
      "room": "OPTIONS keepalives"
    },
    {
      "front": "CSeq method",
      "back": "Must match the start line. OPTIONS stays OPTIONS.",
      "href": "rooms/T09-options-keepalive.html",
      "room": "OPTIONS keepalives"
    },
    {
      "front": "200 OK",
      "back": "The peer answered. The call is a later transaction.",
      "href": "rooms/T09-options-keepalive.html",
      "room": "OPTIONS keepalives"
    },
    {
      "front": "Interval",
      "back": "Configured on the product. Not an RFC constant.",
      "href": "rooms/T09-options-keepalive.html",
      "room": "OPTIONS keepalives"
    },
    {
      "front": "Admission",
      "back": "Refuse new work when the configured budget is exhausted.",
      "href": "rooms/T09-admission.html",
      "room": "Call admission stays on the datasheet"
    },
    {
      "front": "503",
      "back": "Service Unavailable. Confirm the product’s actual code.",
      "href": "rooms/T09-admission.html",
      "room": "Call admission stays on the datasheet"
    },
    {
      "front": "Datasheet",
      "back": "The only source for this platform’s session limit.",
      "href": "rooms/T09-admission.html",
      "room": "Call admission stays on the datasheet"
    },
    {
      "front": "No CPS formula",
      "back": "Do not invent calls-per-second math.",
      "href": "rooms/T09-admission.html",
      "room": "Call admission stays on the datasheet"
    },
    {
      "front": "Active",
      "back": "The unit currently processing the dialogs.",
      "href": "rooms/T09-high-availability.html",
      "room": "Active and standby, without a made-up timer"
    },
    {
      "front": "Standby",
      "back": "Ready to take the role. Not a SIP method.",
      "href": "rooms/T09-high-availability.html",
      "room": "Active and standby, without a made-up timer"
    },
    {
      "front": "No timer here",
      "back": "Do not invent a failover interval.",
      "href": "rooms/T09-high-availability.html",
      "room": "Active and standby, without a made-up timer"
    },
    {
      "front": "Dialog state",
      "back": "A B2BUA holds it. Survival is a product question.",
      "href": "rooms/T09-high-availability.html",
      "room": "Active and standby, without a made-up timer"
    },
    {
      "front": "CUBE",
      "back": "Cisco Unified Border Element. An IOS XE B2BUA.",
      "href": "rooms/T10-cube-role.html",
      "room": "CUBE is an IOS XE B2BUA"
    },
    {
      "front": "IOS XE",
      "back": "The operating system whose voice stack CUBE uses.",
      "href": "rooms/T10-cube-role.html",
      "room": "CUBE is an IOS XE B2BUA"
    },
    {
      "front": "SIP profiles",
      "back": "Header modifications. Guide for 17.6 and later.",
      "href": "rooms/T10-cube-role.html",
      "room": "CUBE is an IOS XE B2BUA"
    },
    {
      "front": "B2BUA",
      "back": "The role RFC 7092 taxonomizes.",
      "href": "rooms/T10-cube-role.html",
      "room": "CUBE is an IOS XE B2BUA"
    },
    {
      "front": "dial-peer voice N voip",
      "back": "Creates the VoIP dial peer numbered N.",
      "href": "rooms/T10-dial-peers.html",
      "room": "Dial peers select the SIP next hop"
    },
    {
      "front": "session protocol sipv2",
      "back": "This dial peer speaks SIP.",
      "href": "rooms/T10-dial-peers.html",
      "room": "Dial peers select the SIP next hop"
    },
    {
      "front": "session target ipv4:",
      "back": "The next-hop IPv4 address.",
      "href": "rooms/T10-dial-peers.html",
      "room": "Dial peers select the SIP next hop"
    },
    {
      "front": "192.0.2.40",
      "back": "Carrier address in this synthetic.",
      "href": "rooms/T10-dial-peers.html",
      "room": "Dial peers select the SIP next hop"
    },
    {
      "front": "sip-profiles",
      "back": "voice class sip-profiles N holds the rules.",
      "href": "rooms/T10-sip-profiles.html",
      "room": "voice class sip-profiles"
    },
    {
      "front": "remove",
      "back": "request INVITE sip-header Diversion remove.",
      "href": "rooms/T10-sip-profiles.html",
      "room": "voice class sip-profiles"
    },
    {
      "front": "After 15.4",
      "back": "Inbound profile support, per the use-case technote.",
      "href": "rooms/T10-sip-profiles.html",
      "room": "voice class sip-profiles"
    },
    {
      "front": "CSA tester",
      "back": "Try the profile before loading it.",
      "href": "rooms/T10-sip-profiles.html",
      "room": "voice class sip-profiles"
    },
    {
      "front": "Delayed offer",
      "back": "INVITE without SDP. Offer comes later.",
      "href": "rooms/T10-early-delayed.html",
      "room": "Early offer and delayed offer"
    },
    {
      "front": "Early offer",
      "back": "The INVITE already contains the offer.",
      "href": "rooms/T10-early-delayed.html",
      "room": "Early offer and delayed offer"
    },
    {
      "front": "early-offer forced",
      "back": "Dial-peer command that forces an outbound offer.",
      "href": "rooms/T10-early-delayed.html",
      "room": "Early offer and delayed offer"
    },
    {
      "front": "ACK answer",
      "back": "Used when the offer arrived in the 200 OK.",
      "href": "rooms/T10-early-delayed.html",
      "room": "Early offer and delayed offer"
    },
    {
      "front": "SIP trunk",
      "back": "CUCM’s adjacency to CUBE or another peer.",
      "href": "rooms/T10-cucm-trunk.html",
      "room": "CUCM trunks, SIP profiles, and Lua"
    },
    {
      "front": "CUCM SIP profile",
      "back": "Not voice class sip-profiles.",
      "href": "rooms/T10-cucm-trunk.html",
      "room": "CUCM trunks, SIP profiles, and Lua"
    },
    {
      "front": "Lua",
      "back": "Normalization scripts exist. Open the admin guide.",
      "href": "rooms/T10-cucm-trunk.html",
      "room": "CUCM trunks, SIP profiles, and Lua"
    },
    {
      "front": "MTP required",
      "back": "Confirm the guide for that version before checking it.",
      "href": "rooms/T10-cucm-trunk.html",
      "room": "CUCM trunks, SIP profiles, and Lua"
    },
    {
      "front": "SIP integration",
      "back": "The documented Unity Connection path. Open your version’s guide.",
      "href": "rooms/T10-unity.html",
      "room": "Unity Connection SIP integration"
    },
    {
      "front": "Diversion",
      "back": "RFC 5806 redirecting number. Reason unconditional in the lab.",
      "href": "rooms/T10-unity.html",
      "room": "Unity Connection SIP integration"
    },
    {
      "front": "History-Info",
      "back": "RFC 7044. Use it if the guide asks for it.",
      "href": "rooms/T10-unity.html",
      "room": "Unity Connection SIP integration"
    },
    {
      "front": "Not SCCP-by-guess",
      "back": "Do not invent SCCP as the current default.",
      "href": "rooms/T10-unity.html",
      "room": "Unity Connection SIP integration"
    },
    {
      "front": "debug ccsip messages",
      "back": "Shows sent and received SIP.",
      "href": "rooms/T10-debug-ccsip.html",
      "room": "debug ccsip messages"
    },
    {
      "front": "sip-profiles debug",
      "back": "debug ccsip feature sip-profiles.",
      "href": "rooms/T10-debug-ccsip.html",
      "room": "debug ccsip messages"
    },
    {
      "front": "CSA",
      "back": "SIP Profile Tester in Collaboration Solutions Analyzer.",
      "href": "rooms/T10-debug-ccsip.html",
      "room": "debug ccsip messages"
    },
    {
      "front": "Sent / Received",
      "back": "Direction markers around each SIP message.",
      "href": "rooms/T10-debug-ccsip.html",
      "room": "debug ccsip messages"
    },
    {
      "front": "realm",
      "back": "Routing and policy context on the Oracle SBC.",
      "href": "rooms/T11-oracle-objects.html",
      "room": "Oracle SBC objects"
    },
    {
      "front": "session-agent",
      "back": "Named next hop.",
      "href": "rooms/T11-oracle-objects.html",
      "room": "Oracle SBC objects"
    },
    {
      "front": "in-manipulationid",
      "back": "Which sip-manipulation runs on arrival.",
      "href": "rooms/T11-oracle-objects.html",
      "room": "Oracle SBC objects"
    },
    {
      "front": "out-manipulationid",
      "back": "Which sip-manipulation runs on the way out.",
      "href": "rooms/T11-oracle-objects.html",
      "room": "Oracle SBC objects"
    },
    {
      "front": "header-rule",
      "back": "One rule inside a sip-manipulation.",
      "href": "rooms/T11-acme-hmr.html",
      "room": "Header rules run in order"
    },
    {
      "front": "delete",
      "back": "Removes the named header. Lab rule strip-server.",
      "href": "rooms/T11-acme-hmr.html",
      "room": "Header rules run in order"
    },
    {
      "front": "store",
      "back": "Keeps a value for a later rule. Run it first.",
      "href": "rooms/T11-acme-hmr.html",
      "room": "Header rules run in order"
    },
    {
      "front": "reject",
      "back": "An HMR action. Read the release guide for the status.",
      "href": "rooms/T11-acme-hmr.html",
      "room": "Header rules run in order"
    },
    {
      "front": "SWe Edge",
      "back": "Edge product. Family includes SBC 1000 and SBC 2000.",
      "href": "rooms/T11-ribbon-families.html",
      "room": "Ribbon Edge, Core, and public validation lists"
    },
    {
      "front": "SBC Core",
      "back": "A separate family.",
      "href": "rooms/T11-ribbon-families.html",
      "room": "Ribbon Edge, Core, and public validation lists"
    },
    {
      "front": "ACS snapshot",
      "back": "5110, 5210, 5400, 7000, and SWe for that validation.",
      "href": "rooms/T11-ribbon-families.html",
      "room": "Ribbon Edge, Core, and public validation lists"
    },
    {
      "front": "No invented CLI",
      "back": "Admin guides live on the documentation portal.",
      "href": "rooms/T11-ribbon-families.html",
      "room": "Ribbon Edge, Core, and public validation lists"
    },
    {
      "front": "Action Subject",
      "back": "Which header or element the rule touches.",
      "href": "rooms/T11-audiocodes-rules.html",
      "room": "AudioCodes manipulation in software 7.6"
    },
    {
      "front": "Action Type",
      "back": "Add, Remove, Modify, prefix, suffix, or Normalize.",
      "href": "rooms/T11-audiocodes-rules.html",
      "room": "AudioCodes manipulation in software 7.6"
    },
    {
      "front": "IP group",
      "back": "Inbound or outbound assignment of the set.",
      "href": "rooms/T11-audiocodes-rules.html",
      "room": "AudioCodes manipulation in software 7.6"
    },
    {
      "front": "Release menu",
      "back": "The clicks change. Use the 7.6 manual you are running.",
      "href": "rooms/T11-audiocodes-rules.html",
      "room": "AudioCodes manipulation in software 7.6"
    },
    {
      "front": "CUBE line",
      "back": "request INVITE sip-header NAME remove.",
      "href": "rooms/T11-compare-manipulation.html",
      "room": "Three manipulation grammars"
    },
    {
      "front": "Oracle block",
      "back": "header-rule, header-name, action delete.",
      "href": "rooms/T11-compare-manipulation.html",
      "room": "Three manipulation grammars"
    },
    {
      "front": "AudioCodes row",
      "back": "Action Type Remove on an IP group.",
      "href": "rooms/T11-compare-manipulation.html",
      "room": "Three manipulation grammars"
    },
    {
      "front": "Do not paste across",
      "back": "Each grammar is parsed by its own product.",
      "href": "rooms/T11-compare-manipulation.html",
      "room": "Three manipulation grammars"
    },
    {
      "front": "PAI",
      "back": "P-Asserted-Identity, RFC 3325.",
      "href": "rooms/T11-pai-interop.html",
      "room": "Identity at a trust boundary"
    },
    {
      "front": "Privacy",
      "back": "RFC 3323. id asks the network to withhold identity.",
      "href": "rooms/T11-pai-interop.html",
      "room": "Identity at a trust boundary"
    },
    {
      "front": "Diversion",
      "back": "RFC 5806 redirecting header.",
      "href": "rooms/T11-pai-interop.html",
      "room": "Identity at a trust boundary"
    },
    {
      "front": "History-Info",
      "back": "RFC 7044. Map it only as the interop guide says.",
      "href": "rooms/T11-pai-interop.html",
      "room": "Identity at a trust boundary"
    },
    {
      "front": "RFC 5922",
      "back": "SIP domain certificates.",
      "href": "rooms/T11-certificate-fqdn.html",
      "room": "Certificate names and Contact"
    },
    {
      "front": "Teams Contact",
      "back": "FQDN. An IP draws 403.",
      "href": "rooms/T11-certificate-fqdn.html",
      "room": "Certificate names and Contact"
    },
    {
      "front": "Teams wildcard",
      "back": "CN or SAN wildcards are supported for Direct Routing.",
      "href": "rooms/T11-certificate-fqdn.html",
      "room": "Certificate names and Contact"
    },
    {
      "front": "Webex LGW wildcard",
      "back": "Not supported for Local Gateway.",
      "href": "rooms/T11-certificate-fqdn.html",
      "room": "Certificate names and Contact"
    },
    {
      "front": "pstnhub",
      "back": "sip, sip2, and sip3.pstnhub.microsoft.com.",
      "href": "rooms/T12-teams-signaling.html",
      "room": "Teams Direct Routing signaling"
    },
    {
      "front": "5061",
      "back": "Direct Routing signaling port.",
      "href": "rooms/T12-teams-signaling.html",
      "room": "Teams Direct Routing signaling"
    },
    {
      "front": "Verified domain",
      "back": "Not a name ending in onmicrosoft.com.",
      "href": "rooms/T12-teams-signaling.html",
      "room": "Teams Direct Routing signaling"
    },
    {
      "front": "No RFC 5923",
      "back": "The SIP proxy does not support connection aliasing.",
      "href": "rooms/T12-teams-signaling.html",
      "room": "Teams Direct Routing signaling"
    },
    {
      "front": "OPTIONS 200",
      "back": "Marks the Direct Routing SBC healthy.",
      "href": "rooms/T12-teams-options-media.html",
      "room": "OPTIONS health and SRTP media"
    },
    {
      "front": "CSeq",
      "back": "Method token matches the request. OPTIONS, not INVITE.",
      "href": "rooms/T12-teams-options-media.html",
      "room": "OPTIONS health and SRTP media"
    },
    {
      "front": "Table cell",
      "back": "Checked 2026-10-14: CSeq: 1 INVITE. Do not copy it.",
      "href": "rooms/T12-teams-options-media.html",
      "room": "OPTIONS health and SRTP media"
    },
    {
      "front": "SRTP",
      "back": "Media processors use SRTP. RFC 3711.",
      "href": "rooms/T12-teams-options-media.html",
      "room": "OPTIONS health and SRTP media"
    },
    {
      "front": "SIP TLS",
      "back": "Signaling from an IOS XE Local Gateway to Webex.",
      "href": "rooms/T12-webex-lgw.html",
      "room": "Webex Calling Local Gateway"
    },
    {
      "front": "SRTP",
      "back": "Media for that IOS XE Local Gateway.",
      "href": "rooms/T12-webex-lgw.html",
      "room": "Webex Calling Local Gateway"
    },
    {
      "front": "Certificate trunk",
      "back": "How a third-party SBC is supported.",
      "href": "rooms/T12-webex-lgw.html",
      "room": "Webex Calling Local Gateway"
    },
    {
      "front": "ByoPSTN",
      "back": "Bring your own PSTN. Not Cloud Connected PSTN.",
      "href": "rooms/T12-webex-lgw.html",
      "room": "Webex Calling Local Gateway"
    },
    {
      "front": "Cisco Calling Plan",
      "back": "One of the three organization-article choices.",
      "href": "rooms/T12-webex-pstn-models.html",
      "room": "Three PSTN choices, one per location"
    },
    {
      "front": "Cloud Connected PSTN",
      "back": "A cloud partner through Webex. Not the Local Gateway.",
      "href": "rooms/T12-webex-pstn-models.html",
      "room": "Three PSTN choices, one per location"
    },
    {
      "front": "Local Gateway",
      "back": "Premises-based PSTN. One connection on the location.",
      "href": "rooms/T12-webex-pstn-models.html",
      "room": "Three PSTN choices, one per location"
    },
    {
      "front": "ByoPSTN",
      "back": "Bring your own PSTN.",
      "href": "rooms/T12-webex-pstn-models.html",
      "room": "Three PSTN choices, one per location"
    },
    {
      "front": "Managed PSTN",
      "back": "Ordinary Connect calls. No customer SIP trunk required.",
      "href": "rooms/T12-connect-boundaries.html",
      "room": "Amazon Connect voice boundaries"
    },
    {
      "front": "SIPREC",
      "back": "External voice into the analytics connector.",
      "href": "rooms/T12-connect-boundaries.html",
      "room": "Amazon Connect voice boundaries"
    },
    {
      "front": "Voice Connector",
      "back": "Chime SDK SIP trunking service.",
      "href": "rooms/T12-connect-boundaries.html",
      "room": "Amazon Connect voice boundaries"
    },
    {
      "front": "Not a bridge",
      "back": "Carrier through Voice Connector into Connect needs specialist approval.",
      "href": "rooms/T12-connect-boundaries.html",
      "room": "Amazon Connect voice boundaries"
    },
    {
      "front": "BYO SIP",
      "back": "Your ITSP or gateway connects to Five9 SBCs.",
      "href": "rooms/T12-five9-twilio.html",
      "room": "Five9 BYO SIP and Twilio trunks"
    },
    {
      "front": "Entitled groups",
      "back": "Self-service exists for entitled BYO SIP trunk groups.",
      "href": "rooms/T12-five9-twilio.html",
      "room": "Five9 BYO SIP and Twilio trunks"
    },
    {
      "front": "Termination URI",
      "back": "Must appear in the Request-URI or Twilio drops the request.",
      "href": "rooms/T12-five9-twilio.html",
      "room": "Five9 BYO SIP and Twilio trunks"
    },
    {
      "front": "sip not sips",
      "back": "Origination URLs use sip. sips is not supported.",
      "href": "rooms/T12-five9-twilio.html",
      "room": "Five9 BYO SIP and Twilio trunks"
    },
    {
      "front": "BYOC Cloud",
      "back": "Public internet SIP. RTP crosses the internet.",
      "href": "rooms/T12-genesys-cxone.html",
      "room": "Genesys BYOC and NICE CXone SIP"
    },
    {
      "front": "BYOC Premises",
      "back": "Customer-managed Edge. Hybrid media is allowed.",
      "href": "rooms/T12-genesys-cxone.html",
      "room": "Genesys BYOC and NICE CXone SIP"
    },
    {
      "front": "December 1, 2026",
      "back": "Genesys Hardware Solution only.",
      "href": "rooms/T12-genesys-cxone.html",
      "room": "Genesys BYOC and NICE CXone SIP"
    },
    {
      "front": "CXone ports",
      "back": "5060 and 5061, plus dynamic RTP/SRTP.",
      "href": "rooms/T12-genesys-cxone.html",
      "room": "Genesys BYOC and NICE CXone SIP"
    },
    {
      "front": "Call-ID",
      "back": "Same value for the dialog. A B2BUA may use a new one on the other leg.",
      "href": "rooms/T13-read-a-ladder.html",
      "room": "Match a ladder before you change anything"
    },
    {
      "front": "CSeq",
      "back": "Integer plus method. The ACK for an INVITE keeps the INVITE's number.",
      "href": "rooms/T13-read-a-ladder.html",
      "room": "Match a ladder before you change anything"
    },
    {
      "front": "Via branch",
      "back": "Transaction hop id. Look for the z9hG4bK cookie.",
      "href": "rooms/T13-read-a-ladder.html",
      "room": "Match a ladder before you change anything"
    },
    {
      "front": "2xx ACK",
      "back": "End to end. New branch. RFC 6026 corrects the transaction rules around it.",
      "href": "rooms/T13-read-a-ladder.html",
      "room": "Match a ladder before you change anything"
    },
    {
      "front": "180",
      "back": "Ringing. Provisional alerting.",
      "href": "rooms/T13-status-codes.html",
      "room": "Status codes you will actually see"
    },
    {
      "front": "183",
      "back": "Session Progress. Provisional, often where early media shows up.",
      "href": "rooms/T13-status-codes.html",
      "room": "Status codes you will actually see"
    },
    {
      "front": "487",
      "back": "Request Terminated. The INVITE's answer after CANCEL.",
      "href": "rooms/T13-status-codes.html",
      "room": "Status codes you will actually see"
    },
    {
      "front": "606",
      "back": "Not Acceptable. Global. 488 is only this UA.",
      "href": "rooms/T13-status-codes.html",
      "room": "Status codes you will actually see"
    },
    {
      "front": "sip",
      "back": "Display filter for SIP packets. Field names live on the SIP reference page.",
      "href": "rooms/T13-wireshark.html",
      "room": "Display filters for SIP and RTP"
    },
    {
      "front": "rtp",
      "back": "Display filter for RTP packets. Field names live on the RTP reference page.",
      "href": "rooms/T13-wireshark.html",
      "room": "Display filters for SIP and RTP"
    },
    {
      "front": "sip.Method",
      "back": "Safe display field for the SIP method.",
      "href": "rooms/T13-wireshark.html",
      "room": "Display filters for SIP and RTP"
    },
    {
      "front": "Confirm CSeq",
      "back": "sip.CSeq.method is common. Confirm it on the SIP display-filter reference.",
      "href": "rooms/T13-wireshark.html",
      "room": "Display filters for SIP and RTP"
    },
    {
      "front": "ccsip messages",
      "back": "IOS voice debug that prints SIP send and receive.",
      "href": "rooms/T13-ccsip-output.html",
      "room": "IOS ccsip and ccapi debug"
    },
    {
      "front": "ccapi inout",
      "back": "IOS voice debug of the call-control API. Not a SIP RFC.",
      "href": "rooms/T13-ccsip-output.html",
      "room": "IOS ccsip and ccapi debug"
    },
    {
      "front": "Sent / Received",
      "back": "Direction on the debug. The SIP start line comes after it.",
      "href": "rooms/T13-ccsip-output.html",
      "room": "IOS ccsip and ccapi debug"
    },
    {
      "front": "Synthetic",
      "back": "Lab output in this track is synthetic. Customer logs stay out.",
      "href": "rooms/T13-ccsip-output.html",
      "room": "IOS ccsip and ccapi debug"
    },
    {
      "front": "488",
      "back": "Not Acceptable Here. This UA. Often codec or SDP.",
      "href": "rooms/T13-codec-and-timer-failures.html",
      "room": "488 codecs and 422 session timers"
    },
    {
      "front": "422",
      "back": "Session Interval Too Small. RFC 4028. Read Min-SE.",
      "href": "rooms/T13-codec-and-timer-failures.html",
      "room": "488 codecs and 422 session timers"
    },
    {
      "front": "telephone-event",
      "back": "RFC 4733. Offer it on purpose if you need DTMF.",
      "href": "rooms/T13-codec-and-timer-failures.html",
      "room": "488 codecs and 422 session timers"
    },
    {
      "front": "Offer/answer",
      "back": "The answer is a subset. No shared audio codec tends to 488.",
      "href": "rooms/T13-codec-and-timer-failures.html",
      "room": "488 codecs and 422 session timers"
    },
    {
      "front": "Name mismatch",
      "back": "Handshake fails. No SIP status from the peer.",
      "href": "rooms/T13-tls-failures.html",
      "room": "TLS names, trust anchors, and version"
    },
    {
      "front": "Untrusted CA",
      "back": "Handshake fails. Fix the trust anchor.",
      "href": "rooms/T13-tls-failures.html",
      "room": "TLS names, trust anchors, and version"
    },
    {
      "front": "TLS 1.2+",
      "back": "Teams Direct Routing floor in the OPTIONS troubleshooting page.",
      "href": "rooms/T13-tls-failures.html",
      "room": "TLS names, trust anchors, and version"
    },
    {
      "front": "FQDN Contact",
      "back": "Required toward Teams. An address literal draws 403.",
      "href": "rooms/T13-tls-failures.html",
      "room": "TLS names, trust anchors, and version"
    },
    {
      "front": "Category",
      "back": "Read it on the header. 3261 is Standards Track. 6881 is BCP.",
      "href": "rooms/T13-build-a-timeline.html",
      "room": "Read an RFC header before you cite it"
    },
    {
      "front": "Obsoletes",
      "back": "The new RFC names the one it replaces. 8866 and 4566 are the SDP pair here.",
      "href": "rooms/T13-build-a-timeline.html",
      "room": "Read an RFC header before you cite it"
    },
    {
      "front": "Updates",
      "back": "A correction that leaves the base in force. Check 6026's header.",
      "href": "rooms/T13-build-a-timeline.html",
      "room": "Read an RFC header before you cite it"
    },
    {
      "front": "rfc-editor.org",
      "back": "The header you cite. Months in this lesson are not invented.",
      "href": "rooms/T13-build-a-timeline.html",
      "room": "Read an RFC header before you cite it"
    },
    {
      "front": "Trusted list",
      "back": "Who may present VoIP signaling. CME and SRST each have a page.",
      "href": "rooms/T14-fraud-class.html",
      "room": "The toll-fraud class, stated defensively"
    },
    {
      "front": "401 / 407",
      "back": "UAS and proxy digest challenges. Secrets stay unprinted.",
      "href": "rooms/T14-fraud-class.html",
      "room": "The toll-fraud class, stated defensively"
    },
    {
      "front": "Numbering plan",
      "back": "Dial-peers match the plan, including whether international destinations are in it.",
      "href": "rooms/T14-fraud-class.html",
      "room": "The toll-fraud class, stated defensively"
    },
    {
      "front": "STIR context",
      "back": "FCC call authentication and RFC 8224. A different question from the source list.",
      "href": "rooms/T14-fraud-class.html",
      "room": "The toll-fraud class, stated defensively"
    },
    {
      "front": "trusted list",
      "back": "Addresses allowed to present inbound VoIP. CME page or SRST page.",
      "href": "rooms/T14-trusted-list.html",
      "room": "Trusted addresses and source restrictions"
    },
    {
      "front": "authenticate",
      "back": "The check that uses the list.",
      "href": "rooms/T14-trusted-list.html",
      "room": "Trusted addresses and source restrictions"
    },
    {
      "front": "Two pages",
      "back": "CME and SRST differ. Quote no shared list size.",
      "href": "rooms/T14-trusted-list.html",
      "room": "Trusted addresses and source restrictions"
    },
    {
      "front": "Border pair",
      "back": "198.51.100.30 and 192.0.2.40 in the teaching snippet.",
      "href": "rooms/T14-trusted-list.html",
      "room": "Trusted addresses and source restrictions"
    },
    {
      "front": "urn:service:sos",
      "back": "RFC 5031 service URN for emergency calling.",
      "href": "rooms/T14-e911.html",
      "room": "Emergency calling, location, and the FCC page"
    },
    {
      "front": "RFC 6881",
      "back": "BCP for emergency calling services.",
      "href": "rooms/T14-e911.html",
      "room": "Emergency calling, location, and the FCC page"
    },
    {
      "front": "Geolocation",
      "back": "RFC 6442 location conveyance.",
      "href": "rooms/T14-e911.html",
      "room": "Emergency calling, location, and the FCC page"
    },
    {
      "front": "fcc-mlts",
      "back": "Kari's Law and RAY BAUM's Act. The page wins over a retelling.",
      "href": "rooms/T14-e911.html",
      "room": "Emergency calling, location, and the FCC page"
    },
    {
      "front": "7866",
      "back": "Session recording protocol. SRC forks to an SRS.",
      "href": "rooms/T14-siprec.html",
      "room": "Disclosed recording with SIPREC"
    },
    {
      "front": "7865",
      "back": "Recording metadata. Read it for fields.",
      "href": "rooms/T14-siprec.html",
      "room": "Disclosed recording with SIPREC"
    },
    {
      "front": "Disclosed",
      "back": "Quality monitoring and compliance, with the parties on notice.",
      "href": "rooms/T14-siprec.html",
      "room": "Disclosed recording with SIPREC"
    },
    {
      "front": "Retention",
      "back": "A legal question. Outside the RFC.",
      "href": "rooms/T14-siprec.html",
      "room": "Disclosed recording with SIPREC"
    },
    {
      "front": "EF",
      "back": "Expedited Forwarding per-hop behavior. RFC 3246.",
      "href": "rooms/T14-qos.html",
      "room": "Voice, EF, and what the PHB does not design"
    },
    {
      "front": "Telephony",
      "back": "The service class RFC 4594 maps to EF.",
      "href": "rooms/T14-qos.html",
      "room": "Voice, EF, and what the PHB does not design"
    },
    {
      "front": "Codepoint",
      "back": "Use the value RFC 3246 recommends. Do not invent a second one.",
      "href": "rooms/T14-qos.html",
      "room": "Voice, EF, and what the PHB does not design"
    },
    {
      "front": "Not a LAN",
      "back": "Queues and campus policy stay in the approved design.",
      "href": "rooms/T14-qos.html",
      "room": "Voice, EF, and what the PHB does not design"
    },
    {
      "front": "OPTIONS",
      "back": "Liveness. Alarm when the trunk stops answering.",
      "href": "rooms/T14-alarms.html",
      "room": "Alarms that match the failure"
    },
    {
      "front": "503",
      "back": "Service Unavailable. Page the server-side class.",
      "href": "rooms/T14-alarms.html",
      "room": "Alarms that match the failure"
    },
    {
      "front": "TLS floor",
      "back": "Toward Teams, 1.2 or newer, or the handshake never yields SIP.",
      "href": "rooms/T14-alarms.html",
      "room": "Alarms that match the failure"
    },
    {
      "front": "SRS down",
      "back": "Recording-session alarm. RFC 7866. Retention stays outside the RFC.",
      "href": "rooms/T14-alarms.html",
      "room": "Alarms that match the failure"
    },
    {
      "front": "Baseline",
      "back": "The last good OPTIONS or the current snippet, written down.",
      "href": "rooms/T14-change-window.html",
      "room": "One change in the window"
    },
    {
      "front": "One variable",
      "back": "A single address, codec, or TLS setting.",
      "href": "rooms/T14-change-window.html",
      "room": "One change in the window"
    },
    {
      "front": "Verify",
      "back": "One signal. A 200, or the test call to +15551212.",
      "href": "rooms/T14-change-window.html",
      "room": "One change in the window"
    },
    {
      "front": "Rollback",
      "back": "The previous value of that same variable.",
      "href": "rooms/T14-change-window.html",
      "room": "One change in the window"
    },
    {
      "front": "Role",
      "back": "What the box does on the ladder: UA, proxy, registrar, B2BUA.",
      "href": "rooms/T15-glossary-habit.html",
      "room": "A glossary tied to a document"
    },
    {
      "front": "B2BUA",
      "back": "UAS plus UAC. RFC 7092. Typical SBC.",
      "href": "rooms/T15-glossary-habit.html",
      "room": "A glossary tied to a document"
    },
    {
      "front": "Document",
      "back": "The cite you can open. A logo is not a document.",
      "href": "rooms/T15-glossary-habit.html",
      "room": "A glossary tied to a document"
    },
    {
      "front": "SDP row",
      "back": "RFC 8866 now. RFC 4566 is the one it moved from.",
      "href": "rooms/T15-glossary-habit.html",
      "room": "A glossary tied to a document"
    },
    {
      "front": "WFM / QM",
      "back": "Operations systems. No SIP RFC in this library.",
      "href": "rooms/T15-neighbors.html",
      "room": "Neighbors that are not SIP elements"
    },
    {
      "front": "SIPREC",
      "back": "The recording neighbor that is SIP. RFC 7866 and RFC 7865.",
      "href": "rooms/T15-neighbors.html",
      "room": "Neighbors that are not SIP elements"
    },
    {
      "front": "CRM",
      "back": "Not a SIP element. No invented vendor features.",
      "href": "rooms/T15-neighbors.html",
      "room": "Neighbors that are not SIP elements"
    },
    {
      "front": "Above the media",
      "back": "Analytics and agents. SIP and RTP still carry the session.",
      "href": "rooms/T15-neighbors.html",
      "room": "Neighbors that are not SIP elements"
    },
    {
      "front": "Above RTP",
      "back": "Analytics and agents. The packets remain RTP.",
      "href": "rooms/T15-workforce-and-ai.html",
      "room": "Workforce tools and agents above the media"
    },
    {
      "front": "Dialog",
      "back": "Still Call-ID, CSeq, To tag. RFC 3261.",
      "href": "rooms/T15-workforce-and-ai.html",
      "room": "Workforce tools and agents above the media"
    },
    {
      "front": "Disclosed fork",
      "back": "SIPREC when the SBC records. RFC 7866.",
      "href": "rooms/T15-workforce-and-ai.html",
      "room": "Workforce tools and agents above the media"
    },
    {
      "front": "No invented features",
      "back": "Vendor guides or an honest gap. Not a fake RFC.",
      "href": "rooms/T15-workforce-and-ai.html",
      "room": "Workforce tools and agents above the media"
    },
    {
      "front": "SSCA",
      "back": "SIP School Certified Associate. 20 CEC credits toward BICSI, per the SSCA page.",
      "href": "rooms/T15-certifications.html",
      "room": "Certifications this edition will name"
    },
    {
      "front": "CLCOR",
      "back": "350-801. Core for CCNP Collaboration and the Collaboration Core specialist.",
      "href": "rooms/T15-certifications.html",
      "room": "Certifications this edition will name"
    },
    {
      "front": "Concentrations",
      "back": "300-815 CLACC, 300-820 CLHCT, or 300-830 CLCCE. One of them, plus the core.",
      "href": "rooms/T15-certifications.html",
      "room": "Certifications this edition will name"
    },
    {
      "front": "MS-721",
      "back": "Collaboration Communications Systems Engineer Associate. Certifications change. Use the link.",
      "href": "rooms/T15-certifications.html",
      "room": "Certifications this edition will name"
    },
    {
      "front": "Banner",
      "back": "RFC Editor header beats a blog.",
      "href": "rooms/T15-reading-the-index.html",
      "room": "When the page and the memory disagree"
    },
    {
      "front": "Cisco page",
      "back": "Exam topics change. The Cisco page wins.",
      "href": "rooms/T15-reading-the-index.html",
      "room": "When the page and the memory disagree"
    },
    {
      "front": "MS-721 link",
      "back": "Certifications change. Use the certification page.",
      "href": "rooms/T15-reading-the-index.html",
      "room": "When the page and the memory disagree"
    },
    {
      "front": "Checked dates",
      "back": "February 3, 2026. April 28, 2026. October 29, 2026. Source check 2026-10-14.",
      "href": "rooms/T15-reading-the-index.html",
      "room": "When the page and the memory disagree"
    },
    {
      "front": "CUCM",
      "back": "Registrar and trunk call-control point.",
      "href": "rooms/T15-uc-bridge.html",
      "room": "CUCM, UCCX, and CVP without a fake script"
    },
    {
      "front": "UCCX",
      "back": "Call control through CUCM. Not the carrier trunk.",
      "href": "rooms/T15-uc-bridge.html",
      "room": "CUCM, UCCX, and CVP without a fake script"
    },
    {
      "front": "CUBE or CUCM",
      "back": "Where PSTN SIP lands.",
      "href": "rooms/T15-uc-bridge.html",
      "room": "CUCM, UCCX, and CVP without a fake script"
    },
    {
      "front": "CVP",
      "back": "SIP among CVP, gateways, and CUCM, in that version's guide.",
      "href": "rooms/T15-uc-bridge.html",
      "room": "CUCM, UCCX, and CVP without a fake script"
    },
    {
      "front": "Local Gateway",
      "back": "Premises PSTN pattern for Webex Calling.",
      "href": "rooms/T15-cloud-bridge.html",
      "room": "Webex Calling local gateway, and a separate contact center"
    },
    {
      "front": "Organization PSTN",
      "back": "Configured on the Webex Calling PSTN page.",
      "href": "rooms/T15-cloud-bridge.html",
      "room": "Webex Calling local gateway, and a separate contact center"
    },
    {
      "front": "Placeholder host",
      "back": "example.com stands in so the lesson does not invent the edge FQDN.",
      "href": "rooms/T15-cloud-bridge.html",
      "room": "Webex Calling local gateway, and a separate contact center"
    },
    {
      "front": "Separate product",
      "back": "Webex Contact Center. Check its current design guide.",
      "href": "rooms/T15-cloud-bridge.html",
      "room": "Webex Calling local gateway, and a separate contact center"
    },
    {
      "front": "Call-ID + To tag",
      "back": "Dialog match. No To tag on a brand-new INVITE.",
      "href": "rooms/T16-drill-signaling.html",
      "room": "Signaling drill with the cited answer"
    },
    {
      "front": "Branch",
      "back": "Transaction hop. z9hG4bK.",
      "href": "rooms/T16-drill-signaling.html",
      "room": "Signaling drill with the cited answer"
    },
    {
      "front": "2xx ACK",
      "back": "End to end. RFC 6026.",
      "href": "rooms/T16-drill-signaling.html",
      "room": "Signaling drill with the cited answer"
    },
    {
      "front": "487",
      "back": "INVITE's final response after CANCEL. ACK is hop by hop.",
      "href": "rooms/T16-drill-signaling.html",
      "room": "Signaling drill with the cited answer"
    },
    {
      "front": "488",
      "back": "This UA. Session description. RFC 3261 and RFC 3264.",
      "href": "rooms/T16-drill-media.html",
      "room": "Media drill with the cited answer"
    },
    {
      "front": "422",
      "back": "RFC 4028. Raise the session interval to Min-SE.",
      "href": "rooms/T16-drill-media.html",
      "room": "Media drill with the cited answer"
    },
    {
      "front": "telephone-event",
      "back": "RFC 4733. DTMF in the offer you mean.",
      "href": "rooms/T16-drill-media.html",
      "room": "Media drill with the cited answer"
    },
    {
      "front": "Keying",
      "back": "RFC 3711 plus either RFC 4568 or RFC 5764. Record which.",
      "href": "rooms/T16-drill-media.html",
      "room": "Media drill with the cited answer"
    },
    {
      "front": "RFC 7092",
      "back": "B2BUA taxonomy. New Call-ID on the other leg is normal.",
      "href": "rooms/T16-drill-sbc.html",
      "room": "SBC drill with the cited answer"
    },
    {
      "front": "RFC 5853",
      "back": "SBC deployment requirements.",
      "href": "rooms/T16-drill-sbc.html",
      "room": "SBC drill with the cited answer"
    },
    {
      "front": "Trunk landing",
      "back": "CUBE or CUCM. Not UCCX.",
      "href": "rooms/T16-drill-sbc.html",
      "room": "SBC drill with the cited answer"
    },
    {
      "front": "Teams pair",
      "back": "TLS 1.2+ and an FQDN in Contact.",
      "href": "rooms/T16-drill-sbc.html",
      "room": "SBC drill with the cited answer"
    },
    {
      "front": "Symptom",
      "back": "Silence after connect, Alice at 203.0.113.10. Written first.",
      "href": "rooms/T16-incident-method.html",
      "room": "Symptom, ladder, one packet, one variable"
    },
    {
      "front": "Ladder",
      "back": "INVITE, 100, 180, 200, end-to-end ACK. One Call-ID.",
      "href": "rooms/T16-incident-method.html",
      "room": "Symptom, ladder, one packet, one variable"
    },
    {
      "front": "One packet",
      "back": "200 OK SDP. 203.0.113.20, UDP 19642, PCMU.",
      "href": "rooms/T16-incident-method.html",
      "room": "Symptom, ladder, one packet, one variable"
    },
    {
      "front": "One variable",
      "back": "Capture that port. Config edits wait, and then they are single.",
      "href": "rooms/T16-incident-method.html",
      "room": "Symptom, ladder, one packet, one variable"
    },
    {
      "front": "Six rows",
      "back": "TLS, codecs, numbering, trusted addresses, OPTIONS, SRTP keying.",
      "href": "rooms/T16-design-interconnect.html",
      "room": "An interconnect checklist, not a config dump"
    },
    {
      "front": "telephone-event",
      "back": "On the codec row on purpose. RFC 4733.",
      "href": "rooms/T16-design-interconnect.html",
      "room": "An interconnect checklist, not a config dump"
    },
    {
      "front": "E.164",
      "back": "Number form. tel URI is RFC 3966.",
      "href": "rooms/T16-design-interconnect.html",
      "room": "An interconnect checklist, not a config dump"
    },
    {
      "front": "Not a dump",
      "back": "Decisions only. No private key, no full dial-peer list.",
      "href": "rooms/T16-design-interconnect.html",
      "room": "An interconnect checklist, not a config dump"
    },
    {
      "front": "Path",
      "back": "CUCM, then a certified SBC, then Teams. No invented SKU.",
      "href": "rooms/T16-design-teams-cucm.html",
      "room": "CUCM, a certified SBC, and Teams Direct Routing"
    },
    {
      "front": "CUBE guide",
      "back": "Basic SIP configuration for the CUBE case.",
      "href": "rooms/T16-design-teams-cucm.html",
      "room": "CUCM, a certified SBC, and Teams Direct Routing"
    },
    {
      "front": "TLS 1.2+",
      "back": "Teams floor. Handshake failures are not SIP codes.",
      "href": "rooms/T16-design-teams-cucm.html",
      "room": "CUCM, a certified SBC, and Teams Direct Routing"
    },
    {
      "front": "FQDN Contact",
      "back": "sbc.example.com in the lab. An address literal draws 403.",
      "href": "rooms/T16-design-teams-cucm.html",
      "room": "CUCM, a certified SBC, and Teams Direct Routing"
    },
    {
      "front": "SDP",
      "back": "RFC 4566 moved to RFC 8866.",
      "href": "rooms/T16-specs-move.html",
      "room": "When the RFC number moves"
    },
    {
      "front": "ICE",
      "back": "RFC 5245 moved to RFC 8445. Confirm the banner.",
      "href": "rooms/T16-specs-move.html",
      "room": "When the RFC number moves"
    },
    {
      "front": "STUN / TURN",
      "back": "RFC 8489 and RFC 8656 in this library. Predecessors 5389 and 5766.",
      "href": "rooms/T16-specs-move.html",
      "room": "When the RFC number moves"
    },
    {
      "front": "Banner",
      "back": "A newer obsoleting RFC that this edition does not cite still wins.",
      "href": "rooms/T16-specs-move.html",
      "room": "When the RFC number moves"
    },
    {
      "front": "RFC 8825",
      "back": "Applicability statement for WebRTC. It does not define SIP.",
      "href": "rooms/T17-signaling-planes.html",
      "room": "Signaling, JSEP, and the media plane"
    },
    {
      "front": "JSEP",
      "back": "JavaScript controls signaling. SIP is one allowed choice.",
      "href": "rooms/T17-signaling-planes.html",
      "room": "Signaling, JSEP, and the media plane"
    },
    {
      "front": "RFC 7118",
      "back": "WebSocket subprotocol sip for SIP messages.",
      "href": "rooms/T17-signaling-planes.html",
      "room": "Signaling, JSEP, and the media plane"
    },
    {
      "front": "RFC 6455",
      "back": "WebSocket handshake and framing over TCP.",
      "href": "rooms/T17-signaling-planes.html",
      "room": "Signaling, JSEP, and the media plane"
    },
    {
      "front": "sip",
      "back": "WebSocket subprotocol identifier for this transport.",
      "href": "rooms/T17-sip-websocket.html",
      "room": "RFC 7118: the sip subprotocol"
    },
    {
      "front": "WSS",
      "back": "Via transport when the WebSocket used TLS.",
      "href": "rooms/T17-sip-websocket.html",
      "room": "RFC 7118: the sip subprotocol"
    },
    {
      "front": "transport=ws",
      "back": "URI transport parameter added by RFC 7118.",
      "href": "rooms/T17-sip-websocket.html",
      "room": "RFC 7118: the sip subprotocol"
    },
    {
      "front": "SIP+D2W",
      "back": "NAPTR service value for a SIP WebSocket server.",
      "href": "rooms/T17-sip-websocket.html",
      "room": "RFC 7118: the sip subprotocol"
    },
    {
      "front": "3478",
      "back": "Default STUN port for UDP and TCP.",
      "href": "rooms/T17-ice-stun-turn.html",
      "room": "ICE, STUN, and TURN"
    },
    {
      "front": "5349",
      "back": "Default port for STUN over TLS and DTLS.",
      "href": "rooms/T17-ice-stun-turn.html",
      "room": "ICE, STUN, and TURN"
    },
    {
      "front": "Host / srflx / relay",
      "back": "Local interface, NAT mapping, TURN address.",
      "href": "rooms/T17-ice-stun-turn.html",
      "room": "ICE, STUN, and TURN"
    },
    {
      "front": "TURN",
      "back": "A controlled relay. One address, multiple peers.",
      "href": "rooms/T17-ice-stun-turn.html",
      "room": "ICE, STUN, and TURN"
    },
    {
      "front": "UDP/TLS/RTP/SAVPF",
      "back": "Proto token for SAVPF over DTLS with UDP.",
      "href": "rooms/T17-dtls-srtp-codecs.html",
      "room": "DTLS-SRTP and the required audio codecs"
    },
    {
      "front": "use_srtp",
      "back": "DTLS extension type 14 for SRTP keying.",
      "href": "rooms/T17-dtls-srtp-codecs.html",
      "room": "DTLS-SRTP and the required audio codecs"
    },
    {
      "front": "Opus clock",
      "back": "a=rtpmap clock 48000 and 2 channels.",
      "href": "rooms/T17-dtls-srtp-codecs.html",
      "room": "DTLS-SRTP and the required audio codecs"
    },
    {
      "front": "PCMU and PCMA",
      "back": "Required G.711 codecs for WebRTC audio.",
      "href": "rooms/T17-dtls-srtp-codecs.html",
      "room": "DTLS-SRTP and the required audio codecs"
    },
    {
      "front": "Step",
      "back": "Use the hop buttons. One caption at a time.",
      "href": "rooms/T17-browser-softphone.html",
      "room": "Browser softphone call flow"
    },
    {
      "front": "101 then INVITE",
      "back": "Open the socket before the SIP request.",
      "href": "rooms/T17-browser-softphone.html",
      "room": "Browser softphone call flow"
    },
    {
      "front": "ACK is not the key",
      "back": "SRTP keys come from DTLS, not from ACK.",
      "href": "rooms/T17-browser-softphone.html",
      "room": "Browser softphone call flow"
    },
    {
      "front": "5737",
      "back": "Example addresses in this ladder are documentation ranges.",
      "href": "rooms/T17-browser-softphone.html",
      "room": "Browser softphone call flow"
    },
    {
      "front": "Kamailio",
      "back": "SIP server. GPLv2+. Registrar, proxy, WebSocket.",
      "href": "rooms/T18-four-roles.html",
      "room": "Four projects, four roles"
    },
    {
      "front": "rtpengine",
      "back": "RTP proxy for use with Kamailio. GNU/Linux.",
      "href": "rooms/T18-four-roles.html",
      "room": "Four projects, four roles"
    },
    {
      "front": "Asterisk",
      "back": "Open source PBX. PJSIP lives in pjsip.conf.",
      "href": "rooms/T18-four-roles.html",
      "room": "Four projects, four roles"
    },
    {
      "front": "FreeSWITCH",
      "back": "SIP profiles, dialplan, media, WebRTC, Event Socket.",
      "href": "rooms/T18-four-roles.html",
      "room": "Four projects, four roles"
    },
    {
      "front": "pjsip.conf",
      "back": "Where res_pjsip accounts are written.",
      "href": "rooms/T18-asterisk-pjsip.html",
      "room": "Asterisk, PJSIP, and the dialplan"
    },
    {
      "front": "extensions.conf",
      "back": "The dialplan file named in the overview.",
      "href": "rooms/T18-asterisk-pjsip.html",
      "room": "Asterisk, PJSIP, and the dialplan"
    },
    {
      "front": "GPL version 2",
      "back": "The license page's stated distribution terms.",
      "href": "rooms/T18-asterisk-pjsip.html",
      "room": "Asterisk, PJSIP, and the dialplan"
    },
    {
      "front": "ARI",
      "back": "Asterisk REST Interface, named next to AMI and AGI.",
      "href": "rooms/T18-asterisk-pjsip.html",
      "room": "Asterisk, PJSIP, and the dialplan"
    },
    {
      "front": "SIP profile",
      "back": "Endpoint configuration the manual teaches.",
      "href": "rooms/T18-freeswitch-core.html",
      "room": "FreeSWITCH profiles, dialplan, and WebRTC"
    },
    {
      "front": "Event Socket",
      "back": "Programming interface named in the manual.",
      "href": "rooms/T18-freeswitch-core.html",
      "room": "FreeSWITCH profiles, dialplan, and WebRTC"
    },
    {
      "front": "Two editions",
      "back": "Open source, and enterprise from SignalWire.",
      "href": "rooms/T18-freeswitch-core.html",
      "room": "FreeSWITCH profiles, dialplan, and WebRTC"
    },
    {
      "front": "SWML",
      "back": "Hosted call-control markup on the SignalWire page.",
      "href": "rooms/T18-freeswitch-core.html",
      "room": "FreeSWITCH profiles, dialplan, and WebRTC"
    },
    {
      "front": "GPLv2+",
      "back": "The license the Kamailio home page states.",
      "href": "rooms/T18-kamailio-proxy.html",
      "room": "Kamailio as the SIP server"
    },
    {
      "front": "Registrar",
      "back": "A role the page lists, with location service.",
      "href": "rooms/T18-kamailio-proxy.html",
      "room": "Kamailio as the SIP server"
    },
    {
      "front": "WebSocket",
      "back": "Listed as support for WebRTC.",
      "href": "rooms/T18-kamailio-proxy.html",
      "room": "Kamailio as the SIP server"
    },
    {
      "front": "In front of a PBX",
      "back": "The page names Asterisk and FreeSWITCH.",
      "href": "rooms/T18-kamailio-proxy.html",
      "room": "Kamailio as the SIP server"
    },
    {
      "front": "With Kamailio",
      "back": "The README's intended SIP proxy.",
      "href": "rooms/T18-rtpengine-map.html",
      "room": "rtpengine and the integration map"
    },
    {
      "front": "Userspace fallback",
      "back": "If the kernel module is unavailable.",
      "href": "rooms/T18-rtpengine-map.html",
      "room": "rtpengine and the integration map"
    },
    {
      "front": "ICE bridge",
      "back": "Between ICE-aware and ICE-unaware agents.",
      "href": "rooms/T18-rtpengine-map.html",
      "room": "rtpengine and the integration map"
    },
    {
      "front": "RTP and SRTP",
      "back": "The README lists a bridge between them.",
      "href": "rooms/T18-rtpengine-map.html",
      "room": "rtpengine and the integration map"
    },
    {
      "front": "Not legal advice",
      "back": "Study notes. The statute and the agency page win.",
      "href": "rooms/T19-not-legal-advice.html",
      "room": "How to read a compliance page"
    },
    {
      "front": "200 OK",
      "back": "SIP success. Not a compliance result.",
      "href": "rooms/T19-not-legal-advice.html",
      "room": "How to read a compliance page"
    },
    {
      "front": "Confirm",
      "back": "No URL when the link was not opened.",
      "href": "rooms/T19-not-legal-advice.html",
      "room": "How to read a compliance page"
    },
    {
      "front": "Separate planes",
      "back": "Voice identity, emergency location, and SMS campaigns are different documents.",
      "href": "rooms/T19-not-legal-advice.html",
      "room": "How to read a compliance page"
    },
    {
      "front": "Identity",
      "back": "SIP header for the STIR signature. RFC 8224.",
      "href": "rooms/T19-stir-shaken.html",
      "room": "STIR and SHAKEN"
    },
    {
      "front": "PASSporT",
      "back": "Signed token. RFC 8225.",
      "href": "rooms/T19-stir-shaken.html",
      "room": "STIR and SHAKEN"
    },
    {
      "front": "SHAKEN",
      "back": "Industry mechanism described on the STI-GA page.",
      "href": "rooms/T19-stir-shaken.html",
      "room": "STIR and SHAKEN"
    },
    {
      "front": "toKENs",
      "back": "The STI-GA page writes SHAKEN out with that word.",
      "href": "rooms/T19-stir-shaken.html",
      "room": "STIR and SHAKEN"
    },
    {
      "front": "PL 115-127",
      "back": "Kari's Law. Direct 911 dialing from MLTS.",
      "href": "rooms/T19-e911-statutes.html",
      "room": "Kari's Law, RAY BAUM'S Act, and SIP location"
    },
    {
      "front": "Section 506",
      "back": "Dispatchable location proceeding, including MLTS.",
      "href": "rooms/T19-e911-statutes.html",
      "room": "Kari's Law, RAY BAUM'S Act, and SIP location"
    },
    {
      "front": "RFC 6442",
      "back": "How SIP conveys location.",
      "href": "rooms/T19-e911-statutes.html",
      "room": "Kari's Law, RAY BAUM'S Act, and SIP location"
    },
    {
      "front": "RFC 6881",
      "back": "Emergency calling BCP. Not a statute.",
      "href": "rooms/T19-e911-statutes.html",
      "room": "Kari's Law, RAY BAUM'S Act, and SIP location"
    },
    {
      "front": "10DLC",
      "back": "A2P messaging channel on the registry page.",
      "href": "rooms/T19-ten-dlc.html",
      "room": "10DLC is a messaging channel"
    },
    {
      "front": "CSP",
      "back": "Campaign service provider. The page says to be one before registering.",
      "href": "rooms/T19-ten-dlc.html",
      "room": "10DLC is a messaging channel"
    },
    {
      "front": "Campaign ID",
      "back": "Given to the connectivity partner, on that page.",
      "href": "rooms/T19-ten-dlc.html",
      "room": "10DLC is a messaging channel"
    },
    {
      "front": "Not SIP",
      "back": "Do not add it to a voice INVITE and call it done.",
      "href": "rooms/T19-ten-dlc.html",
      "room": "10DLC is a messaging channel"
    },
    {
      "front": "Sort first",
      "back": "SIP, media, identity, location, or messaging.",
      "href": "rooms/T19-compliance-troubleshoot.html",
      "room": "Troubleshooting without a legal conclusion"
    },
    {
      "front": "No live 911",
      "back": "Use the provider test. This lab is not that test.",
      "href": "rooms/T19-compliance-troubleshoot.html",
      "room": "Troubleshooting without a legal conclusion"
    },
    {
      "front": "Identity header",
      "back": "RFC 8224. Presence is not a legal conclusion.",
      "href": "rooms/T19-compliance-troubleshoot.html",
      "room": "Troubleshooting without a legal conclusion"
    },
    {
      "front": "Not advice",
      "back": "Counsel and the current rule outrank the quiz.",
      "href": "rooms/T19-compliance-troubleshoot.html",
      "room": "Troubleshooting without a legal conclusion"
    },
    {
      "front": "Citation",
      "back": "The glossary row's authority.",
      "href": "rooms/T20-glossary-map.html",
      "room": "Glossary and the mind map"
    },
    {
      "front": "Mind map",
      "back": "Topics. Not a network.",
      "href": "rooms/T20-glossary-map.html",
      "room": "Glossary and the mind map"
    },
    {
      "front": "Confirm",
      "back": "No link when the URL was not opened.",
      "href": "rooms/T20-glossary-map.html",
      "room": "Glossary and the mind map"
    },
    {
      "front": "Next track",
      "back": "Use the map to pick WebRTC, the open core, or compliance.",
      "href": "rooms/T20-glossary-map.html",
      "room": "Glossary and the mind map"
    },
    {
      "front": "SIPREC",
      "back": "Fork a session to a recorder. RFC 7866.",
      "href": "rooms/T20-sister-systems.html",
      "room": "Sister technologies around the session"
    },
    {
      "front": "WFM",
      "back": "Schedules. SIP only shows the symptom, such as 480.",
      "href": "rooms/T20-sister-systems.html",
      "room": "Sister technologies around the session"
    },
    {
      "front": "CRM",
      "back": "Events and numbers. Not a proxy.",
      "href": "rooms/T20-sister-systems.html",
      "room": "Sister technologies around the session"
    },
    {
      "front": "Twilio docs",
      "back": "API reference and tutorials. Confirm product names there.",
      "href": "rooms/T20-sister-systems.html",
      "room": "Sister technologies around the session"
    },
    {
      "front": "pjsip.conf",
      "back": "Asterisk SIP resources.",
      "href": "rooms/T20-config-troubleshoot.html",
      "room": "Configuration and troubleshooting seams"
    },
    {
      "front": "extensions.conf",
      "back": "Asterisk dialplan.",
      "href": "rooms/T20-config-troubleshoot.html",
      "room": "Configuration and troubleshooting seams"
    },
    {
      "front": "101 first",
      "back": "No WebSocket, no SIP.",
      "href": "rooms/T20-config-troubleshoot.html",
      "room": "Configuration and troubleshooting seams"
    },
    {
      "front": "Plane",
      "back": "Name signaling, media, identity, location, or messaging.",
      "href": "rooms/T20-config-troubleshoot.html",
      "room": "Configuration and troubleshooting seams"
    },
    {
      "front": "CUCM trunk",
      "back": "SIP toward the SBC. Profile is CUCM's object.",
      "href": "rooms/T20-bridges-map.html",
      "room": "Bridges from enterprise UC to open platforms"
    },
    {
      "front": "Local Gateway",
      "back": "Webex Calling premises PSTN role.",
      "href": "rooms/T20-bridges-map.html",
      "room": "Bridges from enterprise UC to open platforms"
    },
    {
      "front": "Open side",
      "back": "Kamailio, Asterisk, or FreeSWITCH, per their pages.",
      "href": "rooms/T20-bridges-map.html",
      "room": "Bridges from enterprise UC to open platforms"
    },
    {
      "front": "Not inside CUCM",
      "back": "The open dialplan stays on the open server.",
      "href": "rooms/T20-bridges-map.html",
      "room": "Bridges from enterprise UC to open platforms"
    },
    {
      "front": "ARI",
      "back": "Asterisk REST Interface, named with AMI and AGI.",
      "href": "rooms/T20-future-hooks.html",
      "room": "Integration hooks that are already named"
    },
    {
      "front": "Event Socket",
      "back": "FreeSWITCH programming path in the manual.",
      "href": "rooms/T20-future-hooks.html",
      "room": "Integration hooks that are already named"
    },
    {
      "front": "SIPREC",
      "back": "Recording hook. RFC 7866.",
      "href": "rooms/T20-future-hooks.html",
      "room": "Integration hooks that are already named"
    },
    {
      "front": "No live connector",
      "back": "This repository does not run the PBX or the registry.",
      "href": "rooms/T20-future-hooks.html",
      "room": "Integration hooks that are already named"
    }
  ]
}