SIP 会话亲缘关系和故障转移

WebSphere 中的 SIP 提供会话亲缘关系和故障转移。

SIP 会话亲缘关系

集群中的单个 SIP 容器将处理所有与单个对话关联的消息。如果容器在对话过程中失败,那么集群中的单个服务器将接管该对话的职责。将由 SIP 代理负责根据会话标识(包括逻辑服务器名)维护会话亲缘关系。逻辑服务器信息将由 SIP 容器发布,并由 SIP 代理通过“工作负载管理系统”(WLM) 使用。

根据会话标识传递 SIP 消息

ibmsid 嵌入在各种 SIP 消息中,并且用于路由至在 SIP 应用程序服务器上运行的特定会话。一般说来,VIA 头总是用来路由响应。容器总是将 ibmsid 嵌入在与 SIP 应用程序服务器关联的 VIA 中。以下是这种 VIA 头的示例:

Via: SIP/2.0/UDP 9.51.252.69:5063;ibmsid=sipcontainer1.1153242645968.4_2_2;branch=z9hG4bK920196437955379

对于代理应用程序,ibmsid(或会话标识)插入在 Record-Route 中从 UAC 接收到的初始请求中。UAS 将在响应中返回具有会话标识的相同 Record-Route。UAC 将在对话的后续请求中返回具有会话标识的路由头。例如:

Record-Route: <sip:protocol2.databeam.com:5060;transport=udp;ibmsid=sipcontainer1a.1138119214953.4_2_2;lr>
在此示例中,UAS 在响应中返回具有会话标识的相同 Record-Route,而 UAC 在对话的后续请求中返回具有会话标识的路由头。

对于 UAC 和 UAS 应用程序,充当 UAC 或 UAS 的容器将会话标识插入到“目标”标记 (UAS) 或“来源”标记 (UAC)(例如,“目标”标记 local.1132518053302_2_2)中。后续请求中将包括相同的“目标”或“来源”标记。

已编码的 URI 也将包含 ibmappid(非常类似于 ibmsid),然后可以在后续 HTTP 请求中发送该 ibmappid。此处要注意的一个要点是,IBM SIP 基础结构不支持事务级别故障转移。它仅支持稳定呼叫的对话故障转移。

以下一般规则说明 IBM SIP 基础结构如何决定要对嵌入到出站 SIP 消息中的联系人头使用的地址:
  • 独立 SIP 应用程序服务器将在需要插入到 SIP 消息中的联系人头中使用其自己的地址。
  • 如果 SIP 应用程序服务器前面是无状态 SIP 代理,那么该应用程序服务器将在需要插入到 SIP 消息中的联系人头中使用 SIP 代理的地址。SIP 应用程序服务器将通过 WLM 发现此地址。
  • 如果 SIP 应用程序服务器前面是无状态 SIP 代理,而该 SIP 代理前面又有 IP Sprayer,那么该应用程序服务器将在需要插入到 SIP 消息中的联系人头中使用 IP Sprayer 的地址。必须在 SIP 代理中通过管理控制台配置 IP Sprayer 的地址,并且会通过 UCF 将此地址发布至 SIP 应用程序服务器。
呼叫过程中的故障转移

服务器发生故障时,将在复制域中的其余容器上激活与故障服务器关联的会话。激活会话后,处理失败会话的容器会通过 WLM 将会话位置发布至集群前面的代理服务器。当与其中一个失败对话关联的消息到达代理时,代理会从 SIP 消息中提取会话标识,然后使用该会话标识查找新的容器。重新启动故障服务器后,该服务器将添加回集群中。然后,它将仅处理新近创建的对话。

图 1. 集群中的 SIP 容器故障转移(之前)

集群中的 SIP 容器故障转移

图 2. 集群中的 SIP 容器故障转移(之后)

集群中的 SIP 容器故障转移
汇聚应用程序和故障转移

所有与汇聚 HTTP/SIP 会话关联的消息将由代理使用已编码的 URI 和 SIP 会话亲缘关系路由至相同的后端容器。HTTP 和 SIP 使用相同的复制拓扑(它们共享相同的复制设置)。如果出现故障,那么与失败对话关联的 HTTP 和 SIP 请求都将被路由至相同的新后端服务器。当确定亲缘关系目标时,Jsession cookie 优先于代理中已编码的 URI。

图 3. 汇聚应用程序示例

集群中的 SIP 容器故障转移

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csip_sessionfail
文件名:csip_sessionfail.html