Добавление значения Record-Route |
|
Если прокси-сервер требует, чтобы путь следования запросов диалога, который будет создан данным запросом, проходил через него, он должен поместить в копию свое значение заголовка Record-Route перед существующими значени-ями заголовка, даже если заголовок Route уже присутствует. Запросы, устанавливающие диалог, могут содержать предустановленный заголовок Route. Если запрос передается в режиме диалога, прокси-сервер помещает также свое значение заголовка Record-Route, если он желает, чтобы следующие запросы этого диалога прошли через него. Значения поля этого заголовка не окажут никакого влияния на маршруты route set, используемые оконечными терминалами. Прокси-сервер останется на пути следования запросов, если он решит не помещать значение Record-Route в запросы, которые передаются в режиме диалога. Однако при этом прокси-сервер будет удален из пути, когда конечная точка восстановит диалог после возможного сбоя. Прокси-сервер может поместить значение заголовка Record-Route в любой запрос. Если запрос не инициирует диалог, терминалы игнорируют это значение. Каждый прокси-сервер на пути запросов принимает решение о добавление значения Record-Route независимо - наличие заголовка Record-Route в запросе не обязывает прокси-сервер добавлять свое значение. URI, помещенный в качестве значения в заголовок Record-Route, должен быть SIP или SIPS URI. Этот URI должен содержать параметр «Ir», обозначающий, что данный прокси-сервер поддерживает стандартные механизмы маршрутизации, определенные в [57]. Адрес прокси-сервера может быть разным для каждого направления, куда пересылается запрос. URI не должен содержать параметр, указывающий транспортный протокол, за исключением случая, когда прокси-сервер знает, что следующий элемент, находящийся на пути запросов, поддерживает этот тип транспортного протокола. URI, указанный прокси-сервером, используется другим SIP-узлом для того, чтобы принять решение о маршрутизации. Данный прокси-сервер не имеет средств для получения информации о функциональных возможностях другого элемента, поэтому при помещении своего значения в Record-Route он ограничивается обязательными компонентами: SIP URI и транспортный протокол - TCP или UDP. URI, помещаемый в поле Record-Route, должен однозначно определять прокси-сервер SIP, поместивший его, для того чтобы следующие запросы прошли через этот прокси-сервер. Если Request-URI содержит SIPS URI или верхнее значение заголовка Route (после выполнения заключительной обработки, см. п. 5.2.4.6) содержит SIPS URI. то адрес, помещенный в заголовок Record-Route, также должен быть SIPS URI-Более того, если при этом запрос был получен не через TLS, прокси-сервер неможет не вставить заголовок Record-Route. Подобным образом прокси-сервер, который получает запрос через TLS, но создает запрос, не содержащий SIPS URI в поле Request-URI или в верхнем значении заголовка Route (после выполнения заключительной обработки), должен поместить заголовок Record-Route со значением не SIPS URI. URI, помещаемый прокси-сервером в поле заголовка Record-Route, действителен только на время жизни диалога. Прокси-сервер, сохраняющий информацию о состоянии диалога, например, может отказать в приеме будущих запросов с таким URI в поле Request-URI после разрушения диалога. Прокси-сервер, не сохраняющий информацию о состоянии диалога, не знает, когда разрушается диалог, однако он может создать значение, хранящее некоторую информацию; это значение используется для сравнения с идентификатором диалога (dialog ID) будущих запросов, вследствие чего прокси-сервер может отклонять запросы, не соответствующие этой информации. Терминалы не должны использовать URI, полученные из заголовка Record-Route вне диалога, для которого он был предназначен. В разделе 4.1 дана более детальная информация о том, как конечные точки используют значения заголовка Record-Route. Запись маршрута посредством заголовка Record-Route может быть востребована некоторыми услугами, когда прокси-сервер должен наблюдать за всеми сообщениями диалога. Однако это замедляет процесс обработки и ухудшает масштабируемость; таким образом, прокси-серверы должны вести запись маршрута, только если это требуется для услуги. |

