VoIP基础知识OCT,2009Kavinlu22020/2/23目录VoIP概述H.323协议简介SIP协议简介PSTN接口简介VoIP概述42020/2/23什么是VoIPVoIPVoiceoverInternetProtocol在IP网络或者包交换网络中传输语音模拟声音讯号(Voice)数字化,以数据封包(DataPacket)的型式在IP数据网络(IPNetwork)上做实时传递52020/2/23VoIP常用协议H323ITU-T标准,在无QoS保证的包交换网络上进行多媒体通信1996年推出第一版SIPIETF标准,用于和一个或多个参与者创建、修改和终止会话1999年形成RFC2543MGCPIETF标准,用于软交换和媒体网关之间的协议1999年10月形成IETFRFC2705Megaco/H.248ITU-T与IETF合作推出,功能类似于MGCP2000年6月推出62020/2/23最简单的VoIP网络IP电话A192.169.0.10IP网络IP电话B192.169.0.20H.323协议简介82020/2/23什么是H.323由ITU-T制定的一种支持在无QoS保证的分组交换网上实现实时多媒体通信的协议支持多点功能,组播和带宽管理支持语音,视频和数据的传输92020/2/23H.323协议组件网关GW网守Gatekeeper终端Terminal多点控制单元MCUIP网络PSTN102020/2/23H.323协议组件-终端终端是分组网络中能提供实时、双向通信的节点设备,也是一种终端用户设备,可以和网关、多点接入控制单元通信A/D转换SystemControlH.245ControlCallControlH.225.0RASControlH.225.0视频I/O设备音频I/O设备数据应用T.120系统控制用户接口编码/压缩TCP/IP112020/2/23H.323协议组件-网关网关提供H.323网络与非H.323网络之间信令和媒体的转换接口FXS/FXOE1/T1Video/AudioCodecSystemControlH.245ControlCallControlH.225.0RASControlH.225.0LAN接口PSTN/ISDNIP网关122020/2/23H.323协议组件-网守概述管理一个域中的网关、终端和MCU等设备功能地址翻译带宽控制鉴权(终端、网关和MCU)区域管理多方会议单个GK和该GK管理的H.323端点构成一个域是H.323系统中的一个可选组件132020/2/23H.323协议组件-MCU多点控制单元(MultipointControlUnit)支持3个或3个以上的端点参加的多点会议一个MCU必须包含一个MC和零或多个MPMC在一个多点会议之中提供控制功能MP在多点会议中从终端接收音频、视频或数据流,处理之后再把它们回送到各个终端142020/2/23H.323协议簇152020/2/23H.323协议簇-呼叫控制信令RASSignalingH.225.0CallSignalingH.245CallControl162020/2/23H.323协议簇-RAS用于GW和GK,GK和GK之间通信的协议主要的消息GRQ/GCF/GRJRRQ/RCF/RRJARQ/ACF/ARJDRQ/DCF/DRJLRQ/LCF/LRJ172020/2/23H.323协议簇-H.225.0CallSignaling用于端点间的呼叫控制主要的消息SETUPCALLPROCEEDINGALERTINGCONNECTRELEASECOMPLETE182020/2/23H.323协议簇-H.245CallControl用于端点间的多媒体通信控制编解码能力协商(音频视频)主从确定打开逻辑通道会议控制主要的消息TCS(TerminalCapabilitySet,能力交换)MSD(Master-SlaveDetermination,主从确定)OLC(OpenLogicalChannel,打开逻辑通道)192020/2/23H.323协议簇-快速连接(FastConnect)H.245交互过程较为复杂且费时在H.225.0callsignaling中携带快速连接单元来完成H.245协议的功能可以携带在setup,callproceeding,alerting或者connect中202020/2/23H.323协议簇-基本交互流程(无GK)交互RTP流CallProceedingSetupAlerting终端A终端BConnect建立H.245会话ReleaseComplete212020/2/23H.323协议簇-基本交互流程(有GK)DRQ终端AGK终端BACFARQARQACFSetupReleaseCompleteConnectAlerting交互RTP流建立H.245会话CallProceedingDCFDRQDCFSIP协议简介232020/2/23什么是SIP(SessionInitiationProtocol)用于建立、修改、拆除多媒体会话目前的核心RFC为3261支持多种应应用层的信令协议,可以基于:视频、语音、即时消息、在席服务、呼叫控制等被NGN(下一代网络)和3GIMS(IP多媒体子系统)采纳作为呼叫控制信令242020/2/23SIP特点应用层协议,可以基于TCP和UDP等,独立于底层的传输协议根植于IP网络,可以和其他IETF协议配合使用RTP/RTCP、SDP、RTSP、DNSSDP协议用于编解码协商基于文本的协议(类似于HTML)阅读和分析SIP协议变得简单252020/2/23SIP协议实体UserAgentSIPSERVERProxyserverregistrarredirectserver262020/2/23SIP协议实体-UserAgent发送和接收SIP请求的逻辑实体UAC发送请求UAS接收请求常见形态SIP话机桌面型SIP软件电话PSTN网关UASUACUASUAC1)request2)response272020/2/23SIP协议实体-ProxyStatefulProxyserver维持呼叫状态StatelessProxyserver不维持呼叫状态UA1Proxyserver1)request4)responseUA22)request3)response282020/2/23SIP协议实体-RedirectServer将请求中的地址映射为零个或多个新的地址,返回给客户端客户端直接向这些新的地址发起请求主要完成路由功能UA1UA2RedirectServerLocationserver3)response5)request6)response292020/2/23SIP协议实体-Registrar注册服务器接受UA的注册通常与Proxy或者Redirectserver共存UARegistrar1)request3)response302020/2/23SIPUniformResourceIndicators(URIs)用于标识一个呼叫资源类似于EMAIL地址user@domin形式包含两种URI方案sip:henry@polycom.comSIPURIsips:henry@polycom.comsecureSIPURI两种类型的SIPURIsAddressofRecord(用户标识)sip:henry@polycom.com需要服务器解析域名polycom.comContact(设备标识)sip:henry@172.21.31.153无需服务器解析312020/2/23SIP消息请求消息(Request)UAC发给UAS使用请求行-Request-Line区分是哪一种请求消息,请求行包括:Method、Request-URI、Protocolversion响应消息(Response)UAS发给UAC状态行-Status-Line记录对请求的响应码322020/2/23SIP消息-RequestREGISTER注册请求,上报用户信息,完成号码绑定INVITE发起会话请求CONCEL取消一个尚未完成的请求,特别针对INVITEACK为INVITE请求提供三次握手BYE结束会话请求OPTION查询服务器能力332020/2/23SIP消息-Response1XX临时响应,表示请求正在处理中2XX成功响应消息3XX重定向消息4XX客户端错误,错误来源于UAC5XX服务端错误,错误来源于UAS6XX全局错误342020/2/23SIP典型流程-注册UA设备开机需要向服务器注册当sipclient地址发生变化时也需要重新注册注册信息需要定时刷新REGISTER(1)401(2)UAREGISTER(3)200(4)352020/2/23SIP典型流程-呼叫建立INVITEwithSDP100TryingACK200OKwithSDP180RingingRTPUA1UA2362020/2/23SIP典型流程-呼叫拆除INVITEwithSDP100TryingACK200OKwithSDP180RingingUA1UA2BYE200OK372020/2/23SIP典型流程-重定向呼叫UA1UA2INVITE301MovedPermanantACKINVITE200OK180RingingRedirectServer382020/2/23SIP典型流程-代理呼叫UA1UA2proxyServerINVITE100TryingACK200OK180RingingRTPINVITE100TryingACK200OK180Ringing抓包及协议分析402020/2/23抓包工具的使用方法(一)可以采用抓取IP报文的方式来定位问题可以定位注册服务器失败,呼叫失败,语音单通等多种故障目前常用的软件为WIRESHARK免费软件可以对VoIP协议进行分析使用方便简单抓包方法将wireshark安装在PC上将需要抓包的设备(如IP话机)和PC接在同一个HUB下打开wireshark软件开始抓取IP包等待问题现象出现抓到所需报文后停止抓包412020/2/23抓包工具的使用方法(二)点击左上角图标列出所有PC上的以太网口选择要抓包的网口,点击Start即开始抓包422020/2/23可以在“Filter”栏中输入过滤条件看指定协议的报文对于IP话机的常见问题都可以使用sip这个条件来过滤抓包工具的使用方法(三)432020/2/23请求消息INVITE分析(1/8)INVITEsip:1000@1.1.1.1SIP/2.0v:SIP/2.0/UDP192.168.1.126:5060t:sip:1000@1.1.1.1;user=phonef:“Floodsip:2000@1.1.1.1;user=phone;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1dai:7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126CSeq:5001INVITEm:sip:2000@192.168.1.126:5060User-Agent:3Com-SIP-Phone/V7.0.14.15c:application/sdpP-Asserted-Identity:“Floodsip:2000@192.168.1.126l:210起始行(StartLine)Method:INVITESIPURIRequest-URI:sip:1000@1.1.1.1SipVersion:SIP/2.0442020/2/23请求消息INVITE分析(2/8)INVITEsip:1000@1.1.1.1SIP/2.0v:SIP/2.0/UDP192.168.1.12