一、 问题现象
某公司的本地Lync 2013与国外SFB Server 2015配置联盟后,本地Lync用户和联盟用户能够进行IM文字沟通,但视频和语音始终建立不起来,A/V视频语音连接振铃后10s自动中断。
环境架构图如下:
二、问题分析
1、首先我确定了两个组织之间的Lync联盟和A/V发布使用的端口是没有问题的。
2、 在进行A/V呼叫时使用Lync Debug Tool,抓取数据包。
首先我们要了解一个完整的SIP协议会话建立的过程。一个完整的SIP协议会话建立过程如下:
终端A首先发送一个INVITE(邀请)给终端B,INVITE中会包含连接到终端A需要经过的IP路径列表信息(Lync服务器收到INVITE信息后会根据cadidate列表中的IP地址信息逐一尝试去连接)。当终端B收到INVITE后会给终端A回复一个100 Trying告诉终端A回话正在尝试建立,并且尝试在终端B上振铃。接下来终端B会给终端A恢复一个180 Ringing振铃请求。接下来终端B会给终端A回复一个200 OK确认信息回复INVITE邀请,该数据包中包含终端A连接到终端B需要包含的IP路径地址信息。
信息确认完毕后终端A会回复一个ACK,然后开始建立媒体(A/V)会话直到会话结束。
3、 根据抓取的数据包分析:
我们能够看到在08:29:13时间点北京Lync服务器给南非Lync服务器发送了一个INVITE邀请,将连接到北京的Lync服务器需要经过的IP列表包含在cadidate列表中,但是该列表中使用的均是内部服务器IP(南非Lync服务器收到INVITE信息后会根据cadidate列表中的IP地址信息逐一尝试去连接,而cadidate列表中的IP均为内部私网IP,是无法连接成功的)。接下来南非Lync服务器给北京Lync服务器回复了100 Tring、180 Ringing和183 Session Progress。
一个正常的INVITE邀请数据包中的candidate如下:
在时间点08:29:19,南非Lync服务器回复了北京Lync服务器的 1 INVITE,将连接到南非Lync服务器需要经过的IP路径列表信息包含在candidate列表中。其中包含公网IP x.x.x.x。如图。
在时间点08:29:30,A/V连接自动中断了。(是由于南非Lync服务器尝试了所有candidate列表中的IP地址均无法成功连接北京Lync服务器)产生了错误提示:ms-client-diagnostics: 25; reason="A federated call failed to establish due to a media connectivity failure where both endpoints are internal";UserType="Callee";MediaType="audio" 通过错误提示判断Lync服务器无法判断当前连接为外部连接,无认为是一个内部连接(由于candidate列表中均为内部IP)。这种情况通常是Lync边缘服务器未配置“A/V边缘服务器已启用NAT”设置导致。
三、解决方法
1、基于上述分析,我们需要调整当前Lync边缘服务器的设置,具体操作如下:
1)、启用Lync边缘服务器的“A/V边缘服务器已启用NAT”设置。
2)、配置每台边缘服务器的NAT后的公网地址
3)、发布Lync拓扑。
4)、重启每台边缘服务器上的A/V服务。(最好在每台边缘服务器上重新运行一下Lync部署向导)
原文地址:http://jialt.blog.51cto.com/4660749/1794136