Почему мы отправляем 100 попытки в INVITE, а не в сообщения UPDATE или BYE? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь понять SIP и у меня есть один вопрос по этому поводу.Зачем нам нужно отправлять 100 попытки в INVITE, но та же логика не используется, например, для сообщений BYE, UPDATE, NOTIFY и т. Д.?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

С rfc3261 :

21.1.1 100 попытки

Этот ответ указывает, что запрос был получен сервером
следующего переходаи что от имени этого вызова
предпринимается какое-то неопределенное действие (например, с базой данных обращаются).
Этот ответ, как и все другие предварительные ответы, останавливает
повторную передачу ПРИГЛАШЕНИЯ UAC,Ответ 100 (Trying)
отличается от других предварительных ответов тем, что он никогда не
пересылается в восходящем направлении через прокси с отслеживанием состояния.

100 Попытка являетсяпредварительный ответ, используемый для остановки повторной передачи на предыдущем прыжке.Как написано выше, он не пересылается прокси с отслеживанием состояния.

Это в основном полезно для транзакции, которая потребует времени для завершения: то есть, когда окончательный ответ не может быть отправлен каккак можно скорее.

Таким образом, основной сценарий использования предназначен для начального INVITE, когда достижение последнего прыжка и получение окончательного ответа задерживается из-за длительной операции: поиск в базе данных, маршрутизация и, конечно, время звонка ...

ПРИМЕЧАНИЕ 1. Если «поиск и маршрутизация в базе данных» достаточно быстр, 1xx может достичь той же цели (остановить повторные передачи), но, поскольку они не являются «надежными», они могут быть потеряны на пути.Таким образом, 1xx для INVITE не может заменить 100 попыток надежным способом.

ПРИМЕЧАНИЕ2: 100 попытки могут быть отправлены для любого запроса.Однако SIP требует, чтобы на любой запрос non-initial-INVITE был получен немедленный окончательный ответ как можно скорее, поэтому, если где-то у вас есть длительная задержка, это означает, что ваша реализация (или развертывание) может быть не правильной или оптимальной.

0 голосов
/ 08 февраля 2019

Короче говоря.Вы можете использовать или не использовать 100 Trying, когда это разумно.

Non-INVITE:

Вы можете использовать 100 Trying для сообщений не-INVITE (транзакция не-INVITE)).Но все эти сообщения предназначены для того, чтобы на них можно было ответить как можно скорее.

Поэтому рекомендуется быстро отвечать на все сообщения, не являющиеся ПРИГЛАШЕНИЯМИ.100 Попытка не рекомендуется в этом случае.Если вы не можете ответить быстро, вы МОЖЕТЕ использовать 100 Попытки для транзакций без ПРИГЛАШЕНИЯ, чтобы предотвратить повторные передачи (замедлить повторные передачи до интервала T2).

Эта рекомендация предназначена только для уменьшения сетевых взаимодействий для транзакций без ПРИГЛАШЕНИЯ.

INVITE :

Кроме того, вы МОЖЕТЕ избежать отправки 100 попыток получения сообщений INVITE, если вы можете быстро ответить.RFC 3261 говорит:

Серверная транзакция ДОЛЖНА генерировать ответ 100 (Попытка), если только он не знает, что TU сгенерирует предварительный или окончательный ответ в течение 200 мс ...

0 голосов
/ 06 февраля 2019

enter image description here

Поскольку вызываемая сторона может быть недоступна (занят, нет присутствия и т. Д.).Ответ является предварительным, так что вызывающий абонент или любой промежуточный прокси-сервер может активировать некоторые таймеры, пока не прервет вызов.Как вы можете видеть в следующем потоке вызовов, сообщение ПРИГЛАШЕНИЕ от прокси к вызываемой стороне отправляется после ПОПЫТКИ.В случае, если сообщение INVITE распространяется через несколько прокси-серверов или через шлюзы, это может занять много времени, пока не будет получен сигнал RINGING или OK.

Для BYE - всегда можно резко повесить трубку.

UPDATE, NOTIFY, INFO - это входящие сообщения, в которых стороны уже установили сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...