一说起视频会议服务器的设置,很多人第一反应就是翻终端配套说明书。但在H.323这套体系当中,真正决定会议能否正常发起、线路负载情况的,是网守组件。Gatekeeper译作网守,这个叫法很形象,它承担的工作就类似门卫加上调度员。终端接入这套网络,先要向它完成注册;发起呼叫请求前,需要经过它审核放行;有限的线路带宽资源,谁优先接入、谁排队等待,全部由它调度。参数配置好坏,直接决定开会时画面流畅度,还有呼叫响应快慢,是秒接通还是长时间等待。
先来聊很多人纠结的认证开关。终端H.323配置页面里,一般会看到认证模式选项,开启或者关闭。关闭状态下,设备可以直接注册到网守,不需要填写账号密码,部署操作简单,适合纯内部专网,物理层面和外网隔离的场景。但如果网守接入公网,或是多家单位共用这套系统,就必须开启认证。开启后,终端每次注册、发起呼叫都要提交LoginName和Password,网守校验通过才允许接入。这里有个容易遗漏的点,认证属于单向校验,只是设备向网守证明自身身份,网守不会反向向终端出示凭证。所以网守侧要提前录入每台终端对应的账号密码,就算终端填写信息无误,网守没有对应的记录,依旧无法注册成功。

注册保活这个参数,名称看着偏技术,理解起来不难。终端注册到网守之后,不是永久在线,需要定时发送消息告知网守自身处于正常运行状态,这个发送间隔就是注册刷新时间,类似心跳信号。心跳中断,网守就判定该终端离线,从在线列表移除。这个数值该怎么设置,多数文档默认300秒,也就是五分钟一次心跳;部分网守默认值更低,设置为120秒。间隔设置太短,终端持续发送心跳报文,网守要不停处理这类消息,接入终端数量多的时候,网守本身会被大量保活报文拖累。间隔设置过长,终端实际已经关机或者断网,网守还保留在线记录,呼叫路由转发过去自然无法接通。通常180至300秒区间比较合适,如果网络质量差、丢包率高,可以适当缩短,但不要低于30秒。和心跳配套的还有注册陈旧时间,代表网守多久没有收到心跳,就标记终端离线。该数值一般是心跳间隔的两倍,心跳设300秒,陈旧时间自动变成600秒,大多网守会自动关联,不用手动计算。
带宽管理是网守参数里最需要斟酌的部分。如果不向网守标注线路可用带宽上限,网守不会管控带宽占用,所有终端都可以申请高清码率,直到线路资源占满。第一步就是给网守设定总带宽上限。这个数值有一个简单参考:非交换式以太网实际传输效率大约三成,不能把全部带宽分配给视频会议业务,一般建议不超过总带宽的百分之二十。举个例子,一条100Mbps专线,分配20Mbps给会议业务属于偏激进方案,保守预留10到15Mbps稳定性更好。
设置总带宽之后,还要清楚单次呼叫消耗带宽。这里有个高频踩坑点:网守扣减带宽预算,不是按照呼叫实际码率,而是按两倍数值扣除。384kbps视频呼叫,网守账本记录扣除768kbps;64kbps音频呼叫,扣除128kbps。翻倍的原因在于H.323呼叫包含两条独立通道,一条负责呼叫信令,一条承载媒体流,网守带宽统计会把两条通道一并计入。所以计算可承载会议路数,不能直接拿终端显示码率去除总带宽,码率要先乘以二再计算。比如预留8Mbps用于会议,单路720p视频码率约1.5Mbps,翻倍之后就是3Mbps,最多稳定承载两路,第三路呼叫就容易资源不足。
还有单次呼叫最大带宽参数,用来限制单个终端单次能够申请的带宽。配置这项参数,是防止某一台终端使用超高码率,占用整条链路资源。可以根据日常常用会议画质设定,平时大多使用720p,单次上限设置3Mbps左右就足够,就算有人尝试开启1080p,网守会驳回申请,强制降低码率。
如果网络里终端分布在不同地域,中间跨越广域网链路,还需要配置远程带宽与邻居网守。远程带宽用来限制这条广域链路上能够承载的会议总路数,例如一条跨省2Mbps线路,链路上同时运行的视频呼叫不能超出承载上限,超出部分呼叫直接被网守拒绝,避免链路拥堵。邻居网守用于跨区域地址解析。A区域终端呼叫B区域终端,A区网守无法获取B区终端地址,就会把查询请求转发给B区网守。这项功能默认大概率关闭,需要手动开启LRQ转发,填入对端网守IP地址,否则跨区域呼叫失败,终端上报报错一般是目标不可达或者呼叫长时间无响应。
NAT穿透属于容易被忽略,一旦碰到就很难排查的问题。网守部署在NAT后方,终端处于外网环境,H.323相关端口需要在NAT设备上做端口映射,不然外网终端无法注册,就算注册成功呼叫也无法建立。部分网守支持H.460协议实现防火墙穿越,终端配置页有使用H.460选项,开启之后网守侧同步打开H.460支持,两端配合才能正常通信。如果服务器使用双网卡,一块内网一块外网,需要留意网守RAS监听端口绑定在哪块网卡。只绑定内网网卡的情况下,外网终端发送的注册请求无法抵达网守,抓包查看UDP 1718端口没有任何响应。这种情况要么把监听地址改为0.0.0.0,同时监听两块网卡,要么在NAT设备上,将1718、1719这两个RAS端口映射到网守内网地址。
防火墙配置不用过多解释,端口放行必须准确。H.323网守RAS信令使用UDP 1718、1719端口,呼叫信令Q.931依托TCP 1720,媒体流RTP占用一大段UDP端口区间,常规范围16384到32767。防火墙只放行1718端口,注册能够成功,但呼叫建立中途卡住,大概率是1720或者RTP端口被拦截。排查不能只看终端显示注册成功就认为一切正常,实际发起一次呼叫测试,确认完整信令流程可以跑完。
聊聊GNU Gatekeeper这款开源网守,配置文件格式简单,就是纯文本,利用方括号划分配置段,每段内部填写键值对。总带宽参数写在[Gatekeeper::Main]段,使用TotalBandwidth配置,单位为100bps,想要设置10Mbps就填写100000。注册保活时间对应TimeToLive,单位秒,默认300。状态端口默认7000,可以用telnet连接,查看当前在线终端列表和呼叫状态,排查故障比翻阅日志效率更高。命令行启动可增加-b参数指定带宽,该参数优先级高于配置文件内设置。
实际配置下来,网守参数不存在一套通用模板。认证开关取决于网络是否暴露外网;心跳时长根据终端稳定性、网络丢包情况调整;预留带宽参考线路条件和会议画质需求。先梳理清楚线路带宽、终端数量、常用码率,再按照这套逻辑逐步调试,远比直接照搬别人的配置文件靠谱。