Должен ли SIP UA ждать Ack перед повторным приглашением? - PullRequest
0 голосов
/ 26 февраля 2019

Попытка определить правильное поведение в этом сценарии.SIP B2BUA отправляет приглашение в SBC, SBC отвечает 200 OK, но перед получением ACK SBC отправляет повторное приглашение для изменения SDP, на которое B2BUA отвечает 500 Race Condition.

Поток вызовов:

Client          B2BUA            SBC
  |  Invite ->    |               |
  |               |  Invite ->    |
  |               |  <- 200 OK    |
  |   <- 200 OK   |               |
  |               |               |
  |               |  <- re-Invite |
  |               |  500 Race ->  |
  |               |               |

В RFC3261 я не могу найти никаких ссылок, что необходимо ждать ACK.В разделе 14.1 я вижу ссылку:

  2. If there is an ongoing INVITE server transaction, the TU MUST
     wait until the transaction reaches the confirmed or terminated
     state before initiating the new INVITE.

Глядя на диаграмму транзакций сервера INVITE, кажется, что 200 OK перевел транзакцию сервера в завершенное состояние, но я не уверен, что этоправильный контекст для этого сценария.

Должен ли SBC ждать ACK перед отправкой повторного приглашения, или B2BUA должен принять повторное приглашение?

1 Ответ

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

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

Обратите внимание, что UAC НЕ ДОЛЖЕН инициировать новую транзакцию INVITE в диалоговом окне
, пока выполняется другая транзакция INVITE в любом направлении
.

  1. If there is an ongoing INVITE client transaction, the TU MUST
     wait until the transaction reaches the completed or terminated
     state before initiating the new INVITE.

  2. If there is an ongoing INVITE server transaction, the TU MUST
     wait until the transaction reaches the confirmed or terminated
     state before initiating the new INVITE.

Поэтому вам следует подождать, чтобы сначала получить ACK, чтобы быть уверенным в том, что первая обработка INVITE завершена, поскольку в соответствии с результатом транзакции INVITE ожидается, что какое-то сообщение закроет диалог.Для принятого INVITE это необходимое сообщение: ACK .После этого вы можете отправить RE-INVITE, чтобы внести некоторые изменения в SDP или что-то в этом роде.

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