Ретроспектива научно-образовательной школы проф. Б. С. Гольдштейна
In English
На главную In English

Книги
Статьи 2010-х
Статьи 2000-х
Статьи 1990-х
Статьи 1980-х
Патенты
На английском
Протокол SIP

Протокол SIP

Гольдштейн Б.С., Зарубин А.А., Саморезов В.В.

СПб.: BHV-Санкт-Петербург, 2005.

Пятый справочник из серии "Телекоммуникационные протоколы ВСС РФ", посвященный протоколу SIP. В нем приводятся сведения о принципах организации и функционирования протокола SIP (Session Initiation Protocol), широко используемого сегодня в IP-телефонии и являющегося наиболее вероятным кандидатом на ведущую роль в сетях связи следующего поколения NGN. Описываются сообщения SIP, процедуры управления соединениями в IP-сети и между сетями IP и ТфОП, процедуры аутентификации, защиты информации, обеспечения безопасности. Рассматриваются расширения SIP, обеспечивающие взаимодействие сети IP с телефонной сетью при создании и поддержке сеансов связи ТфОП-IP-ТфОП, ТфОП-IP и IP-ТфОП. Излагаются задачи преобразования сигнализации SIP при взаимодействии с другими протоколами сетей NGN. Освещаются вопросы тестирования SIP и пути реализации на базе этого протокола ряда известных и новых инфокоммуникационных услуг.

 

 

Содержание

Предисловие 14

Глава 1. Принципы и возможности SIP 18

1.1. Протокол SIP в IP-сетях 19
1.2. Адресация в сетях SIP 23
1.3. Уровни протокола SIP 23
1.4. SIP и HTTP 25
1.5. Вызовы SIP 26

Глава 2. Агент пользователя 29
2.1. Логический объект Агент пользователя 29
2.2. Клиент агента пользователя UAC. 29
2.2.1. Создание запроса 30
2.2.1.1. Формирование поля Request-URI 30
2.2.1.2. Формирование заголовка To 30
2.2.1.3. Формирование заголовка From 31
2.2.1.4. Формирование заголовка Call-ID. 32
2.2.1.5. Формирование заголовка Cseq 33
2.2.1.6. Формирование заголовка Max-Forwards 33
2.2.1.7. Формирование заголовка Via 33
2.2.1.8. Формирование заголовка Contact 34
2.2.1.9. Формирование заголовков Supported и Require 34
2.2.1.10. Дополнительные компоненты сообщения 35
2.2.1.11. Передача запроса 35
2.2.2. Обработка ответов 36
2.2.2.1. Ошибки уровня транзакций 37
2.2.2.2. Неизвестные ответы 37
2.2.2.3. Заголовки Via 37
2.2.2.4. Обработка ответов группы 3хх. 37
2.2.2.5. Обработка ответов группы 4хх. 39
2.3. Сервер агента пользователя (UAS) 40
2.3.1. Процедура обработки запросов 41
2.3.1.1. Определение типа запроса 41
2.3.1.2. Определение типа заголовка. 41
2.3.1.3. Обработка полей To и Request-URI 41
2.3.1.4. Обработка одинаковых запросов. 42
2.3.1.5. Обработка заголовка Require. 42
2.3.1.6. Обработка содержимого тела сообщения 43
2.3.1.7. Применение расширений 43
2.3.2. Создание ответа 44
2.3.2.1. Передача предварительного ответа 44
2.3.2.2. Заголовки и параметры «tag» 44
2.3.2.3. Действие UAS без сохранения состояний 45

Глава 3. Сообщения протокола SIP 46
3.1. Структура сообщений 46
3.2. Заголовки сообщений 47
3.2.1. Формат заголовка 47
3.2.2. Заголовок Accept 51
3.2.3. Заголовок Accept-Encoding 51
3.2.4. Заголовок Accept-Language 51
3.2.5. Заголовок Alert-Info.51
3.2.6. Заголовок Allow 52
3.2.7. Заголовок Allow-Events52
3.2.8. Заголовок Authentication-Info 53
3.2.9. Заголовок Authorization 53
3.2.10. Заголовок Call-ID 53
3.2.11. Заголовок Call-Info 54
3.2.12. Заголовок Contact. 54
3.2.13. Заголовок Content-Disposition 55
3.2.14. Заголовок Content-Encoding 56
3.2.15. Заголовок Content-Language.57
3.2.16. Заголовок Content-Length 57
3.2.17. Заголовок Content-Type 58
3.2.18. Заголовок Cseq. 58
3.2.19. Заголовок Date 58
3.2.20. Заголовок Error-Info 59
3.2.21. Заголовок Event 59
3.2.22. Заголовок Expires 60
3.2.23. Заголовок From. 60
3.2.24. Заголовок In-Reply-To 60
3.2.25. Заголовок Max-Forwards 61
3.2.26. Заголовок Min-Expires.61
3.2.27. Заголовок MIME-Version 61
3.2.28. Заголовок Organization 62
3.2.29. Заголовок Path62
3.2.30. Заголовок Priority 63
3.2.31. Заголовок Privacy63
3.2.32. Заголовок Proxy-Authenticate 64
3.2.33. Заголовок Proxy-Authorization 64
3.2.34. Заголовок Proxy-Require 65
3.2.35. Заголовок P-Asserted-Identity 65
3.2.36. Заголовок P-Preferred-Identity 66
3.2.37. Заголовок P-Media-Authorization 66
3.2.38. Заголовок The P-Associated-URI 67
3.2.39. Заголовок P-Called-Party-ID 67
3.2.40. Заголовок P-Visited-Network-ID 68
3.2.41. Заголовок P-Access-Network-Info 68
3.2.42. Заголовок P-Charging-Function-Addresses. 69
3.2.43. Заголовок P-Charging-Vector.70
3.2.44. Заголовок P-DCS-Trace-Party-ID 70
3.2.45. Заголовок P-DCS-OSPS 71
3.2.46. Заголовки P-DCS-BILLING-INFO 72
3.2.47. Заголовок P-DCS-LAES и P-DCS-REDIRECT. 72
3.2.48. Заголовок RAck. 73
3.2.49. Заголовок Reason 73
3.2.50. Заголовок Record-Route 74
3.2.51. Заголовок Refer-To 74
3.2.52. Заголовок Reply-To 74
3.2.53. Заголовок Require.75
3.2.54. Заголовок Retry-After 75
3.2.55. Заголовок Route 75
3.2.56. Заголовок Rseq. 76
3.2.57. Заголовки Security-Client, Security-Server, Security-Verify. 76
3.2.58. Заголовок Server. 77
3.2.59. Заголовок Service-Route 77
3.2.60. Заголовок Subject 78
3.2.61. Заголовок Subscription-State.78
3.2.62. Заголовок Supported.79
3.2.63. Заголовок Timestamp 79
3.2.64. Заголовок To.79
3.2.65. Заголовок Unsupported 79
3.2.66. Заголовок User-Agent 80
3.2.67. Заголовок Via 80
3.2.68. Заголовок Warning 81
3.2.69. Заголовок WWW-Authenticate. 81
3.3. Назначение и формат запросов. 89
3.3.1. Структура запросов 89
3.3.2. Запрос INVITE 90
3.3.3. Сообщение ACK91
3.3.4. Сообщение СANCEL91
3.3.5. Сообщение BYE.92
3.3.6. Сообщение REGISTER.92
3.3.7. Сообщение OPTIONS 92
3.3.8. Сообщение INFO. 93
3.3.9. Сообщение PRACK 94
3.3.10. Сообщение UPDATE 95
3.3.11. Сообщения SUBSCRIBE и NOTIFY 98
3.3.12. Сообщение REFER 101
3.3.13. Сообщение MESSAGE.102
3.4. Назначение и формат ответов на запросы.106
3.4.1. Информационные ответы 1хх 107
3.4.2. Ответы об успешной обработке запроса 2xx 108
3.4.3. Ответы о перенаправлении вызова 3xx 109
3.4.4. Ответы об ошибке в запросе 4xx 110
3.4.5. Ответы об отказе сервера 5xx 113
3.4.6. Ответы о полной невозможности установить соединение 6xx 114

Глава 4. Процедуры управления соединением 115
4.1. Диалоги.115
4.2. Процедура создания диалога 116
4.2.1. Действия UAS 116
4.2.2. Действия UAC 118
4.3. Процедура передачи и приема запросов в ходе диалога 118
4.3.1. Действия UAC при создании запроса 119
4.3.2. Действия UAC при обработке ответов 121
4.3.3. Действия UAS 121
4.3.4. Процедура завершения диалога 122
4.4. Транзакции122
4.4.1. Процедуры функционирования клиентских транзакций.124
4.4.2. Клиентская INVITE-транзакция 125
4.4.3. Конечный автомат клиентской INVITE-транзакции.125
4.4.4. Формирование запроса ACK.128
4.4.5. Клиентская не-INVITE-транзакция 129
4.4.6. Конечный автомат клиентской не-INVITE транзакции 130
4.4.7. Соответствие ответов клиентским транзакциям 132
4.4.8. Процедуры функционирования серверных транзакций 132
4.4.9. Серверная INVITE-транзакция.133
4.4.10. Серверная не-INVITE-транзакция 135
4.4.11. Соответствие запросов серверным транзакциям136
4.5. SDL-диаграммы для конечных автоматов транзакций139
4.5.1. Клиентская INVITE-транзакция 139
4.5.2. Клиентская не-INVITЕ-транзакция 143
4.5.3. Серверная INVITЕ-транзакция.146
4.5.4. Серверная не-INVITЕ-транзакция 149
4.6. Процедура регистрации 152
4.6.1. Процедура формирования запроса REGISTER 154
4.6.2. Создание связок 156
4.6.2.1. Продолжительность действия контактного адреса 157
4.6.2.2. Приоритеты среди контактных адресов. 157
4.6.3. Удаление связок 158
4.6.4. Обновление связок 158
4.6.5. Определение адреса registrar 159
4.6.6. Отправка запроса 159
4.7. Процедура обработки запроса REGISTER 160
4.8. Процедура запроса информации о функциональных возможностях 164
4.8.1. Создание запроса OPTIONS 165
4.8.2. Обработка запроса OPTIONS 165
4.9. Процедура отмены запроса.167
4.9.1. Действия клиента 167
4.9.2. Действия сервера.168
4.10. Инициирование сеансов связи 169
4.10.1. Процедуры UAC. Создание начального запроса INVITE 171
4.10.2. Процедуры UAC. Обработка ответов на запрос INVITE.173
4.10.2.1. Ответы 1х 173
4.10.2.2. Ответы 3х 174
4.10.2.3. Ответы 4xx, 5xx и 6xx 174
4.10.2.4. Ответы 2х 174
4.10.3. Процедуры UAS. Обработка запроса INVITE 175
4.10.3.1. Текущая стадия обработки 176
4.10.3.2. Перенаправление запроса INVITE 177
4.10.3.3. Отклонение запроса INVITE 177
4.10.3.4. Прием запроса INVITE 177
4.11. Процедуры модификации сеансов связи.178
4.11.1. Действия UAC 179
4.11.2. Поведение UAS.180
4.12. Процедуры разрушения сеансов связи183
4.12.1. Разрушение сеанса с помощью запроса BYE. Работа UAC.183
4.12.2. Разрушение сеанса с помощью запроса BYE. Работа UAS 183

Глава 5. Прокси-серверы SIP 184
5.1. Назначение прокси-сервера-SIP 184
5.2. Функции прокси-сервера с сохранением состояний 186
5.2.1. Проверка правильности составления запроса 187
5.2.1.1. Проверка корректности синтаксиса. 187
5.2.1.2. Проверка схемы URI 188
5.2.1.3. Проверка заголовка Max-Forwards. 188
5.2.1.4. Проверка наличия замкнутого пути 188
5.2.1.5. Проверка заголовка Proxy-Require. 189
5.2.1.6. Проверка заголовка Proxy-Authorization. 189
5.2.2. Предварительная обработка маршрутной информации 189
5.2.3. Определение адресов пересылки 190
5.2.4. Пересылка запроса.192
5.2.4.1. Копирование запроса 193
5.2.4.2. Обновление содержимого поля Request-URI 193
5.2.4.3. Обновление содержимого заголовка Max-Forwards. 193
5.2.4.4. Добавление значения Record-Route (опционально). 193
5.2.4.5. Добавление дополнительных заголовков 195
5.2.4.6. Заключительная обработка маршрутной информации 195
5.2.4.7. Определение адреса, порта и транспортного протокола для пересылки следующему элементу 196
5.2.4.8. Добавление значения в заголовок Via 199
5.2.4.9. Добавление заголовка Content-Length (в случае необходимости) 199
5.2.4.10. Пересылка запроса 199
5.2.4.11. Установка таймера C 199
5.2.5. Обработка ответов199
5.2.5.1. Обнаружение буфера ответов 200
5.2.5.2. Перезапуск таймера С при помощи предварительных ответов 200
5.2.5.3. Удаление верхнего значения заголовка Via 200
5.2.5.4. Добавление ответа в буфер ответов 201
5.2.5.5. Проверка необходимости немедленной пересылки ответа 202
5.2.5.6. Выбор «наилучшего» окончательного ответа из буфера ответов 202
5.2.5.7. Объединение значений в заголовке Authorization 204
5.2.5.8. Перезапись значений заголовка Record-Route 204
5.2.5.9. Пересылка ответа 205
5.2.5.10. Создание запросов CANCEL 206
5.2.6. Обработка таймера С206
5.2.7. Обработка ошибок транспортного уровня SIP 207
5.2.8. Обработка запроса CANCEL207
5.3. Функции прокси-сервера без сохранения состояний 208
5.4. Работа с заголовком Route и полем Request-URI 210
5.5. Работа с заголовком Route и полем Request-URI 211
5.5.1. Взаимодействие через исходящий и входящий прокси-серверы 211
5.5.2. Прохождение сообщений через strict-router 213
5.5.3. Прохождение сообщений через прокси-сервер с перезаписью значения в заголовке Record-Route 215
5.6. Назначение и функции сервера перенаправления 216

Глава 6. Процедуры HTTP-аутентификации 218
6.1. Аутентификация в SIP 218
6.2. Процедуры аутентификации «пользователь-пользователь».220
6.3. Процедуры аутентификации «прокси-сервер-пользователь» 222
6.4. Схема аутентификации «Digest» 223

Глава 7. Защита тела сообщения средствами S/MIME 229
7.1. S/MIME сертификаты 229
7.2. Обмен ключами S/MIME 231
7.3. Защита тела сообщения 234
7.4. SIP-туннелирование 235
7.4.1. Обеспечение целостности SIP сообщений 236
7.4.2. Шифрование при туннелировании 238

Глава 8. Процедуры обеспечения безопасности 240
8.1. Типы угроз.241
8.1.1. Злоумышленная регистрация 241
8.1.2. Имитация сервера 242
8.1.3. Порча тела сообщения243
8.1.4. Срыв сеансов связи 244
8.1.5. Отказ в обслуживании (DoS-атаки) 244
8.2. Механизмы обеспечения безопасности 246
8.2.1. Безопасность транспортного и сетевого уровней 247
8.2.2. Схема SIPS URI248
8.2.3. HTTP-аутентификация 249
8.2.4. S/MIME 249
8.3. Реализация механизмов обеспечения безопасности 250
8.3.1. Требования для разработчиков оборудования SIP 250
8.3.2. Решения по обеспечению безопасности 250
8.3.2.1. Регистр 251
8.3.2.2. Междоменные запросы. 252
8.3.2.3. Запросы при отсутствии локального прокси-сервера 254
8.3.2.4. Защита от DoS-атак 256

Глава 9. Алгоритмы установления соединения 257
9.1. Установление соединения с участием прокси-сервера 257
9.2. Установление соединения с участием сервера перенаправления 267

Глава 10. Транспортный уровень протокола SIP 273
10.1. Назначение транспортного уровня 273
10.2. Работа клиента при передаче запросов 274
10.3. Работа клиента при получении ответов 276
10.4. Работа сервера при получении запросов 277
10.5. Работа сервера при передаче ответов 278
10.6. Длина тела сообщения 279
10.7. Обработка ошибок 280

Глава 11. Протокол SIP-T для телефонии 281
11.1. Назначение и особенности протокола SIP-T 281
11.2. Сценарии организации взаимодействия 282
11.2.1. Применение SIP-T при транзите (ТфОП-IP-ТфОП) 282
11.2.2. Процедуры организации связи из ТфОП в IP-сеть 284
11.2.3. Процедуры организации связи из IP-сети в ТфОП 285
11.3. Компоненты протокола SIP-T.286
11.3.1. Использование протокола SIP.286
11.3.2. Процедуры инкапсуляции сигнальных сообщений 286
11.3.3. Процедуры преобразования сигнальных сообщений 289
11.3.4. Поддержка передачи сигнальных сообщений во время сеанса 290
11.4. Согласование содержимого сообщений протокола SIP 290
11.5. Процедуры обеспечения безопасности 293

Глава 12. Преобразование ISUP–SIP 294
12.1. Общие принципы взаимодействия 294
12.2. Требования к SIP при взаимодействии с ТфОП 295
12.2.1. Процедуры прозрачной передачи сообщений ISUP 295
12.2.2. Процедуры поддержки формата MIME 295
12.2.3. Процедуры передачи многочастотного набора DTMF295
12.2.4. Процедуры проключения речевых трактов в предответном состоянии 296
12.2.5. Обмен транзакциями во время активного сеанса 296
12.2.6. Поддержка механизмов обеспечения конфиденциальности 297
12.2.7. Информация о причинах, вызвавших передачу запроса CANCEL 297
12.3. Процесс обмена сообщениями 297
12.3.1. Установление соединения (быстрый ответ не используется) 298
12.3.2. Установление соединения (быстрый ответ). 299
12.3.3. Таймеры протокола SIP.300
12.3.4. Срабатывание таймера ISUP T9 302
12.3.5. Ошибки в сети SIP при установлении соединения 303
12.3.6. Перенаправление запросов в сети SIP 304
12.3.7. Установление соединения прерывается со стороны ТфОП306
12.4. Конечные автоматы SIP-T при взаимодействии ISUP-SIP 308
12.4.1. Начало получения адресной информации 308
12.4.2. Процедуры преобразования сообщения IAM в запрос INVITE 308
12.4.3. Сообщение 100 310
12.4.4. Сообщения группы 18х 310
12.4.5. Сообщения группы 2хх 312
12.4.6. Сообщения группы 3хх 313
12.4.7. Сообщения групп 4хх – 6хх 313
12.4.8. Преобразование кодов ответов SIP в коды событий ISUP 313
12.4.9. Получение сообщения REL 315
12.4.10. Срабатывания таймера ISUP T11 316
12.5. Примеры сценариев для случая соединения ТфОП – SIP 316
12.5.1. Успешное соединение абонента ТфОП с пользователем сети SIP 317
12.5.2. Соединение от абонента ТфОП к пользователю сети SIP, быстрый ответ 322
12.5.3. Соединение от абонента УПАТС к пользователю сети SIP327
12.5.4. Неуспешное установление соединения из ТфОП в сеть SIP. Пользователь не найден 331
12.5.5. Неуспешное установление соединения из ТфОП в сеть SIP. Линия занята 333
12.5.6. Неуспешное установление соединения. Линия занята. IAM содержит параметр interworking 336
12.5.7. Неуспешное установление соединения. Срабатывает таймер 339
12.5.8. Неуспешное установление соединения. Срабатывает таймер.
Прокси-сервер в режиме без сохранения состояния 342
12.5.9. Неуспешное установление соединения. Вызывающий абонент кладет трубку, не дождавшись установления соединения 344

Глава 13. Преобразование SIP–ISUP 349
13.1. Процесс обмена сообщениями 349
13.1.1. Установление соединения (быстрый ответ не используется) 349
13.1.2. Установление соединения (быстрый ответ). 351
13.1.3. Срабатывание таймера Т7 352
13.1.4. Срабатывание таймеров SIP 353
13.1.5. Ошибка установления соединения на стороне ТфОП 354
13.1.6. В сообщении АСМ содержится код причины 355
13.1.7. Пользователь SIP прерывает установление соединения 356
13.2. Конечные автоматы SIP-T при взаимодействии SIP-ISUP.358
13.2.1. Получение запроса INVITE 358
13.2.2. Процедуры преобразования INVITE в IAM359
13.2.3. Срабатывание таймера ISUP Т7 362
13.2.4. Получение сообщения CANCEL или BYE 362
13.2.5. Получение сообщения REL363
13.2.6. Преобразование кодов причины ISDN в коды ответов сети SIP364
13.2.7. Получение предварительного ответа ACM 367
13.2.8. Получение сообщения АСМ 367
13.2.9. Получение сообщений CON или ANM 368
13.2.10. Срабатывание таймера Т9 369
13.2.11. Получение сообщения CPG.369
13.2.12. Получение АСК370
13.3. Примеры сценариев и сообщений для вызовов SIP-ТфОП 370
13.3.1. Успешное соединение из сети SIP в ТфОП.371
13.3.2. Успешное соединение из сети SIP к абоненту УПАТС 378
13.3.3. Соединение из сети SIP в ТфОП в условиях перегрузки шлюза385
13.3.4. Cоединения из сети SIP в SIP с использованием ENUM Query 393
13.3.5. Неуспешное соединение из SIP в ТфОП: сообщение об ошибке из ТфОП 398
13.3.6. Неуспешное соединение из сети SIP в ТфОП: ТфОП отклоняет вызов, передавая REL с кодом причины 404
13.3.7. Неуспешное соединение из сети SIP в ТфОП: срабатывает таймер ожидания шлюзом сообщения ANM 407

Глава 14. Формирование телефонных URI 413
14.1. Телефонные SIP URI 413
14.2. Процедура преобразования формата ISUP в формат tel URL 415
14.3. Процедура преобразования формата tel URL в формат ISUP 416

Глава 15. Преобразование, тестирование и реализация SIP 417
15.1. Подходы к преобразованию сигнализации SIP 417
15.2. Тестирование протокола SIP 421
15.3. Реализация услуг на базе SIP 422
15.4. PINT и SPIRITS 427

Глава 16. Quo Vadis? 430
16.1. Дальнейшее развитие SIP 430
16.2. SIP в мобильных сетях 3G 431
16.3. Работа с NAT 440

Список сокращений 443

Глоссарий 449

Литература 452

 

 

Обратно в Книги