首页 > 其他分享 >SIP or H.323我们应该选择谁?又如何实现互通?

SIP or H.323我们应该选择谁?又如何实现互通?

时间:2023-06-10 18:22:05浏览次数:50  
标签:协议 SIP 媒体 互通 信道 H.323 终端

在企业融合通信、视频会议领域,SIP协议被越来越广泛的使用,而H.323协议仍应用于传统的企业视入驻式频会议系统,还包括其他新兴的互联网基因的厂商进军企业云通信、视频会议市场,另辟蹊径,采用的自家私有协议。而在实际业务推广中,我们常会被问到到底是SIP还是H.323好?客户前期已经建设了基于H.323的视频会议系统,如何做互通?本文就视频会议领域控制协议的发展、演进趋势,及使用不同协议的系统如何互通做个深入的探讨。

 

说到协议的演进,让我们先从最古老的,大家不那么熟悉的H.323协议说起吧。H.323诞生于上世纪90年代后期(没错,处在我们这个飞速发展,变化的行当,90后出生就已经是“古老”了),协议被设计用于分组交换网络上的多媒体通信,简而言之,是VoIP通信协议的鼻祖。标准由ITU(国际电信联盟)制定,ITU的文章和标准不像IETF的RFC那么友好和开放,也不太容易从网上免费获得,而H.323的协议过程较之SIP要复杂,这里我通过和SIP的协议过程类比的方式,让大家简单又快速的熟悉他。

 

H.323组件

H.323定义的主要组件有:终端(Terminal)、网守(GK:Gatekeeper)、网关(Gateway)和多点控制单元(Multipoint Control Unit),Terminal就相当于SIP中的UA(User Agent),至于大家常听到的网守(GK),主要功能包括:终端认证、地址解析、带宽管理和路由控制等,就相当于SIP server,不同的是SIP将前述这些功能分配到不同的SIP Server来执行:SIP Proxy Server, SIP Redirect Server和SIP Registrar(在实际的技术实现上,往往集成在一个网元实体上),而这个GK则是兼具了这所有的功能。网关顾名思义就是处理和其他协议的翻译和互通。多点控制单元就我们常说的视频会议中的MCU,MCU的称谓来源于H.323协议,H.323在视频会议领域的历史地位可见一斑。

 

H.323协议过程

H.323定义了一组协议族,核心协议是H.225和H.245。让我们来看一个典型的H.323呼叫流程吧。

首先是终端和GK之间的H.225 RAS消息(Registration、Admission、Status),用于终端的向GK注册,呼叫接纳控制及状态查询。类似于SIP流程中的UA向SIP Proxy进行SIP register和注册刷新,用于终端注册及状态查询,商用实现中SIP Proxy通常都会启用的呼叫接纳控制(CAC:Call Admission Control)。

 

终端完成注册了,呼叫也被GK成功接纳了,接着就是H.225呼叫控制流程,SETUP携带主被叫的地址,GK根据被叫地址信息将呼叫路由至被叫,被叫回送CONNECT消息,携带H.245控制信道的传输层地址(IP地址+端口号)。听起来是不是有点像SIP INVITE和200 OK,所不同的是,SIP INVITE/200 OK/ACK的过程不但完成了呼叫选路,同时通过message body中的SDP协议完成了媒体能力的协商,而H.225的过程只完成了呼叫选路,并建立起H.245媒体控制信道,媒体协商的事情交给H.245去做。

 

接着我们来看我认为是H.323协议最精彩的部分,也是最不同于SIP的部分,同时也是SIP和H.323之间进行协议转换最挑战的部分:H.245媒体控制。分为三个过程:媒体能力交换、主从确定和建立媒体信道。媒体能力交换(Terminal Capability Set),H.323终端以数据库表的形式携带其媒体能力和优先级(可选能力集:alternative Capability Set),以及同时处理多种媒体能力的可能的组合(同时能力:Simultaneous Capabilities),例如使用某种视频编解码的时候,允许同时使用的某(几)种音频编解码;主从确定(Master Slave Determination)用于解决呼叫控制信道冲突,尤其在多点视频会议中确定哪个是MCU;这之后就是建立媒体信道(Open Logical Channel),可以由通信双方逐个建立由本端到对端的单向信道,也可以一次建立双向信道,至此完成媒体通道的建立。听起来是不是有点类似SIP协议过程中的SDP协商?但是不同于SDP的offer-answer mode,H.323媒体协商过程要复杂得多,当然功能也更强大,不仅可以协商音视频的能力,而且还可以协商音视频的组合能力,不仅可以建立双向对称信道,还可以建立非对称信道,即发送和接收可以使用不同的编解码。那媒体信道建立之后,就可以开始媒体的交互了,媒体流跑的也是RTP流。另外,H.245中还有两个很有用的命令,分别是Flow Control和Fast Update,用于收端发现丢包后,通知发送端降速和重传指定的媒体报文。

 

H.323和SIP协议的比较

H.323标准由ITU(国际电信联盟)制定,而SIP标准由IETF(国际互联网工程任务组),一个是纯搞通信的,一个是研究互联网的,两个组织的性质天然决定了俩协议各自的特点。H.323协议处处体现出对于传统PSTN的继承,例如采用E.164号码格式进行寻址,而SIP采用SIP URI应用范围更广。终端侧发送被叫号码,H.323除了支持整体发码(EnBlock,和SIP UA一样,终端侧号码收全了一次性发出去),也可以支持边收边发,这也是典型的传统PSTN的特征。

 

H.323协议定义严谨,异厂家互通性好,直至现在,不同厂家间的视频会议系统要做互通,大家还是首选H.323。编码方式上,H.323采用ASN.1二进制编码,效率高、消息短,但可读性差;SIP协议采用纯文本编码,扩展性强,对于开发者和使用者都非常友好。当然你可以说用Wireshark这类的抓包软件H.323和SIP都能够解读,但是如果你是从服务器上直接TCP Dump下来的文件,SIP的文本格式可以直接读,H.323那就是看天书了。传输层协议方面,H.323 除了RAS消息用UDP传输,其他H.225和H.245消息用的是TCP,SIP协议可以选用UDP或TCP,关于SIP传输层协议的选择,可以参见我的另一篇文章《深度解析IP分片原理及SIP over UDP or TCP》(点击文章即可转跳阅读)

关于媒体协商的能力,H.323的确比SIP强大和完善。个人认为,这个在当年视频终端的CPU、GPU的计算能力不如现今强大,而高性能的编解码又带来更多的终端CPU资源消耗,通讯双方若使用不同配置的视频终端,音视频编解码的能力相差很大,媒体协商过程非常关键,H.245协议提供的完善的媒体协商能力在当时是非常有意义的。而现今随着芯片的计算能力指数级的跃进,哪怕是最入门级的视频终端对于现今主流的音视频编解码都能够支持,媒体协商也变得简单多了。

 

事物总是向着融合的方向发展,H.323为了简化协议过程,进而缩短呼叫接续的复杂度和时延,H.323引入了快速协议机制(fast start),将呼叫控制的过程和媒体信道建立的过程融合在一起,就像SIP INVITE和200 OK中同时携带SDP完成媒体协商及建立媒体信道一样,大有殊途同归的意思。

 

SIP or H.323我们应该选择谁?又如何实现互通?(上篇) - 知乎 (zhihu.com)

标签:协议,SIP,媒体,互通,信道,H.323,终端
From: https://www.cnblogs.com/cnhk19/p/17471715.html

相关文章

  • port exosip to android
     Portexosiptoandroidplatformisn'tadifficulttaskbecauseexosipdoesn'trelyonanyspecialsystemcallsthataren'tavailableonandroid.Itonlyrequiresosiptocompile,whichcanalsobeeasilyported.Asanexample,Icreatedt......
  • Android上试用Linphone(Free SIP VOIP Client)
    1.下载Linphoneapk并且安装到两个Android手机上[url]http://www.linphone.org/eng/download/packages/android.html[/url]2.申请两个免费的SIP帐号进行测试[url]https://www.ekiga.net/[/url]3.在每个Android手机上分别配置Linphone应用程序点......
  • 网页接入硬件交互通信方案
    我们都知道,网页直接接入硬件并与硬件交互并不那么方便,如果硬件由网络功能还可以通过网络通信实现(一般是socket),但大多数情况下硬件还是直接通过usb/串口等硬接线接入。很早以前有一种解决方案是Active-X,但只支持IE浏览器,尤其现在2023年IE已经并入Edge浏览器,这一方案已经过时。那么......
  • SIP Introduction
     SIPChapter1.SIP1.1.PurposeofSIPSIPstandsforSessionInitiationProtocol.Itisanapplication-layercontrolprotocolwhichhasbeendevelopedanddesignedwithintheIETF.Theprotocolhasbeendesignedwitheasyimplementation,goodscala......
  • mac的截图及sips使用心得
    1-mac推荐截图工具从ubuntu切换到Mac,最放不下手的其实是一个叫flameshot的截图工具,确实是ubuntu系统的神器,但是渐渐熟悉mac后发现mac才是各种大杀器的集合地,今天想谈到的就是截图工具,初接触mac的时候,几乎接触了mac大多数别人推荐的截图工具,如下所示:系统截图工具;微信截图工具;浏览器......
  • SIP协议
    SIP一般指SIP(会话发起协议)SIP的应用google发布世界上首个开源的Html5sip客户端HTML5SIP客户端是一款开源的,完全利用JavaScript编写的集社交(FaceBook,Twitter,Google+),在线游戏,电子商务等应用于一体。无扩展,无插件或是必备的网关,视频堆栈技术依赖于WebRT......
  • 两台欧姆龙CP1H相互通讯交换数据通过脉冲控制6轴伺服案例,实际项目。
    两台欧姆龙CP1H相互通讯交换数据通过脉冲控制6轴伺服案例,实际项目。PLC采用两台CP1H—X40D带RS232通讯板CP1W-CIF01.使用PCLINK主从通信。OMRON触摸屏是NB7W-TE00B.三菱伺服采用5台MR-J4和一台MR-JE。位置传感器采用KEYENCEGT2-500加通讯单元DL-RS2A。PDF图纸,程序大量采用功能块......
  • WebRTC + JsSIP + freeSWITCH一对一视频聊天
    之前几篇文件介绍了freeSWITCH和WebRTC结合在一起需要的各种环境,现在到了最关键的一篇,使用JsSIP来创建一个DEMO。这次我们需要写点JS代码。准备JsSIP库文件可以从http://www.jssip.net/download/下载一个min版的js文件,我用的是3.0.13,文件名是jssip-3.0.13.m......
  • 办公网段与Kubernetes Pod及Svc网络互通方案
    一、背景   在Kubernetes的网络模型中,基于官方支持的CNI插件Flannel、Calico等,可以轻松实现Pod之间的网络互通,当我们将SpringCloud的微服务部署到Kubernetes中后,无需任何改动微服务的Pod即可通过Eureka注册后进行访问。除此之外还可以通过Ingresscontroller基于80......
  • VoIP应用在Ubuntu 14.04下编译FFmpeg libX264及PJSIP
    PJSIP是一个开源的SIP协议栈。它支持多种SIP的扩展功能,可说算是最目前流行的SIP协议栈之一了。 它实现了SIP、SDP、RTP、STUN、TURN和ICE。PJSIP作为基于SIP的一个多媒体通信框架提供了非常清晰的API,以及NAT穿越的功能。PJSIP具有非常好的移植性,几乎支持现今所有系统:从桌面系统......