会话发起协议 (Session Initiation Protocol, SIP) 是一种通信协议,用于指示和控制 VoIP 和即时通信应用程序会话。SIP 可用于在用户之间建立单播或多播会话,也可用于设置和终止语音或视频通话。
SIP 协议独立于底层传输协议,支持使用 TCP 代理和 UDP 代理进行 SIP 负载均衡。为了安全传输,SIP 使用 TLS 进行加密。SIP 中的会话描述协议 (Session Description Protocol, SDP) 用于指定媒体格式。媒体流使用实时传输协议 (Real-time Transport Protocol, RTP) 或安全 RTP (Secure RTP, SRTP)。
用户代理 (User Agent, UA) 是用于创建或接收 SIP 消息的逻辑网络端点。在大多数实施中,设置涉及用户代理程序和代理,如会话边界控制器 (Session Border Controller, SBC)。
SIP 客户端使用以下四路机制向服务器注册:
UA 客户端 (UA Client, UAC),即 SIP 客户端,用于发起请求。请求始终是关键字,如
REGISTER
、INVITE
或BYE
。UA 服务器 (UA Server, UAS) 使用质询进行响应。
客户端使用请求和令牌(取决于公钥或私钥加密模式)进行响应。
服务器使用令牌进行身份验证,并使用
OK
进行响应。
有关 SIP 及相关呼叫流程的更多信息,请参阅 SIP RFC。
以下章节介绍在 NSX Advanced Load Balancer 上支持 SIP 应用程序所需的配置。
将 NSX Advanced Load Balancer 与 SIP 应用程序集成
以下是用户代理 (UA1) 尝试与另一个用户代理 (UA2) 建立通话时的呼叫工作流:
UA1 ——>(邀请)——–> 代理
代理 —->(100 正在尝试)—-> UA1
代理 —->(邀请)——–> UA2
UA2 ——>(180 正在尝试)—> 代理
代理 —->(180 正在尝试)—> UA1
UA2 ——>(摘机)——> 代理
UA2 ——>(200 正常)——–> 代理
代理 —->((200 正常)——–> UA1
NSX Advanced Load Balancer 部署在代理和增值服务 (Value Added Service, VAS) 之间,其中 SIP 请求和响应通过解析程序传输,并且调用 ID 将进行哈希处理。NSX Advanced Load Balancer 还会监控服务器运行状况,因此无需重新传输邀请。
支持的功能
目前,SIP 实施已在 OpenStack 无权访问云和 VMware 云上经过验证,但并不限于特定云类型。以下是此集成支持的功能:
对基于 IPV4 的 SIP 进行负载均衡。
基于 UDP 的互操作性,可转换为与 CSCF 和应用程序服务器的互操作性。
UDP 代理网络配置文件。
SIP 虚拟服务应用程序配置文件,它使用 UDP 代理网络配置文件或 TCP 代理网络配置文件。
基于 UDP 代理的 SIP 虚拟服务。
基于唯一调用 ID 的一致哈希负载均衡。
SIP 运行状况监控器,用于检测 SIP 服务器故障。
目前,仅在 CLI 上支持与 SIP 相关的配置。
限制
目前 SIP 不支持以下功能:
保留 SIP 虚拟服务和应用程序配置文件的客户端 IP
内嵌运行状况监控
SIP TLS 和加密
记录路由选项
IPv6