Session Initiation Protocol (SIP) Basic Call Flow Examples
RFC 3665 содержит проверенные рабочей группой примеры базовых потоков сигнализации SIP, основанные на SIP версии 2.0 из RFC 3261 и использовании SDP по RFC 3264. Он охватывает регистрацию SIP, установление и завершение сеансов напрямую и через прокси-серверы, множественную аутентификацию прокси, отказ прокси, SIP ALG, перенаправление, re-INVITE при смене IP-адреса и несколько неуспешных сценариев. Для каждого сценария приведены диаграммы потоков и подробности сообщений. Примеры иллюстрируют практику применения методов, заголовков и параметров SIP, но не предписывают точное копирование показанных потоков.
RFC3665/part-001
Рабочая группа сети A. Johnston
Запрос комментариев: 3665 MCI
BCP: 75 S. Donovan
Категория: Лучшая современная практика R. Sparks
C. Cunningham
dynamicsoft
K. Summers
Sonus
Декабрь 2003
Примеры базовых потоков вызовов протокола инициации сеансов (SIP)
Статус этого меморандума
Этот документ устанавливает одну из лучших современных практик
Интернета для интернет-сообщества и запрашивает обсуждение и
предложения по улучшению. Распространение этого меморандума не
ограничено.
Уведомление об авторских правах
Copyright (C) The Internet Society (2003). All Rights Reserved.
Аннотация
Этот документ приводит примеры потоков вызовов протокола инициации
сеансов (SIP). Элементы этих потоков вызовов включают SIP User
Agents и Clients, SIP Proxy и Redirect Servers. Сценарии включают
регистрацию SIP и установление сеанса SIP. Показаны диаграммы
потоков вызовов и сведения о сообщениях.
Johnston, et al. Лучшая современная практика [Страница 1]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
Содержание
1. Обзор . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Общие допущения. . . . . . . . . . . . . . . . . . . . . 3
1.2. Условные обозначения для потоков сообщений . . . . . . . 3
1.3. Допущения протокола SIP . . . . . . . . . . . . . . . . 4
2. Регистрация SIP . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Успешная новая регистрация. . . . . . . . . . . . . . . 5
2.2. Обновление списка контактов . . . . . . . . . . . . . . 7
2.3. Запрос текущего списка контактов . . . . . . . . . . . 8
2.4. Отмена регистрации . . . . . . . . . . . . . . . . . . 9
2.5. Неуспешная регистрация. . . . . . . . . . . . . . . . 10
3. Установление сеанса SIP. . . . . . . . . . . . . . . . . . . 12
3.1. Успешное установление сеанса . . . . . . . . . . . . . 12
3.2. Установление сеанса через два прокси-сервера. . . . . . 15
3.3. Сеанс с аутентификацией на нескольких прокси-серверах . 26
3.4. Успешный сеанс при отказе прокси-сервера. . . . . . . . 37
3.5. Сеанс через SIP ALG. . . . . . . . . . . . . . . . . . 46
3.6. Сеанс через серверы перенаправления и прокси с SDP в ACK 54
3.7. Сеанс с повторным INVITE (смена IP-адреса) . . . . . . . 61
3.8. Неуспешный сценарий: нет ответа . . . . . . . . . . . . 67
3.9. Неуспешный сценарий: занято . . . . . . . . . . . . . . 75
3.10. Неуспешный сценарий: нет ответа от User Agent . . . . . 80
3.11. Неуспешный сценарий: временно недоступен . . . . . . . 85
4. Вопросы безопасности. . . . . . . . . . . . . . . . . . . . 91
5. Ссылки . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.1. Нормативные ссылки . . . . . . . . . . . . . . . . . . 91
5.2. Информационные ссылки . . . . . . . . . . . . . . . . . 91
6. Заявление об интеллектуальной собственности. . . . . . . . . 91
7. Благодарности. . . . . . . . . . . . . . . . . . . . . . . . 92
8. Адреса авторов . . . . . . . . . . . . . . . . . . . . . . . 93
9. Полное заявление об авторских правах . . . . . . . . . . . . 94
1. Обзор
Потоки вызовов, показанные в этом документе, были разработаны при
проектировании сети IP-коммуникаций SIP. Они представляют пример
минимального набора функциональных возможностей.
Авторы надеются, что этот документ окажется полезным как для
реализаторов SIP, так и для разработчиков и исследователей протоколов
и поможет достижению цели стандартной реализации RFC 3261 [1]. Эти
потоки представляют тщательно проверенные и рассмотренные рабочей
группой сценарии самых базовых примеров в качестве дополнения к
спецификациям.
Johnston, et al. Лучшая современная практика [Страница 2]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
Эти потоки вызовов основаны на текущей версии 2.0 SIP из RFC 3261
[1] с использованием SDP, описанным в RFC 3264 [2]. Другие RFC также
составляют стандарт SIP, но в этом наборе базовых потоков вызовов не
используются.
Примеры потоков вызовов взаимодействия SIP с PSTN через шлюзы
содержатся в сопутствующем документе RFC 3666 [5].
Ключевые слова «MUST», «MUST NOT», «REQUIRED», «SHALL», «SHALL NOT»,
«SHOULD», «SHOULD NOT», «RECOMMENDED», «MAY» и «OPTIONAL» в этом
документе следует толковать так, как описано в BCP 14, RFC 2119 [4].
1.1. Общие допущения
Потоки вызовов в этом документе основываются на ряде архитектурных,
сетевых и протокольных допущений. Обратите внимание, что эти
допущения не являются требованиями. Они изложены в этом разделе,
чтобы их можно было учитывать и чтобы облегчить понимание примеров
потоков вызовов.
Аутентификация SIP User Agents в этих примерах потоков вызовов
выполняется с использованием HTTP Digest, как определено в [1] и
[3].
Некоторые Proxy Servers в этих потоках вызовов вставляют заголовки
Record-Route в запросы, чтобы гарантировать своё присутствие в пути
сигнализации для будущих обменов сообщениями.
В этих потоках для транспорта показаны TCP, TLS и UDP. Подробности о
вопросах транспорта для SIP см. в обсуждении в RFC 3261.
1.2. Условные обозначения для потоков сообщений
Пунктирные линии (---) обозначают сообщения сигнализации, которые
обязательны для сценария вызова. Эти сообщения могут быть
сигнализацией SIP или PSTN. Стрелка указывает направление потока
сообщения.
Двойные пунктирные линии (===) обозначают пути передачи медиаданных
между сетевыми элементами.
Сообщения со скобками вокруг их имени обозначают необязательные
сообщения.
Сообщения обозначаются на рисунках как F1, F2 и т. д. Это отсылает к
сведениям о сообщениях в списке, следующем за рисунком. Комментарии в
сведениях о сообщениях показаны в следующем виде:
/* Comments. */
Johnston, et al. Лучшая современная практика [Страница 3]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
1.3. Допущения протокола SIP
Этот документ не предписывает потоки в точности в показанном виде;
напротив, потоки иллюстрируют принципы лучшей практики. Они являются
применениями лучшей практики (порядок, синтаксис, выбор возможностей
для данной цели, обработка ошибок) методов, заголовков и параметров
SIP. ВАЖНО: реализатор не должен копировать точные потоки из этого
документа как есть из-за конкретных некорректных характеристик,
введённых в документ для удобства и перечисленных ниже. Иными
словами, базовые потоки представляют хорошо рассмотренные примеры
использования SIP, являющиеся наилучшей общей практикой согласно
консенсусу IETF.
Для упрощения чтения и редактирования документа между некоторыми
примерами и фактическими сообщениями SIP имеется ряд различий.
Например, ответы HTTP Digest не являются фактическими кодировками
MD5. Call-ID часто повторяются, а счётчики CSeq часто начинаются с 1.
Поля заголовков обычно показаны в одном и том же порядке. Обычно
показан только минимальный требуемый набор полей заголовков; другие,
которые обычно присутствовали бы, такие как Accept, Supported, Allow
и т. д., не показаны.
Участники:
Элемент Отображаемое имя URI IP-адрес
------- ---------------- --- ----------
User Agent Alice alice@atlanta.example.com 192.0.2.101
User Agent Bob bob@biloxi.example.com 192.0.2.201
User Agent bob@chicago.example.com 192.0.2.100
Proxy Server ss1.atlanta.example.com 192.0.2.111
Proxy/Registrar ss2.biloxi.example.com 192.0.2.222
Proxy Server ss3.chicago.example.com 192.0.2.233
ALG alg1.atlanta.example.com 192.0.2.128
2. Регистрация SIP
Регистрация связывает Contact URI конкретного устройства с Address of
Record (AOR) пользователя SIP.
Johnston, et al. Лучшая современная практика [Страница 4]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
2.1. Успешная новая регистрация
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 200 OK F4 |
|<------------------------------|
| |
Bob отправляет запрос SIP REGISTER на SIP Server. Запрос включает
список контактов пользователя. Этот поток показывает использование
HTTP Digest для аутентификации с применением транспорта TLS.
Транспорт TLS используется из-за отсутствия защиты целостности в HTTP
Digest и опасности захвата регистрации без неё, как описано в RFC 3261
[1]. SIP Server направляет Bob запрос проверки. Bob вводит свои
действительные ID пользователя и пароль. SIP Client Bob шифрует
информацию пользователя в соответствии с запросом проверки, выданным
SIP Server, и отправляет ответ на SIP Server. SIP Server проверяет
учётные данные пользователя. Он регистрирует пользователя в своей
базе данных контактов и возвращает ответ (200 OK) SIP Client Bob.
Ответ включает текущий список контактов пользователя в заголовках
Contact. Показанный формат аутентификации — HTTP digest.
Предполагается, что Bob ранее не регистрировался на этом Server.
Сведения о сообщениях
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 5]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
F2 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=ja743ks76zlflH
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Authorization: Digest username="bob", realm="atlanta.example.com"
nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="dfe56131d1958046689d83306477ecc"
Content-Length: 0
F4 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=ja743ks76zlflH
To: Bob <sips:bob@biloxi.example.com>;tag=37GkEhwl6
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 6]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
2.2. Обновление списка контактов
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob хочет обновить список адресов, на которые SIP Server будет
перенаправлять или пересылать запросы INVITE.
Bob отправляет запрос SIP REGISTER на SIP Server. Запрос Bob включает
обновлённый список контактов. Поскольку пользователь уже
аутентифицировался на Server, пользователь предоставляет учётные
данные для аутентификации вместе с запросом, и Server не направляет
ему запрос проверки. SIP Server проверяет учётные данные пользователя.
Он регистрирует пользователя в своей базе данных контактов, обновляет
список контактов пользователя и возвращает ответ (200 OK) SIP Client
Bob. Ответ включает текущий список контактов пользователя в заголовках
Contact.
Сведения о сообщениях
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: mailto:bob@biloxi.example.com
Authorization: Digest username="bob", realm="atlanta.example.com",
qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="",
uri="sips:ss2.biloxi.example.com",
response="71ba27c64bd01de719686aa4590d5824"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=34095828jh
Johnston, et al. Лучшая современная практика [Страница 7]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Contact: <mailto:bob@biloxi.example.com>;expires=4294967295
Content-Length: 0
2.3. Запрос текущего списка контактов
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob отправляет серверу Proxy запрос регистрации, не содержащий
заголовков Contact, тем самым указывая, что пользователь хочет запросить у
сервера текущий список контактов пользователя. Поскольку пользователь уже
прошёл аутентификацию на сервере, пользователь предоставляет с запросом
учётные данные аутентификации, и сервер не отправляет ему запрос на
аутентификацию. SIP-сервер проверяет учётные данные пользователя. Сервер
возвращает ответ (200 OK), включающий текущий список регистраций
пользователя в заголовках Contact.
Сведения о сообщениях
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="",
uri="sips:ss2.biloxi.example.com",
response="aa7ab4678258377c6f7d4be6087e2f60"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
Johnston, et al. Лучшая современная практика [Страница 8]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=jqoiweu75
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Contact: <mailto:bob@biloxi.example.com>;expires=4294967295
Content-Length: 0
2.4. Отмена регистрации
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob хочет отменить свою регистрацию на SIP-сервере. Bob отправляет
SIP-серверу SIP-запрос REGISTER. В запросе задан срок действия 0, и он
применяется ко всем существующим контактным адресам. Поскольку пользователь
уже прошёл аутентификацию на сервере, пользователь предоставляет с запросом
учётные данные аутентификации, и сервер не отправляет ему запрос на
аутентификацию. SIP-сервер проверяет учётные данные пользователя. Он
очищает список контактов пользователя и возвращает SIP-клиенту Bob ответ
(200 OK).
Сведения о сообщениях
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Expires: 0
Contact: *
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="ff0437c51696f9a76244f0cf1dbabbea"
Content-Length: 0
F2 200 OK SIP Server -> Bob
Johnston, et al. Лучшая современная практика [Страница 9]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1418nmdsrf
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Content-Length: 0
2.5. Неуспешная регистрация
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 401 Unauthorized F4 |
|<------------------------------|
| |
Bob отправляет SIP-серверу SIP-запрос REGISTER. SIP-сервер направляет Bob
запрос на аутентификацию. Bob вводит свой идентификатор пользователя и
пароль. SIP-клиент Bob шифрует информацию пользователя в соответствии с
запросом на аутентификацию, выданным SIP-сервером, и отправляет ответ
SIP-серверу. SIP-сервер пытается проверить учётные данные пользователя, но
они недействительны (пароль пользователя не совпадает с паролем, заданным
для учётной записи пользователя). Сервер возвращает SIP-клиенту Bob ответ
(401 Unauthorized).
Сведения о сообщениях
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 10]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
F2 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f1cec4341ae6ca9c8e88df84be55a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=JueHGuidj28dfga
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="61f8470ceb87d7ebf508220214ed438b"
Content-Length: 0
/* The response above encodes the incorrect password */
F4 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=JueHGuidj28dfga
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 11]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
3. Установление сеанса SIP
В этом разделе подробно описано установление сеанса между двумя агентами
пользователя SIP (UA): Alice и Bob. Предполагается, что Alice
(sip:alice@atlanta.example.com) и Bob (sip:bob@biloxi.example.com) являются
SIP-телефонами или устройствами с поддержкой SIP. Успешные вызовы показывают
начальную сигнализацию, обмен информацией о медиа в виде полезных нагрузок
SDP, установление медиасеанса и, наконец, завершение вызова.
Proxy-серверы используют HTTP Digest authentication для аутентификации
вызывающей стороны Alice. Предполагается, что Bob зарегистрировался на
Proxy-сервере Proxy 2 согласно разделу 2, чтобы иметь возможность принимать
вызовы через Proxy.
3.1. Успешное установление сеанса
Alice Bob
| |
| INVITE F1 |
|----------------------->|
| 180 Ringing F2 |
|<-----------------------|
| |
| 200 OK F3 |
|<-----------------------|
| ACK F4 |
|----------------------->|
| Двунаправленный RTP- |
| медиапоток |
|<======================>|
| |
| BYE F5 |
|<-----------------------|
| 200 OK F6 |
|----------------------->|
| |
В этом сценарии Alice непосредственно устанавливает вызов с Bob.
Сведения о сообщениях
F1 INVITE Alice -> Bob
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Johnston, et al. Лучшая современная практика [Страница 12]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 180 Ringing Bob -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Length: 0
F3 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Лучшая современная практика [Страница 13]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
F4 ACK Alice -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bd5
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. Note that the CSeq is NOT 2, since
Alice and Bob maintain their own independent CSeq counts.
(The INVITE was request 1 generated by Alice, and the BYE is
request 1 generated by Bob) */
F5 BYE Bob -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=8321234356
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F6 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=8321234356
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 14]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
3.2. Установление сеанса через два Proxy-сервера
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 407 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| INVITE F5 | |
| 100 F6 |--------------->| INVITE F7 |
|<---------------| 100 F8 |--------------->|
| |<---------------| |
| | | 180 F9 |
| | 180 F10 |<---------------|
| 180 F11 |<---------------| |
|<---------------| | 200 F12 |
| | 200 F13 |<---------------|
| 200 F14 |<---------------| |
|<---------------| | |
| ACK F15 | | |
|--------------->| ACK F16 | |
| |--------------->| ACK F17 |
| | |--------------->|
| Двунаправленный RTP-медиапоток |
|<================================================>|
| | | BYE F18 |
| | BYE F19 |<---------------|
| BYE F20 |<---------------| |
|<---------------| | |
| 200 F21 | | |
|--------------->| 200 F22 | |
| |--------------->| 200 F23 |
| | |--------------->|
| | | |
В этом сценарии Alice выполняет вызов Bob с использованием двух прокси,
Proxy 1 и Proxy 2. Начальный INVITE (F1) содержит предзагруженный
заголовок Route с адресом Proxy 1 (Proxy 1 настроен как прокси по
умолчанию для исходящих сообщений Alice). Запрос не содержит учётных
данных Authorization, требуемых Proxy 1, поэтому отправляется ответ 407
Proxy Authorization, содержащий информацию аутентификационного вызова.
Затем отправляется новый INVITE (F4), содержащий правильные учётные
данные, и вызов продолжается. Вызов завершается, когда Bob отключается,
инициируя сообщение BYE.
Johnston, et al. Лучшая современная практика [Страница 15]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
Proxy 1 вставляет заголовок Record-Route в сообщение INVITE, чтобы
гарантировать своё присутствие во всех последующих обменах сообщениями.
Proxy 2 также добавляет себя в заголовок Record-Route. И ACK (F15), и
BYE (F18) имеют заголовок Route.
Сведения о сообщениях
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 challenges Alice for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=3flal12sf
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f84f1cec41e6cbe5aea9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 16]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F3 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=3flal12sf
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice responds be re-sending the INVITE with authentication
credentials in it. */
F4 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy
2. Client for Alice prepares to receive data on port 49172 from the
network. */
Johnston, et al. Лучшая современная практика [Страница 17]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F5 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F6 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F7 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
Johnston, et al. Лучшая современная практика [Страница 18]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F9 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 19]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F10 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F11 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F12 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Johnston, et al. Лучшая современная практика [Страница 20]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F14 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Лучшая современная практика [Страница 21]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F15 ACK Alice -> Proxy 1
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F16 ACK Proxy 1 -> Proxy 2 ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F17 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Johnston, et al. Лучшая современная практика [Страница 22]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. */
/* Again, note that the CSeq is NOT 3. Alice and Bob maintain
their own separate CSeq counts */
F18 BYE Bob -> Proxy 2
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F19 BYE Proxy 2 -> Proxy 1
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
Route: <sip:ss1.atlanta.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 23]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F20 BYE Proxy 1 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 68
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F21 200 OK Alice -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Proxy 1 -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.101
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 24]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 25]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
3.3. Сеанс с аутентификацией на нескольких прокси
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|----------->| | |
| 407 Proxy Authorization Required F2 |
|<-----------| | |
| ACK F3 | | |
|----------->| | |
| INVITE F4 | | |
|----------->| | |
| 100 F5 | | |
|<-----------| INVITE F6 | |
| |---------->| |
| | 407 Proxy Authorization Required F7
| |<----------| |
| | ACK F8 | |
| |---------->| |
| 407 Proxy Authorization Required F9 |
|<-----------| | |
| ACK F10 | | |
|----------->| | |
| INVITE F11| | |
|----------->| | |
| 100 F12 | | |
|<-----------| INVITE F13| |
| |---------->| |
| | 100 F14 | |
| |<----------| INVITE F15 |
| | |------------>|
| | | 200 OK F16 |
| | 200 OK F17|<------------|
| 200 OK F18 |<----------| |
|<-----------| | |
| ACK F19 | | |
|----------->| ACK F20 | |
| |---------->| ACK F21 |
| | |------------>|
| RTP Media Path |
|<====================================>|
В этом сценарии Alice устанавливает вызов с Bob с использованием двух прокси
Proxy 1 и Proxy 2. Alice располагает действительными учётными данными в
обоих доменах. Поскольку первоначальный INVITE (F1) не содержит учётных
данных Authorization, требуемых Proxy 1, отправляется ответ 407 Proxy
Authorization, содержащий сведения запроса аутентификации. Затем отправляется
новый INVITE (F4), содержащий корректные учётные данные, и вызов продолжается
после того, как Proxy 2 запрашивает и получает действительные учётные данные.
Вызов завершается, когда Bob разрывает соединение, инициируя сообщение BYE.
Johnston, et al. Лучшая современная практика [Страница 26]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
Proxy 1 вставляет заголовок Record-Route в сообщение INVITE, чтобы
обеспечить своё присутствие во всех последующих обменах сообщениями. Proxy
2 также добавляет себя в заголовок Record-Route.
Подробности сообщений
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 challenges Alice for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=876321
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="wf84f1cczx41ae6cbeaea9ce88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 27]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F3 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Max-Forwards: 70
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=876321
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice responds be re-sending the INVITE with authentication
credentials in it. The same Call-ID is used, so the CSeq is
increased. */
F4 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy
2. Client for Alice prepares to receive data on port 49172 from the
network. */
Johnston, et al. Лучшая современная практика [Страница 28]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
F5 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F6 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 challenges Alice for authentication */
F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
Johnston, et al. Лучшая современная практика [Страница 29]
RFC 3665 SIP Basic Call Flow Examples Декабрь 2003
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F8 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
/* Proxy 1 forwards the challenge to Alice for authentication from
Proxy 2 */
F9 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Best Current Practice [Page 30]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Length: 0
/* Alice отвечает, повторно отправляя INVITE с учетными данными для
Proxy 1 И Proxy 2. */
F11 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 находит учетные данные Alice и авторизует Alice, пересылая
INVITE в Proxy. */
Johnston, et al. Best Current Practice [Page 31]
RFC 3665 SIP Basic Call Flow Examples December 2003
F12 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Content-Length: 0
F13 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 находит учетные данные Alice и авторизует Alice, пересылая
INVITE Bob. */
Johnston, et al. Best Current Practice [Page 32]
RFC 3665 SIP Basic Call Flow Examples December 2003
F14 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Content-Length: 0
F15 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Bob немедленно отвечает на вызов */
Johnston, et al. Best Current Practice [Page 33]
RFC 3665 SIP Basic Call Flow Examples December 2003
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F17 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
Johnston, et al. Best Current Practice [Page 34]
RFC 3665 SIP Basic Call Flow Examples December 2003
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F19 ACK Alice -> Proxy 1
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
Johnston, et al. Best Current Practice [Page 35]
RFC 3665 SIP Basic Call Flow Examples December 2003
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F20 ACK Proxy 1 -> Proxy 2
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Contact: <sip:bob@client.biloxi.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F21 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 36]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.4. Успешный сеанс при отказе прокси-сервера
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| INVITE F2 | | |
|--------------->| | |
| INVITE F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| | |
| INVITE F5 | | |
|--------------->| | |
| INVITE F6 | | |
|--------------->| | |
| INVITE F7 | | |
|--------------->| | |
| INVITE F8 | |
|-------------------------------->| |
| 407 F9 | |
|<--------------------------------| |
| ACK F10 | |
|-------------------------------->| |
| INVITE F11 | |
|-------------------------------->| INVITE F12 |
| 100 F13 |--------------->|
|<--------------------------------| |
| | 180 F14 |
| 180 F15 |<---------------|
|<--------------------------------| |
| | 200 F16 |
| 200 F17 |<---------------|
|<--------------------------------| |
| ACK F18 | |
|-------------------------------->| ACK F19 |
| |--------------->|
| RTP-медиа в обоих направлениях |
|<================================================>|
| | BYE F20 |
| BYE F21 |<---------------|
|<--------------------------------| |
| 200 F22 | |
|-------------------------------->| 200 F23 |
| |--------------->|
| | |
Johnston, et al. Best Current Practice [Page 37]
RFC 3665 SIP Basic Call Flow Examples December 2003
В этом сценарии Alice успешно устанавливает вызов с Bob через
прокси-сервер. Alice настроена на основной SIP-прокси-сервер Proxy 1 и
резервный SIP-прокси-сервер Proxy 2 (либо может использовать записи DNS
SRV для обнаружения Proxy 1 и Proxy 2). Alice располагает действительными
учетными данными для обоих доменов. Proxy 1 не работает и не отвечает на
INVITE (он достижим, но не отвечает). Затем Alice успешно устанавливает
вызов с Bob, используя Proxy 2.
Сведения о сообщениях
F1 INVITE Alice -> Proxy 1 INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK465b6d
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Alice -> Proxy 1
То же, что сообщение F1
F3 INVITE Alice -> Proxy 1
То же, что сообщение F1
F4 INVITE Alice -> Proxy 1
То же, что сообщение F1
Johnston, et al. Лучшая современная практика [Страница 38]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
F5 INVITE Alice -> Proxy 1
То же, что сообщение F1
F6 INVITE Alice -> Proxy 1
То же, что сообщение F1
F7 INVITE Alice -> Proxy 1
То же, что сообщение F1
/* Alice прекращает ожидание не отвечающего прокси */
F8 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 запрашивает у Alice аутентификацию */
F9 407 Proxy Authorization Required Proxy 2 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=2421452
Johnston, et al. Лучшая современная практика [Страница 39]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=2421452
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice отвечает, повторно отправляя INVITE с учетными данными аутентификации. */
F11 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="8a880c919d1a52f20a1593e228adf599"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Лучшая современная практика [Страница 40]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
/* Proxy 2 принимает учетные данные и пересылает INVITE Bob.
Клиент Alice готовится принимать данные из сети на порту 49172.
*/
F12 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F14 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Johnston, et al. Лучшая современная практика [Страница 41]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F15 180 Ringing Proxy 2 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Лучшая современная практика [Страница 42]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
F17 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 ACK Alice -> Proxy 2
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F19 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
Johnston, et al. Лучшая современная практика [Страница 43]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
CSeq: 2 ACK
Content-Length: 0
/* Между Alice и Bob устанавливаются RTP-потоки */
/* Bob завершает вызов с Alice. */
F20 BYE Bob -> Proxy 2
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F21 BYE Proxy 2 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Alice -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 44]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 45]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
3.5. Сеанс через SIP ALG
Alice ALG Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 200 F9 |
| | 200 F10 |<---------------|
| 200 F11 |<---------------| |
|<---------------| |
| ACK F12 | |
|--------------->| ACK F13 |
| |-------------------------------->|
| RTP-медиа | Двунаправленное RTP-медиа |
|<==============>|<===============================>|
| BYE F14 | |
|--------------->| BYE F15 |
| |-------------------------------->|
| | 200 F16 |
| 200 F17 |<--------------------------------|
|<---------------| |
| | |
Alice устанавливает вызов с Bob через ALG (Application Layer Gateway) и SIP-прокси. Маршрутизация через ALG выполняется с использованием предварительно загруженного заголовка Route в INVITE F1. Обратите внимание, что настройка медиапотоков не является сквозной: ALG завершает оба медиапотока и соединяет их мостом. Это выполняется ALG посредством изменения SDP в сообщениях INVITE (F1) и 200 OK (F10), а также, возможно, в любых сообщениях 18x или ACK, содержащих SDP.
Помимо прохождения межсетевого экрана этот Back-to-Back User Agent (B2BUA) мог бы использоваться как часть службы анонимизации (в которой вся идентифицирующая информация об Alice была бы удалена) либо для преобразования медиакодека, например для преобразования PCM из μ-law в A-law при международном вызове.
Также обратите внимание, что Proxy 2 не добавляет Record-Route в этом потоке вызова.
Johnston, et al. Лучшая современная практика [Страница 46]
RFC 3665 Основные примеры потоков вызовов SIP Декабрь 2003
Сведения о сообщениях
F1 INVITE Alice -> SIP ALG
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Route: <sip:alg1.atlanta.example.com;lr>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:bob@biloxi.example.com",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Клиент Alice подготавливается к приёму данных из сети на порту 49172. */
F2 INVITE SIP ALG -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
Johnston, et al. Лучшая современная практика [Страница 47]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:bob@biloxi.example.com",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying SIP ALG -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
/* SIP ALG подготавливается к проксированию данных с порта 192.0.2.128/2000
на 192.0.2.101/49172. Proxy 2 использует функцию службы Location Service,
чтобы определить, где находится Bob. На основе анализа местоположения вызов
перенаправляется Bob. */
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Johnston, et al. Лучшая современная практика [Страница 48]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> SIP ALG
SIP/2.0 100 Trying
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> SIP ALG
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Johnston, et al. Лучшая современная практика [Страница 49]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing SIP ALG -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F9 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
Johnston, et al. Лучшая современная практика [Страница 50]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy 2 -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
Johnston, et al. Лучшая современная практика [Страница 51]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
m=audio 1734 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* ALG подготавливается к проксированию пакетов с 192.0.2.128/1734
на 192.0.2.201/3456. */
F12 ACK Alice -> SIP ALG
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F13 ACK SIP ALG -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* RTP-потоки установлены между Alice и ALG, а также между ALG и B. */
/* Alice завершает вызов с Bob. */
F14 BYE Alice -> SIP ALG
BYE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Лучшая современная практика [Страница 52]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
CSeq: 2 BYE
Content-Length: 0
F15 BYE SIP ALG -> Bob
BYE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F16 200 OK Bob -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F17 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 53]
RFC 3665 Базовые примеры потоков вызова SIP Декабрь 2003
3.6. Сеанс через серверы Redirect и Proxy с SDP в ACK
Alice Сервер Redirect Proxy 3 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 302 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | |
|-------------------------------->| INVITE F5 |
| 100 F6 |--------------->|
|<--------------------------------| 180 F7 |
| 180 F8 |<---------------|
|<--------------------------------| |
| | 200 F9 |
| 200 F10 |<---------------|
|<--------------------------------| |
| ACK F11 | |
|-------------------------------->| ACK F12 |
| |--------------->|
| RTP-медиа в обоих направлениях |
|<================================================>|
| | BYE F13 |
| BYE F14 |<---------------|
|<--------------------------------| |
| 200 F15 | |
|-------------------------------->| 200 F16 |
| |--------------->|
| | |
В этом сценарии Alice выполняет вызов Bob, используя сначала сервер Redirect,
а затем сервер Proxy. Сообщение INVITE сначала отправляется серверу Redirect.
Сервер возвращает ответ 302 Moved Temporarily (F2), содержащий заголовок
Contact с текущим SIP-адресом Bob. Затем Alice формирует новый INVITE и
отправляет его Bob через сервер Proxy; далее вызов продолжается обычным
образом. В этом примере SDP отсутствует в INVITE, поэтому SDP передаётся в
сообщении ACK.
Вызов завершается, когда Bob отправляет сообщение BYE.Johnston, et al. Best Current Practice [Page 54]
RFC 3665 SIP Basic Call Flow Examples December 2003
Сведения о сообщениях
F1 INVITE Alice -> Redirect Server
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Length: 0
F2 302 Moved Temporarily Redirect Proxy -> Alice
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@chicago.example.com;transport=tcp>
Content-Length: 0
F3 ACK Alice -> Redirect Server
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F4 INVITE Alice -> Proxy 3
INVITE sip:bob@chicago.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Best Current Practice [Page 55]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Length: 0
F5 INVITE Proxy 3 -> Bob
INVITE sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Length: 0
F6 100 Trying Proxy 3 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F7 180 Ringing Bob -> Proxy 3
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 56]
RFC 3665 SIP Basic Call Flow Examples December 2003
F8 180 Ringing Proxy 3 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Length: 0
F9 200 OK Bob -> Proxy 3
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Best Current Practice [Page 57]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* ACK contains SDP of Alice since none present in INVITE */
F11 ACK Alice -> Proxy 3
ACK sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F12 ACK Proxy 3 -> Bob
ACK sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Best Current Practice [Page 58]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. */
F13 BYE Bob -> Proxy 3
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F14 BYE Proxy 3 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.100
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 69
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F15 200 OK Alice -> Proxy 3
SIP/2.0 200 OK
Johnston, et al. Best Current Practice [Page 59]
RFC 3665 SIP Basic Call Flow Examples December 2003
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F16 200 OK Proxy 3 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 60]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.7. Сеанс с re-INVITE (изменение IP-адреса)
Alice Proxy 2 Bob
| F1 INVITE | |
|------------------->| F2 INVITE |
| F3 100 Trying |------------------->|
|<-------------------| F4 180 Ringing |
| F5 180 Ringing |<-------------------|
|<-------------------| |
| | F6 200 OK |
| F7 200 OK |<-------------------|
|<-------------------| |
| F8 ACK |
|---------------------------------------->|
| Установлена RTP-медиа в обоих направлениях |
|<=======================================>|
| |
| Боб изменяет IP-адрес |
| |
| F9 INVITE |
|<----------------------------------------|
| F10 200 OK |
|---------------------------------------->|
| F11 ACK |
|<----------------------------------------|
| Новый RTP-медиапоток |
|<=======================================>|
| F12 BYE |
|---------------------------------------->|
| F13 200 OK |
|<----------------------------------------|
| |
Этот пример показывает сеанс, в котором медиаданные изменяются в середине
сеанса. Когда IP-адрес Боба изменяется во время сеанса, Боб отправляет
re-INVITE, содержащий новый Contact и информацию SDP (с увеличенным номером
версии), для A. В этом потоке прокси не добавляет Record-Route и поэтому
после первоначального обмена не находится на пути SIP-сообщений.
Johnston, et al. Best Current Practice [Page 61]
RFC 3665 SIP Basic Call Flow Examples December 2003
Сведения о сообщениях
F1 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 62]
RFC 3665 SIP Basic Call Flow Examples December 2003
F3 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F5 180 Ringing Proxy 2 -> Alice SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F6 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Johnston, et al. Best Current Practice [Page 63]
RFC 3665 SIP Basic Call Flow Examples December 2003
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F7 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 ACK Alice -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b7b
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 64]
RFC 3665 SIP Basic Call Flow Examples December 2003
/* RTP streams are established between Alice and Bob */
/* Bob changes IP address and re-INVITEs Alice with new Contact and
SDP */
F9 INVITE Bob -> Alice
INVITE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 INVITE
Contact: <sip:bob@client.chicago.example.com>
Content-Type: application/sdp
Content-Length: 149
v=0
o=bob 2890844527 2890844528 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 47172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
;received=192.0.2.100
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
Johnston, et al. Best Current Practice [Page 65]
RFC 3665 SIP Basic Call Flow Examples December 2003
m=audio 1000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 ACK Bob -> Alice
ACK sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkldcc
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 ACK
Content-Length: 0
/* New RTP stream established between Alice and Bob */
/* Alice hangs up with Bob */
F12 BYE Alice -> Bob
BYE sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F13 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
;received=192.0.2.101
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 66]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.8. Неуспешный вызов: нет ответа
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | |
| CANCEL F9 | | |
|--------------->| | |
| 200 F10 | | |
|<---------------| CANCEL F11 | |
| |--------------->| |
| | 200 F12 | |
| |<---------------| |
| | | CANCEL F13 |
| | |--------------->|
| | | 200 F14 |
| | |<---------------|
| | | 487 F15 |
| | |<---------------|
| | | ACK F16 |
| | 487 F17 |--------------->|
| |<---------------| |
| | ACK F18 | |
| 487 F19 |--------------->| |
|<---------------| | |
| ACK F20 | | |
|--------------->| | |
| | | |
В этом сценарии Alice отказывается от вызова до того, как Bob отвечает
(отправляет ответ 200 OK). Alice отправляет CANCEL (F9), поскольку от Bob
не был получен окончательный ответ. Если бы 200 OK на INVITE пересёкся с
CANCEL, Alice отправила бы ACK, а затем BYE Bob, чтобы корректно завершить
вызов.
Обратите внимание, что сообщение CANCEL подтверждается ответом 200 OK по
принципу «хоп за хопом», а не сквозным образом.
Johnston, et al. Best Current Practice [Page 67]
RFC 3665 SIP Basic Call Flow Examples December 2003
Подробности сообщений
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="b00b416324679d7e243f55708d44be7b"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
Johnston, et al. Best Current Practice [Page 68]
RFC 3665 SIP Basic Call Flow Examples December 2003
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 69]
RFC 3665 SIP Basic Call Flow Examples December 2003
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Johnston, et al. Best Current Practice [Page 70]
RFC 3665 SIP Basic Call Flow Examples December 2003
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F9 CANCEL Alice -> Proxy 1
CANCEL sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Route: <sip:ss1.atlanta.example.com;lr>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F10 200 OK Proxy 1 -> Alice SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
Johnston, et al. Best Current Practice [Page 71]
RFC 3665 SIP Basic Call Flow Examples December 2003
F11 CANCEL Proxy 1 -> Proxy 2
CANCEL sip:alice@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F12 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F13 CANCEL Proxy 2 -> Bob
CANCEL sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F14 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
Johnston, et al. Best Current Practice [Page 72]
RFC 3665 SIP Basic Call Flow Examples December 2003
F15 487 Request Terminated Bob -> Proxy 2
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F16 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F17 487 Request Terminated Proxy 2 -> Proxy 1
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 73]
RFC 3665 SIP Basic Call Flow Examples December 2003
F18 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F19 487 Request Terminated Proxy 1 -> Alice
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
F20 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="b00b416324679d7e243f55708d44be7b"
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 74]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.9. Неуспешный вызов: занято
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 486 F6 |
| | |<---------------|
| | | ACK F7 |
| | 486 F8 |--------------->|
| |<---------------| |
| | ACK F9 | |
| 486 F10 |--------------->| |
|<---------------| | |
| ACK F11 | | |
|--------------->| | |
| | | |
В этом сценарии Bob занят и отправляет в ответ на INVITE от Alice ответ
486 Busy Here. Обратите внимание, что подтверждение ответа, не относящегося
к классу 2xx, выполняется для каждого участка пути, а не сквозным образом.
Также обратите внимание, что многие SIP UA не возвращают ответ 486, поскольку
поддерживают несколько линий и другие возможности.
Сведения о сообщениях
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="702138b27d869ac8741e10ec643d55be"
Content-Type: application/sdp
Content-Length: 151
Johnston, et al. Best Current Practice [Page 75]
RFC 3665 SIP Basic Call Flow Examples December 2003
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 76]
RFC 3665 SIP Basic Call Flow Examples December 2003
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 486 Busy Here Bob -> Proxy 2
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Johnston, et al. Best Current Practice [Page 77]
RFC 3665 SIP Basic Call Flow Examples December 2003
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F7 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F8 486 Busy Here Proxy 2 -> Proxy 1
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F9 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 78]
RFC 3665 SIP Basic Call Flow Examples December 2003
F10 486 Busy Here Proxy 1 -> Alice
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F11 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="702138b27d869ac8741e10ec643d55be"
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 79]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.10. Неуспешный вызов: нет ответа от User Agent
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| INVITE F6 |
| | |--------------->|
| | | INVITE F7 |
| | |--------------->|
| | | INVITE F8 |
| | |--------------->|
| | | INVITE F9 |
| | |--------------->|
| | | INVITE F10 |
| | |--------------->|
| | | INVITE F11 |
| | 480 F12 |--------------->|
| |<---------------| |
| | ACK F13 | |
| 480 F14 |--------------->| |
|<---------------| | |
| ACK F15 | | |
|--------------->| | |
| | | |
В этом примере отсутствует ответ Bob на сообщения INVITE Alice,
повторно передаваемые Proxy 2. После шестой повторной передачи
Proxy 2 прекращает попытки и отправляет Alice ответ 480 No Response.
Сведения о сообщениях
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
F7 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
F8 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
F9 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
F10 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
F11 INVITE Proxy 2 -> Bob
Повторная отправка сообщения F4
/* Proxy 2 gives up */
F12 480 No Response Proxy 2 -> Proxy 1
SIP/2.0 480 No Response
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F13 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F14 480 No Response Proxy 1 -> Alice
SIP/2.0 480 No Response
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F15 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Length: 0
3.11. Неуспешный вызов: временная недоступность
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 480 F9 |
| | |<---------------|
| | | ACK F10 |
| | 480 F11 |--------------->|
| |<---------------| |
| | ACK F12 | |
| 480 F13 |--------------->| |
|<---------------| | |
| ACK F14 | | |
|--------------->| | |
| | | |
В этом сценарии Bob первоначально отправляет Alice ответ 180 Ringing,
указывающий, что выполняется оповещение. Однако затем Alice отправляется
ответ 480 Unavailable. Этот ответ подтверждается, а затем проксируется
обратно Alice.
Сведения о сообщениях
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="59a46a91bf1646562a4d486c84b399db"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Johnston, et al. Лучшая современная практика [Страница 88]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
Content-Length: 0
F9 480 Temporarily Unavailable Bob -> Proxy 2
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F10 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 89]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
F12 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F13 480 Temporarily Unavailable Proxy 1 -> Alice
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F14 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="59a46a91bf1646562a4d486c84b399db"
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Лучшая современная практика [Страница 90]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
4. Соображения безопасности
Поскольку этот документ содержит примеры установления сеанса SIP, применимы соображения безопасности из RFC 3261 [1]. RFC 3261 описывает основные угрозы, включая захват регистрации, выдачу себя за сервер, подмену тела сообщения, изменение или завершение сеанса, а также атаки отказа в обслуживании и усиления. Использование HTTP Digest, как показано в этом документе, обеспечивает одностороннюю аутентификацию и защиту от атак повторного воспроизведения. Транспорт TLS используется в сценариях регистрации вследствие отсутствия в HTTP Digest защиты целостности и опасности захвата регистрации без такой защиты, как описано в RFC 3261 [1]. Полное обсуждение слабых сторон HTTP Digest приведено в RFC 3261 [1]. Использование TLS и схемы URI Secure SIP (sips) обеспечивает более высокий уровень безопасности, включая двустороннюю аутентификацию. S/MIME может обеспечивать сквозную конфиденциальность и защиту целостности тел сообщений, как описано в RFC 3261.
5. Ссылки
5.1. Нормативные ссылки
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
SDP", RFC 3264, April 2002.
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach,
P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and
Digest Access Authentication", RFC 2617, June 1999.
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
5.2. Информационные ссылки
[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K.
Summers, "Session Initiation Protocol (SIP) Public Switched
Telephone Network (PSTN) Call Flows", BCP 76, RFC 3666, December
2003.
6. Заявление об интеллектуальной собственности
IETF не занимает позиции относительно действительности или объёма каких-либо прав интеллектуальной собственности или иных прав, которые могут заявляться как относящиеся к реализации или использованию технологии, описанной в этом документе, либо относительно того, может ли быть доступна или недоступна какая-либо лицензия на основании таких прав; также IETF не заявляет, что приложила какие-либо усилия для выявления таких прав. Сведения о процедурах IETF в отношении прав в документации по линии стандартизации и документации, связанной со стандартами, можно найти в BCP-11. Копии заявлений о правах, предоставленных для публикации, и любых заверений о лицензиях, которые будут предоставлены, либо результаты попытки получить общую лицензию или разрешение на использование таких имущественных прав разработчиками или пользователями этой спецификации можно получить в Секретариате IETF.
Johnston, et al. Лучшая современная практика [Страница 91]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
IETF предлагает любой заинтересованной стороне довести до её сведения любые авторские права, патенты или патентные заявки либо иные имущественные права, которые могут охватывать технологию, которая может требоваться для практического применения этого стандарта. Просим направлять эту информацию Исполнительному директору IETF.
7. Благодарности
Этот документ является результатом групповой работы рабочих групп SIP и SIPPING. Авторы хотят поблагодарить всех, кто прочитал, проверил, прокомментировал этот документ или внёс предложения по его улучшению.
Благодарим Rohan Mahy, Adam Roach, Gonzalo Camarillo, Cullen Jennings и Tom Taylor за их подробные комментарии в ходе заключительной проверки. Благодарим Dean Willis за его ранний вклад в разработку этого документа.
Авторы хотят поблагодарить Kundan Singh за выполнение проверки сообщений синтаксическим анализатором.
Авторы хотят поблагодарить следующих лиц за участие в проверке этого документа о потоках вызовов: Aseem Agarwal, Rafi Assadi, Ben Campbell, Sunitha Kumar, Jon Peterson, Marc Petit-Huguenin, Vidhi Rastogi и Bodgey Yin Shaohua.
Авторы также хотят поблагодарить следующих лиц за помощь: Jean-Francois Mule, Hemant Agrawal, Henry Sinnreich, David Devanatham, Joe Pizzimenti, Matt Cannon, John Hearty, всю группу MCI WorldCom IPOP Design, Scott Orton, Greg Osterhout, Pat Sollee, Doug Weisenberg, Danny Mistry, Steve McKinnon и Denise Ingram, Denise Caballero, Tom Redman, Ilya Slain, Pat Sollee, John Truetken, а также других сотрудников MCI WorldCom, 3Com, Cisco, Lucent и Nortel.
Johnston, et al. Лучшая современная практика [Страница 92]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
8. Адреса авторов
Все перечисленные авторы внесли в этот документ значительный объём текста.
Alan Johnston
MCI
100 South 4th Street
St. Louis, MO 63102
USA
EMail: alan.johnston@mci.com
Steve Donovan
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: sdonovan@dynamicsoft.com
Robert Sparks
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: rsparks@dynamicsoft.com
Chris Cunningham
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: ccunningham@dynamicsoft.com
Kevin Summers
Sonus
1701 North Collins Blvd, Suite 3000
Richardson, TX 75080
USA
EMail: kevin.summers@sonusnet.com
Johnston, et al. Лучшая современная практика [Страница 93]
RFC 3665 Примеры базовых потоков вызовов SIP Декабрь 2003
9. Полное заявление об авторских правах
Copyright (C) The Internet Society (2003). Все права защищены.
Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, которые комментируют или иным образом разъясняют его либо содействуют его реализации, могут подготавливаться, копироваться, публиковаться и распространяться, полностью или частично, без ограничений какого бы то ни было характера, при условии, что приведённое выше уведомление об авторских правах и этот абзац включены во все такие копии и производные работы. Однако сам этот документ не может быть каким-либо образом изменён, например путём удаления уведомления об авторских правах или ссылок на Internet Society либо другие интернет-организации, за исключением случаев, когда это необходимо для разработки интернет-стандартов, в котором случае должны соблюдаться процедуры в отношении авторских прав, определённые процессом Internet Standards, либо когда это требуется для перевода документа на языки, отличные от английского.
Предоставленные выше ограниченные разрешения являются бессрочными и не будут отозваны Internet Society, её правопреемниками или цессионариями.
Этот документ и содержащаяся в нём информация предоставляются на условиях «КАК ЕСТЬ», И INTERNET SOCIETY И INTERNET ENGINEERING TASK FORCE ОТКАЗЫВАЮТСЯ ОТ ВСЕХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ЛЮБУЮ ГАРАНТИЮ ТОГО, ЧТО ИСПОЛЬЗОВАНИЕ СОДЕРЖАЩЕЙСЯ ЗДЕСЬ ИНФОРМАЦИИ НЕ НАРУШИТ КАКИХ-ЛИБО ПРАВ, ЛИБО ЛЮБЫЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ ИЛИ ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ.
Благодарность
Финансирование функции RFC Editor в настоящее время обеспечивается Internet Society.
Johnston, et al. Лучшая современная практика [Страница 94]
Network Working Group A. Johnston
Request for Comments: 3665 MCI
BCP: 75 S. Donovan
Category: Best Current Practice R. Sparks
C. Cunningham
dynamicsoft
K. Summers
Sonus
December 2003
Session Initiation Protocol (SIP) Basic Call Flow Examples
Status of this Memo
This document specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and suggestions for
improvements. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract
This document gives examples of Session Initiation Protocol (SIP)
call flows. Elements in these call flows include SIP User Agents and
Clients, SIP Proxy and Redirect Servers. Scenarios include SIP
Registration and SIP session establishment. Call flow diagrams and
message details are shown.
Johnston, et al. Best Current Practice [Page 1]
RFC 3665 SIP Basic Call Flow Examples December 2003
Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. General Assumptions. . . . . . . . . . . . . . . . . . . 3
1.2. Legend for Message Flows . . . . . . . . . . . . . . . . 3
1.3. SIP Protocol Assumptions . . . . . . . . . . . . . . . . 4
2. SIP Registration . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Successful New Registration. . . . . . . . . . . . . . . 5
2.2. Update of Contact List . . . . . . . . . . . . . . . . . 7
2.3. Request for Current Contact List . . . . . . . . . . . . 8
2.4. Cancellation of Registration . . . . . . . . . . . . . . 9
2.5. Unsuccessful Registration. . . . . . . . . . . . . . . . 10
3. SIP Session Establishment. . . . . . . . . . . . . . . . . . . 12
3.1. Successful Session Establishment . . . . . . . . . . . . 12
3.2. Session Establishment Through Two Proxies. . . . . . . . 15
3.3. Session with Multiple Proxy Authentication . . . . . . . 26
3.4. Successful Session with Proxy Failure. . . . . . . . . . 37
3.5. Session Through a SIP ALG. . . . . . . . . . . . . . . . 46
3.6. Session via Redirect and Proxy Servers with SDP in ACK . 54
3.7. Session with re-INVITE (IP Address Change) . . . . . . . 61
3.8. Unsuccessful No Answer . . . . . . . . . . . . . . . . . 67
3.9. Unsuccessful Busy. . . . . . . . . . . . . . . . . . . . 75
3.10. Unsuccessful No Response from User Agent . . . . . . . . 80
3.11. Unsuccessful Temporarily Unavailable . . . . . . . . . . 85
4. Security Considerations. . . . . . . . . . . . . . . . . . . . 91
5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.1. Normative References . . . . . . . . . . . . . . . . . . 91
5.2. Informative References . . . . . . . . . . . . . . . . . 91
6. Intellectual Property Statement. . . . . . . . . . . . . . . . 91
7. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 92
8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 93
9. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 94
1. Overview
The call flows shown in this document were developed in the design of
a SIP IP communications network. They represent an example minimum
set of functionality.
It is the hope of the authors that this document will be useful for
SIP implementers, designers, and protocol researchers alike and will
help further the goal of a standard implementation of RFC 3261 [1].
These flows represent carefully checked and working group reviewed
scenarios of the most basic examples as a companion to the
specifications.
Johnston, et al. Best Current Practice [Page 2]
RFC 3665 SIP Basic Call Flow Examples December 2003
These call flows are based on the current version 2.0 of SIP in RFC
3261 [1] with SDP usage described in RFC 3264 [2]. Other RFCs also
comprise the SIP standard but are not used in this set of basic call
flows.
Call flow examples of SIP interworking with the PSTN through gateways
are contained in a companion document, RFC 3666 [5].
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, RFC 2119 [4].
1.1. General Assumptions
A number of architecture, network, and protocol assumptions underlie
the call flows in this document. Note that these assumptions are not
requirements. They are outlined in this section so that they may be
taken into consideration and to aid in the understanding of the call
flow examples.
The authentication of SIP User Agents in these example call flows is
performed using HTTP Digest as defined in [1] and [3].
Some Proxy Servers in these call flows insert Record-Route headers
into requests to ensure that they are in the signaling path for
future message exchanges.
These flows show TCP, TLS, and UDP for transport. See the discussion
in RFC 3261 for details on the transport issues for SIP.
1.2. Legend for Message Flows
Dashed lines (---) represent signaling messages that are mandatory to
the call scenario. These messages can be SIP or PSTN signaling. The
arrow indicates the direction of message flow.
Double dashed lines (===) represent media paths between network
elements.
Messages with parentheses around their name represent optional
messages.
Messages are identified in the Figures as F1, F2, etc. This
references the message details in the list that follows the Figure.
Comments in the message details are shown in the following form:
/* Comments. */
Johnston, et al. Best Current Practice [Page 3]
RFC 3665 SIP Basic Call Flow Examples December 2003
1.3. SIP Protocol Assumptions
This document does not prescribe the flows precisely as they are
shown, but rather the flows illustrate the principles for best
practice. They are best practices usages (orderings, syntax,
selection of features for the purpose, handling of error) of SIP
methods, headers and parameters. IMPORTANT: The exact flows here
must not be copied as is by an implementer due to specific incorrect
characteristics that were introduced into the document for
convenience and are listed below. To sum up, the basic flows
represent well-reviewed examples of SIP usage, which are best common
practice according to IETF consensus.
For simplicity in reading and editing the document, there are a
number of differences between some of the examples and actual SIP
messages. For example, the HTTP Digest responses are not actual MD5
encodings. Call-IDs are often repeated, and CSeq counts often begin
at 1. Header fields are usually shown in the same order. Usually
only the minimum required header field set is shown, others that
would normally be present such as Accept, Supported, Allow, etc are
not shown.
Actors:
Element Display Name URI IP Address
------- ------------ --- ----------
User Agent Alice alice@atlanta.example.com 192.0.2.101
User Agent Bob bob@biloxi.example.com 192.0.2.201
User Agent bob@chicago.example.com 192.0.2.100
Proxy Server ss1.atlanta.example.com 192.0.2.111
Proxy/Registrar ss2.biloxi.example.com 192.0.2.222
Proxy Server ss3.chicago.example.com 192.0.2.233
ALG alg1.atlanta.example.com 192.0.2.128
2. SIP Registration
Registration binds a particular device Contact URI with a SIP user
Address of Record (AOR).
Johnston, et al. Best Current Practice [Page 4]
RFC 3665 SIP Basic Call Flow Examples December 2003
2.1. Successful New Registration
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 200 OK F4 |
|<------------------------------|
| |
Bob sends a SIP REGISTER request to the SIP server. The request
includes the user's contact list. This flow shows the use of HTTP
Digest for authentication using TLS transport. TLS transport is used
due to the lack of integrity protection in HTTP Digest and the danger
of registration hijacking without it, as described in RFC 3261 [1].
The SIP server provides a challenge to Bob. Bob enters her/his valid
user ID and password. Bob's SIP client encrypts the user information
according to the challenge issued by the SIP server and sends the
response to the SIP server. The SIP server validates the user's
credentials. It registers the user in its contact database and
returns a response (200 OK) to Bob's SIP client. The response
includes the user's current contact list in Contact headers. The
format of the authentication shown is HTTP digest. It is assumed
that Bob has not previously registered with this Server.
Message Details
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 5]
RFC 3665 SIP Basic Call Flow Examples December 2003
F2 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=ja743ks76zlflH
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Authorization: Digest username="bob", realm="atlanta.example.com"
nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="dfe56131d1958046689d83306477ecc"
Content-Length: 0
F4 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=ja743ks76zlflH
To: Bob <sips:bob@biloxi.example.com>;tag=37GkEhwl6
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Content-Length: 0
Johnston, et al. Best Current Practice [Page 6]
RFC 3665 SIP Basic Call Flow Examples December 2003
2.2. Update of Contact List
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob wishes to update the list of addresses where the SIP server will
redirect or forward INVITE requests.
Bob sends a SIP REGISTER request to the SIP server. Bob's request
includes an updated contact list. Since the user already has
authenticated with the server, the user supplies authentication
credentials with the request and is not challenged by the server. The
SIP server validates the user's credentials. It registers the user
in its contact database, updates the user's contact list, and returns
a response (200 OK) to Bob's SIP client. The response includes the
user's current contact list in Contact headers.
Message Details
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: mailto:bob@biloxi.example.com
Authorization: Digest username="bob", realm="atlanta.example.com",
qop="auth", nonce="1cec4341ae6cbe5a359ea9c8e88df84f", opaque="",
uri="sips:ss2.biloxi.example.com",
response="71ba27c64bd01de719686aa4590d5824"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=34095828jh
Johnston, et al. Best Current Practice [Page 7]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Contact: <mailto:bob@biloxi.example.com>;expires=4294967295
Content-Length: 0
2.3. Request for Current Contact List
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob sends a register request to the Proxy Server containing no
Contact headers, indicating the user wishes to query the server for
the user's current contact list. Since the user already has
authenticated with the server, the user supplies authentication
credentials with the request and is not challenged by the server.
The SIP server validates the user's credentials. The server returns
a response (200 OK) which includes the user's current registration
list in Contact headers.
Message Details
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="df84f1cec4341ae6cbe5ap359a9c8e88", opaque="",
uri="sips:ss2.biloxi.example.com",
response="aa7ab4678258377c6f7d4be6087e2f60"
Content-Length: 0
F2 200 OK SIP Server -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
Johnston, et al. Best Current Practice [Page 8]
RFC 3665 SIP Basic Call Flow Examples December 2003
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=jqoiweu75
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>;expires=3600
Contact: <mailto:bob@biloxi.example.com>;expires=4294967295
Content-Length: 0
2.4. Cancellation of Registration
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 200 OK F2 |
|<------------------------------|
| |
Bob wishes to cancel their registration with the SIP server. Bob
sends a SIP REGISTER request to the SIP server. The request has an
expiration period of 0 and applies to all existing contact locations.
Since the user already has authenticated with the server, the user
supplies authentication credentials with the request and is not
challenged by the server. The SIP server validates the user's
credentials. It clears the user's contact list, and returns a
response (200 OK) to Bob's SIP client.
Message Details
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Expires: 0
Contact: *
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="88df84f1cac4341aea9c8ee6cbe5a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="ff0437c51696f9a76244f0cf1dbabbea"
Content-Length: 0
F2 200 OK SIP Server -> Bob
Johnston, et al. Best Current Practice [Page 9]
RFC 3665 SIP Basic Call Flow Examples December 2003
SIP/2.0 200 OK
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1418nmdsrf
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Content-Length: 0
2.5. Unsuccessful Registration
Bob SIP Server
| |
| REGISTER F1 |
|------------------------------>|
| 401 Unauthorized F2 |
|<------------------------------|
| REGISTER F3 |
|------------------------------>|
| 401 Unauthorized F4 |
|<------------------------------|
| |
Bob sends a SIP REGISTER request to the SIP Server. The SIP server
provides a challenge to Bob. Bob enters her/his user ID and
password. Bob's SIP client encrypts the user information according
to the challenge issued by the SIP server and sends the response to
the SIP server. The SIP server attempts to validate the user's
credentials, but they are not valid (the user's password does not
match the password established for the user's account). The server
returns a response (401 Unauthorized) to Bob's SIP client.
Message Details
F1 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 10]
RFC 3665 SIP Basic Call Flow Examples December 2003
F2 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=a73kszlfl
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f1cec4341ae6ca9c8e88df84be55a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F3 REGISTER Bob -> SIP Server
REGISTER sips:ss2.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=JueHGuidj28dfga
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
Contact: <sips:bob@client.biloxi.example.com>
Authorization: Digest username="bob", realm="atlanta.example.com",
nonce="f1cec4341ae6ca9c8e88df84be55a359", opaque="",
uri="sips:ss2.biloxi.example.com",
response="61f8470ceb87d7ebf508220214ed438b"
Content-Length: 0
/* The response above encodes the incorrect password */
F4 401 Unauthorized SIP Server -> Bob
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS client.biloxi.example.com:5061;branch=z9hG4bKnashd92
;received=192.0.2.201
From: Bob <sips:bob@biloxi.example.com>;tag=JueHGuidj28dfga
To: Bob <sips:bob@biloxi.example.com>;tag=1410948204
Call-ID: 1j9FpLxk3uxtm8tn@biloxi.example.com
CSeq: 2 REGISTER
WWW-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="84f1c1ae6cbe5ua9c8e88dfa3ecm3459",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Best Current Practice [Page 11]
RFC 3665 SIP Basic Call Flow Examples December 2003
3. SIP Session Establishment
This section details session establishment between two SIP User
Agents (UAs): Alice and Bob. Alice (sip:alice@atlanta.example.com)
and Bob (sip:bob@biloxi.example.com) are assumed to be SIP phones or
SIP-enabled devices. The successful calls show the initial
signaling, the exchange of media information in the form of SDP
payloads, the establishment of the media session, then finally the
termination of the call.
HTTP Digest authentication is used by Proxy Servers to authenticate
the caller Alice. It is assumed that Bob has registered with Proxy
Server Proxy 2 as per Section 2 to be able to receive the calls via
the Proxy.
3.1. Successful Session Establishment
Alice Bob
| |
| INVITE F1 |
|----------------------->|
| 180 Ringing F2 |
|<-----------------------|
| |
| 200 OK F3 |
|<-----------------------|
| ACK F4 |
|----------------------->|
| Both Way RTP Media |
|<======================>|
| |
| BYE F5 |
|<-----------------------|
| 200 OK F6 |
|----------------------->|
| |
In this scenario, Alice completes a call to Bob directly.
Message Details
F1 INVITE Alice -> Bob
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Johnston, et al. Best Current Practice [Page 12]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 180 Ringing Bob -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Length: 0
F3 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 13]
RFC 3665 SIP Basic Call Flow Examples December 2003
F4 ACK Alice -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bd5
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=8321234356
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. Note that the CSeq is NOT 2, since
Alice and Bob maintain their own independent CSeq counts.
(The INVITE was request 1 generated by Alice, and the BYE is
request 1 generated by Bob) */
F5 BYE Bob -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=8321234356
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F6 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=8321234356
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 14]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.2. Session Establishment Through Two Proxies
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 407 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| INVITE F5 | |
| 100 F6 |--------------->| INVITE F7 |
|<---------------| 100 F8 |--------------->|
| |<---------------| |
| | | 180 F9 |
| | 180 F10 |<---------------|
| 180 F11 |<---------------| |
|<---------------| | 200 F12 |
| | 200 F13 |<---------------|
| 200 F14 |<---------------| |
|<---------------| | |
| ACK F15 | | |
|--------------->| ACK F16 | |
| |--------------->| ACK F17 |
| | |--------------->|
| Both Way RTP Media |
|<================================================>|
| | | BYE F18 |
| | BYE F19 |<---------------|
| BYE F20 |<---------------| |
|<---------------| | |
| 200 F21 | | |
|--------------->| 200 F22 | |
| |--------------->| 200 F23 |
| | |--------------->|
| | | |
In this scenario, Alice completes a call to Bob using two proxies
Proxy 1 and Proxy 2. The initial INVITE (F1) contains a pre-loaded
Route header with the address of Proxy 1 (Proxy 1 is configured as a
default outbound proxy for Alice). The request does not contain the
Authorization credentials Proxy 1 requires, so a 407 Proxy
Authorization response is sent containing the challenge information.
A new INVITE (F4) is then sent containing the correct credentials and
the call proceeds. The call terminates when Bob disconnects by
initiating a BYE message.
Johnston, et al. Best Current Practice [Page 15]
RFC 3665 SIP Basic Call Flow Examples December 2003
Proxy 1 inserts a Record-Route header into the INVITE message to
ensure that it is present in all subsequent message exchanges. Proxy
2 also inserts itself into the Record-Route header. The ACK (F15)
and BYE (F18) both have a Route header.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 challenges Alice for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=3flal12sf
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="f84f1cec41e6cbe5aea9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Best Current Practice [Page 16]
RFC 3665 SIP Basic Call Flow Examples December 2003
F3 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b43
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=3flal12sf
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice responds be re-sending the INVITE with authentication
credentials in it. */
F4 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy
2. Client for Alice prepares to receive data on port 49172 from the
network. */
Johnston, et al. Best Current Practice [Page 17]
RFC 3665 SIP Basic Call Flow Examples December 2003
F5 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F6 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F7 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
Johnston, et al. Best Current Practice [Page 18]
RFC 3665 SIP Basic Call Flow Examples December 2003
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F9 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 19]
RFC 3665 SIP Basic Call Flow Examples December 2003
F10 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F11 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
CSeq: 2 INVITE
Content-Length: 0
F12 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Johnston, et al. Best Current Practice [Page 20]
RFC 3665 SIP Basic Call Flow Examples December 2003
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F14 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Best Current Practice [Page 21]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F15 ACK Alice -> Proxy 1
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F16 ACK Proxy 1 -> Proxy 2
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F17 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Johnston, et al. Best Current Practice [Page 22]
RFC 3665 SIP Basic Call Flow Examples December 2003
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. */
/* Again, note that the CSeq is NOT 3. Alice and Bob maintain
their own separate CSeq counts */
F18 BYE Bob -> Proxy 2
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F19 BYE Proxy 2 -> Proxy 1
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
Route: <sip:ss1.atlanta.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 23]
RFC 3665 SIP Basic Call Flow Examples December 2003
F20 BYE Proxy 1 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 68
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F21 200 OK Alice -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Proxy 1 -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.101
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 24]
RFC 3665 SIP Basic Call Flow Examples December 2003
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 3848276298220188511@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 25]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.3. Session with Multiple Proxy Authentication
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|----------->| | |
| 407 Proxy Authorization Required F2 |
|<-----------| | |
| ACK F3 | | |
|----------->| | |
| INVITE F4 | | |
|----------->| | |
| 100 F5 | | |
|<-----------| INVITE F6 | |
| |---------->| |
| | 407 Proxy Authorization Required F7
| |<----------| |
| | ACK F8 | |
| |---------->| |
| 407 Proxy Authorization Required F9 |
|<-----------| | |
| ACK F10 | | |
|----------->| | |
| INVITE F11| | |
|----------->| | |
| 100 F12 | | |
|<-----------| INVITE F13| |
| |---------->| |
| | 100 F14 | |
| |<----------| INVITE F15 |
| | |------------>|
| | | 200 OK F16 |
| | 200 OK F17|<------------|
| 200 OK F18 |<----------| |
|<-----------| | |
| ACK F19 | | |
|----------->| ACK F20 | |
| |---------->| ACK F21 |
| | |------------>|
| RTP Media Path |
|<====================================>|
In this scenario, Alice completes a call to Bob using two proxies
Proxy 1 and Proxy 2. Alice has valid credentials in both domains.
Since the initial INVITE (F1) does not contain the Authorization
credentials Proxy 1 requires, so a 407 Proxy Authorization response
is sent containing the challenge information. A new INVITE (F4) is
Johnston, et al. Best Current Practice [Page 26]
RFC 3665 SIP Basic Call Flow Examples December 2003
then sent containing the correct credentials and the call proceeds
after Proxy 2 challenges and receives valid credentials. The call
terminates when Bob disconnects by initiating a BYE message.
Proxy 1 inserts a Record-Route header into the INVITE message to
ensure that it is present in all subsequent message exchanges. Proxy
2 also inserts itself into the Record-Route header.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 challenges Alice for authentication */
F2 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=876321
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="atlanta.example.com", qop="auth",
nonce="wf84f1cczx41ae6cbeaea9ce88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
Johnston, et al. Best Current Practice [Page 27]
RFC 3665 SIP Basic Call Flow Examples December 2003
F3 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Max-Forwards: 70
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b03
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=876321
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice responds be re-sending the INVITE with authentication
credentials in it. The same Call-ID is used, so the CSeq is
increased. */
F4 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 accepts the credentials and forwards the INVITE to Proxy
2. Client for Alice prepares to receive data on port 49172 from the
network. */
Johnston, et al. Best Current Practice [Page 28]
RFC 3665 SIP Basic Call Flow Examples December 2003
F5 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F6 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 challenges Alice for authentication */
F7 407 Proxy Authorization Required Proxy 2 -> Proxy 1
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
Johnston, et al. Best Current Practice [Page 29]
RFC 3665 SIP Basic Call Flow Examples December 2003
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F8 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
/* Proxy 1 forwards the challenge to Alice for authentication from
Proxy 2 */
F9 407 Proxy Authorization Required Proxy 1 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b21
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=838209
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Best Current Practice [Page 30]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Content-Length: 0
/* Alice responds be re-sending the INVITE with authentication
credentials for Proxy 1 AND Proxy 2. */
F11 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 1 finds its credentials and authorizes Alice, forwarding the
INVITE to Proxy. */
Johnston, et al. Best Current Practice [Page 31]
RFC 3665 SIP Basic Call Flow Examples December 2003
F12 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Content-Length: 0
F13 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 finds its credentials and authorizes Alice, forwarding the
INVITE to Bob. */
Johnston, et al. Best Current Practice [Page 32]
RFC 3665 SIP Basic Call Flow Examples December 2003
F14 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Content-Length: 0
F15 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Bob answers the call immediately */
Johnston, et al. Best Current Practice [Page 33]
RFC 3665 SIP Basic Call Flow Examples December 2003
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F17 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
Johnston, et al. Best Current Practice [Page 34]
RFC 3665 SIP Basic Call Flow Examples December 2003
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F19 ACK Alice -> Proxy 1
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>,
<sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com",
response="42ce3cef44b22f50c6a6071bc8"
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
Johnston, et al. Best Current Practice [Page 35]
RFC 3665 SIP Basic Call Flow Examples December 2003
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F20 ACK Proxy 1 -> Proxy 2
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 69
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Contact: <sip:bob@client.biloxi.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="c1e22c41ae6cbe5ae983a9c8e88d359", opaque="",
uri="sip:bob@biloxi.example.com", response="f44ab22f150c6a56071bce8"
Content-Length: 0
F21 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK31972.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK230f2.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b44
;received=192.0.2.101
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=9103874
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 3 ACK
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 36]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.4. Successful Session with Proxy Failure
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| INVITE F2 | | |
|--------------->| | |
| INVITE F3 | | |
|--------------->| | |
| INVITE F4 | | |
|--------------->| | |
| INVITE F5 | | |
|--------------->| | |
| INVITE F6 | | |
|--------------->| | |
| INVITE F7 | | |
|--------------->| | |
| INVITE F8 | |
|-------------------------------->| |
| 407 F9 | |
|<--------------------------------| |
| ACK F10 | |
|-------------------------------->| |
| INVITE F11 | |
|-------------------------------->| INVITE F12 |
| 100 F13 |--------------->|
|<--------------------------------| |
| | 180 F14 |
| 180 F15 |<---------------|
|<--------------------------------| |
| | 200 F16 |
| 200 F17 |<---------------|
|<--------------------------------| |
| ACK F18 | |
|-------------------------------->| ACK F19 |
| |--------------->|
| Both Way RTP Media |
|<================================================>|
| | BYE F20 |
| BYE F21 |<---------------|
|<--------------------------------| |
| 200 F22 | |
|-------------------------------->| 200 F23 |
| |--------------->|
| | |
Johnston, et al. Best Current Practice [Page 37]
RFC 3665 SIP Basic Call Flow Examples December 2003
In this scenario, Alice completes a call to Bob via a Proxy Server.
Alice is configured for a primary SIP Proxy Server Proxy 1 and a
secondary SIP Proxy Server Proxy 2 (Or is able to use DNS SRV records
to locate Proxy 1 and Proxy 2). Alice has valid credentials for both
domains. Proxy 1 is out of service and does not respond to INVITEs
(it is reachable, but unresponsive). Alice then completes the call
to Bob using Proxy 2.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK465b6d
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Alice -> Proxy 1
Same as Message F1
F3 INVITE Alice -> Proxy 1
Same as Message F1
F4 INVITE Alice -> Proxy 1
Same as Message F1
Johnston, et al. Best Current Practice [Page 38]
RFC 3665 SIP Basic Call Flow Examples December 2003
F5 INVITE Alice -> Proxy 1
Same as Message F1
F6 INVITE Alice -> Proxy 1
Same as Message F1
F7 INVITE Alice -> Proxy 1
Same as Message F1
/* Alice gives up on the unresponsive proxy */
F8 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Proxy 2 challenges Alice for authentication */
F9 407 Proxy Authorization Required Proxy 2 -> Alice
SIP/2.0 407 Proxy Authorization Required
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=2421452
Johnston, et al. Best Current Practice [Page 39]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 INVITE
Proxy-Authenticate: Digest realm="biloxi.example.com", qop="auth",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359",
opaque="", stale=FALSE, algorithm=MD5
Content-Length: 0
F10 ACK Alice -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8a
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=2421452
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* Alice responds by re-sending the INVITE with authentication
credentials in it. */
F11 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="1ae6cbe5ea9c8e8df84fqnlec434a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="8a880c919d1a52f20a1593e228adf599"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 40]
RFC 3665 SIP Basic Call Flow Examples December 2003
/* Proxy 2 accepts the credentials and forwards the INVITE to Bob.
Client for Alice prepares to receive data on port 49172 from the
network.
*/
F12 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F13 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F14 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Johnston, et al. Best Current Practice [Page 41]
RFC 3665 SIP Basic Call Flow Examples December 2003
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F15 180 Ringing Proxy 2 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F16 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 42]
RFC 3665 SIP Basic Call Flow Examples December 2003
F17 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F18 ACK Alice -> Proxy 2
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 2 ACK
Content-Length: 0
F19 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b8g
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
Johnston, et al. Best Current Practice [Page 43]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 ACK
Content-Length: 0
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. */
F20 BYE Bob -> Proxy 2
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
Route: <sip:ss2.biloxi.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F21 BYE Proxy 2 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
Max-Forwards: 69
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F22 200 OK Alice -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 44]
RFC 3665 SIP Basic Call Flow Examples December 2003
F23 200 OK Proxy 2 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.biloxi.example.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.201
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 4Fde34wkd11wsGFDs3@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 45]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.5. Session Through a SIP ALG
Alice ALG Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 200 F9 |
| | 200 F10 |<---------------|
| 200 F11 |<---------------| |
|<---------------| |
| ACK F12 | |
|--------------->| ACK F13 |
| |-------------------------------->|
| RTP Media | Both Way RTP Media |
|<==============>|<===============================>|
| BYE F14 | |
|--------------->| BYE F15 |
| |-------------------------------->|
| | 200 F16 |
| 200 F17 |<--------------------------------|
|<---------------| |
| | |
Alice completes a call to Bob through a ALG (Application Layer
Gateway) and a SIP Proxy. The routing through the ALG is
accomplished using a pre-loaded Route header in the INVITE F1. Note
that the media stream setup is not end-to-end - the ALG terminates
both media streams and bridges them. This is done by the ALG
modifying the SDP in the INVITE (F1) and 200 OK (F10) messages, and
possibly any 18x or ACK messages containing SDP.
In addition to firewall traversal, this Back-to-Back User Agent
(B2BUA) could be used as part of an anonymizer service (in which all
identifying information on Alice would be removed), or to perform
codec media conversion, such as mu-law to A-law conversion of PCM on
an international call.
Also note that Proxy 2 does not Record-Route in this call flow.
Johnston, et al. Best Current Practice [Page 46]
RFC 3665 SIP Basic Call Flow Examples December 2003
Message Details
F1 INVITE Alice -> SIP ALG
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Route: <sip:alg1.atlanta.example.com;lr>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:bob@biloxi.example.com",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* Client for Alice prepares to receive data on port 49172 from the
network. */
F2 INVITE SIP ALG -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="biloxi.example.com",
Johnston, et al. Best Current Practice [Page 47]
RFC 3665 SIP Basic Call Flow Examples December 2003
nonce="85b4f1cen4341ae6cbe5a3a9c8e88df9", opaque="",
uri="sip:bob@biloxi.example.com",
response="b3f392f9218a328b9294076d708e6815"
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying SIP ALG -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
/* SIP ALG prepares to proxy data from port 192.0.2.128/2000 to
192.0.2.101/49172. Proxy 2 uses a Location Service function to
determine where Bob is located. Based upon location analysis the call
is forwarded to Bob */
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Johnston, et al. Best Current Practice [Page 48]
RFC 3665 SIP Basic Call Flow Examples December 2003
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
m=audio 2000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> SIP ALG
SIP/2.0 100 Trying
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> SIP ALG
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Johnston, et al. Best Current Practice [Page 49]
RFC 3665 SIP Basic Call Flow Examples December 2003
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing SIP ALG -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F9 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
Johnston, et al. Best Current Practice [Page 50]
RFC 3665 SIP Basic Call Flow Examples December 2003
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy 2 -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.128
t=0 0
Johnston, et al. Best Current Practice [Page 51]
RFC 3665 SIP Basic Call Flow Examples December 2003
m=audio 1734 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* The ALG prepares to proxy packets from 192.0.2.128/
1734 to 192.0.2.201/3456 */
F12 ACK Alice -> SIP ALG
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F13 ACK SIP ALG -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bhh
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
/* RTP streams are established between Alice and the ALG and
between the ALG and B*/
/* Alice Hangs Up with Bob. */
F14 BYE Alice -> SIP ALG
BYE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
Max-Forwards: 70
Route: <sip:alg1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Best Current Practice [Page 52]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 BYE
Content-Length: 0
F15 BYE SIP ALG -> Bob
BYE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F16 200 OK Bob -> SIP ALG
SIP/2.0 200 OK
Via: SIP/2.0/UDP alg1.atlanta.example.com:5060;branch=z9hG4bK739578.1
;received=192.0.2.128
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F17 200 OK SIP ALG -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74be5
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 53]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.6. Session via Redirect and Proxy Servers with SDP in ACK
Alice Redirect Server Proxy 3 Bob
| | | |
| INVITE F1 | | |
|--------------->| | |
| 302 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | |
|-------------------------------->| INVITE F5 |
| 100 F6 |--------------->|
|<--------------------------------| 180 F7 |
| 180 F8 |<---------------|
|<--------------------------------| |
| | 200 F9 |
| 200 F10 |<---------------|
|<--------------------------------| |
| ACK F11 | |
|-------------------------------->| ACK F12 |
| |--------------->|
| Both Way RTP Media |
|<================================================>|
| | BYE F13 |
| BYE F14 |<---------------|
|<--------------------------------| |
| 200 F15 | |
|-------------------------------->| 200 F16 |
| |--------------->|
| | |
In this scenario, Alice places a call to Bob using first a Redirect
server then a Proxy Server. The INVITE message is first sent to the
Redirect Server. The Server returns a 302 Moved Temporarily response
(F2) containing a Contact header with Bob's current SIP address.
Alice then generates a new INVITE and sends to Bob via the Proxy
Server and the call proceeds normally. In this example, no SDP is
present in the INVITE, so the SDP is carried in the ACK message.
The call is terminated when Bob sends a BYE message.
Johnston, et al. Best Current Practice [Page 54]
RFC 3665 SIP Basic Call Flow Examples December 2003
Message Details
F1 INVITE Alice -> Redirect Server
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Length: 0
F2 302 Moved Temporarily Redirect Proxy -> Alice
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@chicago.example.com;transport=tcp>
Content-Length: 0
F3 ACK Alice -> Redirect Server
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F4 INVITE Alice -> Proxy 3
INVITE sip:bob@chicago.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Johnston, et al. Best Current Practice [Page 55]
RFC 3665 SIP Basic Call Flow Examples December 2003
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Length: 0
F5 INVITE Proxy 3 -> Bob
INVITE sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Length: 0
F6 100 Trying Proxy 3 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Content-Length: 0
F7 180 Ringing Bob -> Proxy 3
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Length: 0
Johnston, et al. Best Current Practice [Page 56]
RFC 3665 SIP Basic Call Flow Examples December 2003
F8 180 Ringing Proxy 3 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Length: 0
F9 200 OK Bob -> Proxy 3
SIP/2.0 200 OK
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Proxy -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Best Current Practice [Page 57]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 INVITE
Contact: <sip:bob@client.chicago.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 148
v=0
o=bob 2890844527 2890844527 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* ACK contains SDP of Alice since none present in INVITE */
F11 ACK Alice -> Proxy 3
ACK sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F12 ACK Proxy 3 -> Bob
ACK sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bq9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Johnston, et al. Best Current Practice [Page 58]
RFC 3665 SIP Basic Call Flow Examples December 2003
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 ACK
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/* RTP streams are established between Alice and Bob */
/* Bob Hangs Up with Alice. */
F13 BYE Bob -> Proxy 3
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 70
Route: <sip:ss3.chicago.example.com;lr>
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F14 BYE Proxy 3 -> Alice
BYE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.100
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
Max-Forwards: 69
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F15 200 OK Alice -> Proxy 3
SIP/2.0 200 OK
Johnston, et al. Best Current Practice [Page 59]
RFC 3665 SIP Basic Call Flow Examples December 2003
Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
;received=192.0.2.233
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
F16 200 OK Proxy 3 -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP client.chicago.example.com:5060;branch=z9hG4bKfgaw2
;received=192.0.2.100
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 60]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.7. Session with re-INVITE (IP Address Change)
Alice Proxy 2 Bob
| F1 INVITE | |
|------------------->| F2 INVITE |
| F3 100 Trying |------------------->|
|<-------------------| F4 180 Ringing |
| F5 180 Ringing |<-------------------|
|<-------------------| |
| | F6 200 OK |
| F7 200 OK |<-------------------|
|<-------------------| |
| F8 ACK |
|---------------------------------------->|
| Both Way RTP Media Established |
|<=======================================>|
| |
| Bob changes IP address |
| |
| F9 INVITE |
|<----------------------------------------|
| F10 200 OK |
|---------------------------------------->|
| F11 ACK |
|<----------------------------------------|
| New RTP Media Stream |
|<=======================================>|
| F12 BYE |
|---------------------------------------->|
| F13 200 OK |
|<----------------------------------------|
| |
This example shows a session in which the media changes midway
through the session. When Bob's IP address changes during the
session, Bob sends a re-INVITE containing a new Contact and SDP
(version number incremented) information to A. In this flow, the
proxy does not Record-Route so is not in the SIP messaging path after
the initial exchange.
Johnston, et al. Best Current Practice [Page 61]
RFC 3665 SIP Basic Call Flow Examples December 2003
Message Details
F1 INVITE Alice -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F2 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 62]
RFC 3665 SIP Basic Call Flow Examples December 2003
F3 100 Trying Proxy 2 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F5 180 Ringing Proxy 2 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F6 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.222
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Johnston, et al. Best Current Practice [Page 63]
RFC 3665 SIP Basic Call Flow Examples December 2003
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F7 200 OK Proxy 2 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
s=-
c=IN IP4 192.0.2.201
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F8 ACK Alice -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74b7b
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 64]
RFC 3665 SIP Basic Call Flow Examples December 2003
/* RTP streams are established between Alice and Bob */
/* Bob changes IP address and re-INVITEs Alice with new Contact and
SDP */
F9 INVITE Bob -> Alice
INVITE sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 INVITE
Contact: <sip:bob@client.chicago.example.com>
Content-Type: application/sdp
Content-Length: 149
v=0
o=bob 2890844527 2890844528 IN IP4 client.chicago.example.com
s=-
c=IN IP4 192.0.2.100
t=0 0
m=audio 47172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F10 200 OK Alice -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkld5l
;received=192.0.2.100
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 150
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
Johnston, et al. Best Current Practice [Page 65]
RFC 3665 SIP Basic Call Flow Examples December 2003
m=audio 1000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F11 ACK Bob -> Alice
ACK sip:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP client.chicago.example.com:5060;branch=z9hG4bKlkldcc
Max-Forwards: 70
From: Bob <sip:bob@biloxi.example.com>;tag=314159
To: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 14 ACK
Content-Length: 0
/* New RTP stream established between Alice and Bob */
/* Alice hangs up with Bob */
F12 BYE Alice -> Bob
BYE sip:bob@client.chicago.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
F13 200 OK Bob -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bo4
;received=192.0.2.101
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 2 BYE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 66]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.8. Unsuccessful No Answer
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | |
| CANCEL F9 | | |
|--------------->| | |
| 200 F10 | | |
|<---------------| CANCEL F11 | |
| |--------------->| |
| | 200 F12 | |
| |<---------------| |
| | | CANCEL F13 |
| | |--------------->|
| | | 200 F14 |
| | |<---------------|
| | | 487 F15 |
| | |<---------------|
| | | ACK F16 |
| | 487 F17 |--------------->|
| |<---------------| |
| | ACK F18 | |
| 487 F19 |--------------->| |
|<---------------| | |
| ACK F20 | | |
|--------------->| | |
| | | |
In this scenario, Alice gives up on the call before Bob answers
(sends a 200 OK response). Alice sends a CANCEL (F9) since no final
response had been received from Bob. If a 200 OK to the INVITE had
crossed with the CANCEL, Alice would have sent an ACK then a BYE to
Bob in order to properly terminate the call.
Note that the CANCEL message is acknowledged with a 200 OK on a hop
by hop basis, rather than end to end.
Johnston, et al. Best Current Practice [Page 67]
RFC 3665 SIP Basic Call Flow Examples December 2003
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="b00b416324679d7e243f55708d44be7b"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
Johnston, et al. Best Current Practice [Page 68]
RFC 3665 SIP Basic Call Flow Examples December 2003
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
Max-Forwards: 68
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
Johnston, et al. Best Current Practice [Page 69]
RFC 3665 SIP Basic Call Flow Examples December 2003
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Johnston, et al. Best Current Practice [Page 70]
RFC 3665 SIP Basic Call Flow Examples December 2003
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F9 CANCEL Alice -> Proxy 1
CANCEL sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Route: <sip:ss1.atlanta.example.com;lr>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F10 200 OK Proxy 1 -> Alice
SIP/2.0 200 OK
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
Johnston, et al. Best Current Practice [Page 71]
RFC 3665 SIP Basic Call Flow Examples December 2003
F11 CANCEL Proxy 1 -> Proxy 2
CANCEL sip:alice@atlanta.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F12 200 OK Proxy 2 -> Proxy 1
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F13 CANCEL Proxy 2 -> Bob
CANCEL sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
F14 200 OK Bob -> Proxy 2
SIP/2.0 200 OK
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 CANCEL
Content-Length: 0
Johnston, et al. Best Current Practice [Page 72]
RFC 3665 SIP Basic Call Flow Examples December 2003
F15 487 Request Terminated Bob -> Proxy 2
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F16 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F17 487 Request Terminated Proxy 2 -> Proxy 1
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 73]
RFC 3665 SIP Basic Call Flow Examples December 2003
F18 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F19 487 Request Terminated Proxy 1 -> Alice
SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
F20 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="ze7k1ee88df84f1cec431ae6cbe5a359", opaque="",
uri="sip:bob@biloxi.example.com",
response="b00b416324679d7e243f55708d44be7b"
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 74]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.9. Unsuccessful Busy
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| |
| | | 486 F6 |
| | |<---------------|
| | | ACK F7 |
| | 486 F8 |--------------->|
| |<---------------| |
| | ACK F9 | |
| 486 F10 |--------------->| |
|<---------------| | |
| ACK F11 | | |
|--------------->| | |
| | | |
In this scenario, Bob is busy and sends a 486 Busy Here response to
Alice's INVITE. Note that the non-2xx response is acknowledged on a
hop-by-hop basis instead of end-to-end. Also note that many SIP UAs
will not return a 486 response, as they have multiple line and other
features.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="702138b27d869ac8741e10ec643d55be"
Content-Type: application/sdp
Content-Length: 151
Johnston, et al. Best Current Practice [Page 75]
RFC 3665 SIP Basic Call Flow Examples December 2003
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 76]
RFC 3665 SIP Basic Call Flow Examples December 2003
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F6 486 Busy Here Bob -> Proxy 2
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Johnston, et al. Best Current Practice [Page 77]
RFC 3665 SIP Basic Call Flow Examples December 2003
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F7 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F8 486 Busy Here Proxy 2 -> Proxy 1
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F9 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 78]
RFC 3665 SIP Basic Call Flow Examples December 2003
F10 486 Busy Here Proxy 1 -> Alice
SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F11 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="dc3a5ab2530aa93112cf5904ba7d88fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="702138b27d869ac8741e10ec643d55be"
Content-Length: 0
Johnston, et al. Best Current Practice [Page 79]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.10. Unsuccessful No Response from User Agent
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| INVITE F6 |
| | |--------------->|
| | | INVITE F7 |
| | |--------------->|
| | | INVITE F8 |
| | |--------------->|
| | | INVITE F9 |
| | |--------------->|
| | | INVITE F10 |
| | |--------------->|
| | | INVITE F11 |
| | 480 F12 |--------------->|
| |<---------------| |
| | ACK F13 | |
| 480 F14 |--------------->| |
|<---------------| | |
| ACK F15 | | |
|--------------->| | |
| | | |
In this example, there is no response from Bob to Alice's INVITE
messages being re-transmitted by Proxy 2. After the sixth
re-transmission, Proxy 2 gives up and sends a 480 No Response to
Alice.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
Johnston, et al. Best Current Practice [Page 80]
RFC 3665 SIP Basic Call Flow Examples December 2003
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Johnston, et al. Best Current Practice [Page 81]
RFC 3665 SIP Basic Call Flow Examples December 2003
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 82]
RFC 3665 SIP Basic Call Flow Examples December 2003
F6 INVITE Proxy 2 -> Bob
Resend of Message F4
F7 INVITE Proxy 2 -> Bob
Resend of Message F4
F8 INVITE Proxy 2 -> Bob
Resend of Message F4
F9 INVITE Proxy 2 -> Bob
Resend of Message F4
F10 INVITE Proxy 2 -> Bob
Resend of Message F4
F11 INVITE Proxy 2 -> Bob
Resend of Message F4
/* Proxy 2 gives up */
F12 480 No Response Proxy 2 -> Proxy 1
SIP/2.0 480 No Response
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 83]
RFC 3665 SIP Basic Call Flow Examples December 2003
F13 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F14 480 No Response Proxy 1 -> Alice
SIP/2.0 480 No Response
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F15 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="cf5904ba7d8dc3a5ab2530aa931128fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="7afc04be7961f053c24f80e7dbaf888f"
Content-Length: 0
Johnston, et al. Best Current Practice [Page 84]
RFC 3665 SIP Basic Call Flow Examples December 2003
3.11. Unsuccessful Temporarily Unavailable
Alice Proxy 1 Proxy 2 Bob
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 F3 |--------------->| INVITE F4 |
|<---------------| 100 F5 |--------------->|
| |<---------------| 180 F6 |
| | 180 F7 |<---------------|
| 180 F8 |<---------------| |
|<---------------| | 480 F9 |
| | |<---------------|
| | | ACK F10 |
| | 480 F11 |--------------->|
| |<---------------| |
| | ACK F12 | |
| 480 F13 |--------------->| |
|<---------------| | |
| ACK F14 | | |
|--------------->| | |
| | | |
In this scenario, Bob initially sends a 180 Ringing response to
Alice, indicating that alerting is taking place. However, then a
480 Unavailable is then sent to Alice. This response is
acknowledged then proxied back to Alice.
Message Details
F1 INVITE Alice -> Proxy 1
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="59a46a91bf1646562a4d486c84b399db"
Content-Type: application/sdp
Johnston, et al. Best Current Practice [Page 85]
RFC 3665 SIP Basic Call Flow Examples December 2003
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
/*Client for Alice prepares to receive data on port 49172 from the
network.*/
F2 INVITE Proxy 1 -> Proxy 2
INVITE sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 69
Record-Route: <sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F3 100 Trying Proxy 1 -> Alice
SIP/2.0 100 Trying
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Johnston, et al. Best Current Practice [Page 86]
RFC 3665 SIP Basic Call Flow Examples December 2003
Content-Length: 0
F4 INVITE Proxy 2 -> Bob
INVITE sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Max-Forwards: 68
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.atlanta.example.com>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
s=-
c=IN IP4 192.0.2.101
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000
F5 100 Trying Proxy 2 -> Proxy 1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 87]
RFC 3665 SIP Basic Call Flow Examples December 2003
F6 180 Ringing Bob -> Proxy 2
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F7 180 Ringing Proxy 2 -> Proxy 1
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Content-Length: 0
F8 180 Ringing Proxy 1 -> Alice
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
Record-Route: <sip:ss2.biloxi.example.com;lr>,
<sip:ss1.atlanta.example.com;lr>
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Johnston, et al. Best Current Practice [Page 88]
RFC 3665 SIP Basic Call Flow Examples December 2003
Content-Length: 0
F9 480 Temporarily Unavailable Bob -> Proxy 2
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
;received=192.0.2.222
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F10 ACK Proxy 2 -> Bob
ACK sip:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss2.biloxi.example.com:5060;branch=z9hG4bK721e4.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F11 480 Temporarily Unavailable Proxy 2 -> Proxy 1
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
;received=192.0.2.111
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
Johnston, et al. Best Current Practice [Page 89]
RFC 3665 SIP Basic Call Flow Examples December 2003
F12 ACK Proxy 1 -> Proxy 2
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 ACK
Content-Length: 0
F13 480 Temporarily Unavailable Proxy 1 -> Alice
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
;received=192.0.2.101
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
CSeq: 1 INVITE
Content-Length: 0
F14 ACK Alice -> Proxy 1
ACK sip:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
Max-Forwards: 70
From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example.com>;tag=314159
Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
Proxy-Authorization: Digest username="alice",
realm="atlanta.example.com",
nonce="aa9311cf5904ba7d8dc3a5ab253028fa", opaque="",
uri="sip:bob@biloxi.example.com",
response="59a46a91bf1646562a4d486c84b399db"
CSeq: 1 ACK
Content-Length: 0
Johnston, et al. Best Current Practice [Page 90]
RFC 3665 SIP Basic Call Flow Examples December 2003
4. Security Considerations
Since this document contains examples of SIP session establishment,
the security considerations in RFC 3261 [1] apply. RFC 3261
describes the basic threats including registration hijacking, server
impersonation, message body tampering, session modifying or teardown,
and denial of service and amplification attacks. The use of HTTP
Digest as shown in this document provides one-way authentication and
protection against replay attacks. TLS transport is used in
registration scenarios due to the lack of integrity protection in
HTTP Digest and the danger of registration hijacking without it, as
described in RFC 3261 [1]. A full discussion of the weaknesses of
HTTP Digest is provided in RFC 3261 [1]. The use of TLS and the
Secure SIP (sips) URI scheme provides a better level of security
including two-way authentication. S/MIME can provide end-to-end
confidentiality and integrity protection of message bodies, as
described in RFC 3261.
5. References
5.1. Normative References
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[2] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
SDP", RFC 3264, April 2002.
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach,
P., Luotonen, A. and L. Stewart, "HTTP authentication: Basic and
Digest Access Authentication", RFC 2617, June 1999.
[4] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
5.2. Informative References
[5] Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K.
Summers, "Session Initiation Protocol (SIP) Public Switched
Telephone Network (PSTN) Call Flows", BCP 76, RFC 3666, December
2003.
6. Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in
Johnston, et al. Best Current Practice [Page 91]
RFC 3665 SIP Basic Call Flow Examples December 2003
this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in BCP-11. Copies of
claims of rights made available for publication and any assurances of
licenses to be made available, or the result of an attempt made to
obtain a general license or permission for the use of such
proprietary rights by implementors or users of this specification can
be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
7. Acknowledgments
This document is has been a group effort by the SIP and SIPPING WGs.
The authors wish to thank everyone who has read, reviewed, commented,
or made suggestions to improve this document.
Thanks to Rohan Mahy, Adam Roach, Gonzalo Camarillo, Cullen Jennings,
and Tom Taylor for their detailed comments during the final review.
Thanks to Dean Willis for his early contributions to the development
of this document.
The authors wish to thank Kundan Singh for performing parser
validation of messages.
The authors wish to thank the following individuals for their
participation in the review of this call flows document: Aseem
Agarwal, Rafi Assadi, Ben Campbell, Sunitha Kumar, Jon Peterson, Marc
Petit-Huguenin, Vidhi Rastogi, and Bodgey Yin Shaohua.
The authors also wish to thank the following individuals for their
assistance: Jean-Francois Mule, Hemant Agrawal, Henry Sinnreich,
David Devanatham, Joe Pizzimenti, Matt Cannon, John Hearty, the whole
MCI WorldCom IPOP Design team, Scott Orton, Greg Osterhout, Pat
Sollee, Doug Weisenberg, Danny Mistry, Steve McKinnon, and Denise
Ingram, Denise Caballero, Tom Redman, Ilya Slain, Pat Sollee, John
Truetken, and others from MCI WorldCom, 3Com, Cisco, Lucent and
Nortel.
Johnston, et al. Best Current Practice [Page 92]
RFC 3665 SIP Basic Call Flow Examples December 2003
8. Authors' Addresses
All listed authors actively contributed large amounts of text to this
document.
Alan Johnston
MCI
100 South 4th Street
St. Louis, MO 63102
USA
EMail: alan.johnston@mci.com
Steve Donovan
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: sdonovan@dynamicsoft.com
Robert Sparks
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: rsparks@dynamicsoft.com
Chris Cunningham
dynamicsoft, Inc.
5100 Tennyson Parkway
Suite 1200
Plano, Texas 75024
USA
EMail: ccunningham@dynamicsoft.com
Kevin Summers
Sonus
1701 North Collins Blvd, Suite 3000
Richardson, TX 75080
USA
EMail: kevin.summers@sonusnet.com
Johnston, et al. Best Current Practice [Page 93]
RFC 3665 SIP Basic Call Flow Examples December 2003
9. Full Copyright Statement
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assignees.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Johnston, et al. Best Current Practice [Page 94]