670 likes | 1.03k Views
VoIP 协议介绍. 北京大唐高鸿数据网络技术有限公司. 由 NordriDesign 提供 www.nordridesign.com. 目录. VoIP 概述 H.323 协议简介 SIP 协议简介 抓包和协议分析 PSTN 接口简介. VoIP 概述. 什么是 VoIP. VoIP Voice over Internet Protocol 在 IP 网络或者包交换网络中传输语音 模拟声音讯号 (Voice) 数字化,以数据封包 (Data Packet) 的型式在 IP 数据网络 (IP Network) 上做实时传递
E N D
VoIP协议介绍 北京大唐高鸿数据网络技术有限公司 由NordriDesign提供 www.nordridesign.com
目录 VoIP概述 H.323协议简介 SIP协议简介 抓包和协议分析 PSTN接口简介
什么是VoIP • VoIP • Voice over Internet Protocol • 在IP网络或者包交换网络中传输语音 • 模拟声音讯号(Voice)数字化,以数据封包(Data Packet)的型式在 IP 数据网络 (IP Network)上做实时传递 • 将模拟的声音信号经过压缩与封包之后,以数据封包的形式在IP 网络的环境进行语音讯号的传输,通俗来说也就是互联网电话、网络电话或者简称IP电话的意思。
VoIP常用协议 • H323 • ITU-T标准 ,在无QoS保证的包交换网络上进行多媒体通信 • 1996年推出第一版 • SIP • IETF标准,用于和一个或多个参与者创建、修改和终止会话 • 1999年形成RFC2543 • 目前最新是RFC3261 • MGCP • IETF标准,用于软交换和媒体网关之间的协议 • 1999年10月形成IETF RFC2705 • Megaco/H.248 • ITU-T与IETF合作推出,功能类似于MGCP • 2000年6月推出
什么是H.323 • 由ITU-T制定的一种支持在无QoS保证的分组交换网上实现实时多媒体通信的协议 • 支持多点功能,组播和带宽管理 • 支持语音,视频和数据的传输
H.323协议组件 多点控制单元 MCU 网守 Gatekeeper PSTN IP网络 网关 GW 终端 Terminal
H.323协议组件-终端 • 终端是分组网络中能提供实时、双向通信的节点设备,也是一种终端用户设备,可以和网关、多点接入控制单元通信 视频I/O 设备 TCP/IP 编码/压缩 A/D转换 音频I/O 设备 数据应用 T.120 System Control H.245 Control 系统控制 用户接口 Call Control H.225.0 RAS Control H.225.0
PSTN/ISDN IP H.245 Control Call Control H.225.0 RAS Control H.225.0 H.323协议组件-网关 • 网关提供H.323网络与非H.323网络之间信令和媒体的转换 网关 接口 FXS/FXO E1/T1 Video/ Audio Codec LAN 接口 System Control
H.323协议组件-网守 • 概述 • 管理一个域中的网关、终端和MCU等设备 • 功能 • 地址翻译 • 带宽控制 • 鉴权(终端、网关和MCU) • 区域管理 • 多方会议 • 单个GK和该GK管理的H.323端点构成一个域 • 是H.323系统中的一个可选组件
H.323协议组件-MCU • 多点控制单元(Multipoint Control Unit) • 支持3个或3个以上的端点参加的多点会议 • 一个MCU必须包含一个MC和零或多个MP • MC • 在一个多点会议之中提供控制功能 • MP • 在多点会议中从终端接收音频、视频或数据流,处理之后再把它们回送到各个终端
H.323协议簇-呼叫控制信令 • RAS Signaling • H.225.0 Call Signaling • H.245 Call Control
H.323协议簇-RAS • 用于GW和GK,GK和GK之间通信的协议 • 主要的消息 • GRQ/GCF/GRJ • RRQ/RCF/RRJ • ARQ/ACF/ARJ • DRQ/DCF/DRJ • LRQ/LCF/LRJ
H.323协议簇-H.225.0 Call Signaling • 用于端点间的呼叫控制 • 主要的消息 • SETUP • CALLPROCEEDING • ALERTING • CONNECT • RELEASE COMPLETE
H.323协议簇-H.245 Call Control • 用于端点间的多媒体通信控制 • 编解码能力协商(音频视频) • 主从确定 • 打开逻辑通道 • 会议控制 • 主要的消息 • TCS(Terminal Capability Set,能力交换) • MSD(Master-Slave Determination,主从确定) • OLC (Open Logical Channel,打开逻辑通道)
H.323协议簇-快速连接( Fast Connect ) • H.245交互过程较为复杂且费时 • 在H.225.0 call signaling中携带快速连接单元来完成H.245协议的功能 • 可以携带在setup, call proceeding, alerting或者connect中
H.323协议簇-基本交互流程(无GK) 终端 B 终端 A Setup Call Proceeding Alerting Connect 建立H.245会话 交互RTP流 Release Complete
H.323协议簇-基本交互流程(有GK) 终端 A GK 终端 B ARQ ACF Setup Call Proceeding ARQ ACF Alerting Connect 建立H.245会话 交互RTP流 Release Complete DRQ DCF DRQ DCF
什么是SIP( Session Initiation Protocol ) • 用于建立、修改、拆除多媒体会话 • 目前的核心RFC为3261 • 支持多种应应用层的信令协议,可以基于: • 视频、语音、即时消息、在席服务、呼叫控制等 • 被NGN(下一代网络)和3G IMS(IP多媒体子系统)采纳作为呼叫控制信令
SIP特点 • 应用层协议,可以基于TCP和UDP等,独立于底层的传输协议 • 根植于IP网络,可以和其他IETF协议配合使用 • RTP/RTCP、SDP、RTSP、DNS • SDP协议用于编解码协商 • 基于文本的协议(类似于HTML) • 阅读和分析SIP协议变得简单
SIP协议实体 • User Agent • SIP SERVER • Proxy server • registrar • redirect server
SIP协议实体-User Agent • 发送和接收SIP请求的逻辑实体 • UAC发送请求 • UAS接收请求 • 常见形态 • SIP 话机 • 桌面型SIP软件电话 • PSTN网关 1) request 2) response
SIP协议实体-Proxy • Stateful Proxy server • 维持呼叫状态 • Stateless Proxy server • 不维持呼叫状态 1) request 2) request 4) response 3) response
SIP协议实体-Redirect Server • 将请求中的地址映射为零个或多个新的地址,返回给客户端 • 客户端直接向这些新的地址发起请求 • 主要完成路由功能 1) request 3) response 4) response 5) request 6) response
SIP协议实体-Registrar • 注册服务器 • 接受UA的注册 • 通常与Proxy或者Redirect server共存 1) request 3) response
SIP Uniform Resource Indicators (URIs) • 用于标识一个呼叫资源 • 类似于EMAIL地址 user@domin形式 • 包含两种URI方案 • sip:henry@gohigh.com SIP URI • sips:henry@gohigh.com secure SIP URI • 两种类型的SIP URIs • Address of Record(用户标识)sip:henry@gohigh.com 需要服务器解析域名gohigh.com • Contact (设备标识)sip:henry@203.86.84.75 无需服务器解析
SIP消息 • 请求消息(Request) • UAC发给UAS • 使用请求行-Request-Line区分是哪一种请求消息,请求行包括:Method、 Request-URI、 Protocol version • 响应消息(Response) • UAS发给UAC • 状态行-Status-Line记录对请求的响应码
SIP消息- Request • REGISTER • 注册请求,上报用户信息,完成号码绑定 • INVITE • 发起会话请求 • CANCEL • 取消一个尚未完成的请求,特别针对INVITE • ACK • 为INVITE请求提供三次握手 • BYE • 结束会话请求 • OPTION • 查询服务器能力
SIP消息- Response • 1XX • 临时响应,表示请求正在处理中 • 2XX • 成功响应消息 • 3XX • 重定向消息 • 4XX • 客户端错误,错误来源于UAC • 5XX • 服务端错误,错误来源于UAS • 6XX • 全局错误
SIP典型流程-注册 • UA设备开机需要向服务器注册 • 当sip client地址发生变化时也需要重新注册 • 注册信息需要定时刷新 REGISTER(1) UA 401 (2) REGISTER(3) 200 (4)
SIP典型流程-呼叫建立 UA1 UA2 INVITE with SDP 100 Trying 180 Ringing 200 OK with SDP ACK RTP
SIP典型流程-呼叫拆除 UA1 UA2 INVITE with SDP 100 Trying 180 Ringing 200 OK with SDP ACK BYE 200 OK
SIP典型流程-重定向呼叫 UA1 Redirect Server UA2 INVITE 301 Moved Permanant INVITE 180 Ringing 200 OK ACK
SIP典型流程-代理呼叫 UA1 proxy Server UA2 INVITE INVITE 100 Trying 100 Trying 180 Ringing 180 Ringing 200 OK 200 OK ACK ACK RTP
抓包工具的使用方法(一) • 可以采用抓取IP报文的方式来定位问题 • 可以定位注册服务器失败,呼叫失败,语音单通等多种故障 • 目前常用的软件为WIRESHARK • 免费软件 • 可以对VoIP协议进行分析 • 使用方便简单 • 抓包方法 • 将wireshark安装在PC上 • 将需要抓包的设备(如IP话机)和PC接在同一个HUB下 • 打开wireshark软件开始抓取IP包 • 等待问题现象出现抓到所需报文后停止抓包
抓包工具的使用方法(二) • 点击左上角图标列出所有PC上的以太网口 • 选择要抓包的网口,点击Start即开始抓包
抓包工具的使用方法(三) • 可以在“Filter”栏中输入过滤条件看指定协议的报文 • 对于IP话机的常见问题都可以使用sip这个条件来过滤
请求消息INVITE分析(1/8) • 起始行(Start Line) • Method: INVITESIP URI • Request-URI: sip:1000@1.1.1.1 • Sip Version: SIP/2.0 INVITE sip:1000@1.1.1.1 SIP/2.0 v: SIP/2.0/UDP 192.168.1.126:5060 t: <sip:1000@1.1.1.1;user=phone> f: “Flood"<sip:2000@1.1.1.1;user=phone>;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1da i: 7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126 CSeq: 5001 INVITE m: <sip:2000@192.168.1.126:5060> User-Agent: "3Com-SIP-Phone/V7.0.14.15" c: application/sdp P-Asserted-Identity: “Flood" <sip:2000@192.168.1.126> l: 210
请求消息INVITE分析(2/8) INVITE sip:1000@1.1.1.1 SIP/2.0 v: SIP/2.0/UDP 192.168.1.126:5060 t: <sip:1000@1.1.1.1;user=phone> f: “Flood"<sip:2000@1.1.1.1;user=phone>;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1da i: 7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126 CSeq: 5001 INVITE m: <sip:2000@192.168.1.126:5060> User-Agent: "3Com-SIP-Phone/V7.0.14.15" c: application/sdp P-Asserted-Identity: “Flood" <sip:2000@192.168.1.126> l: 210 • Via header • 包含此请求消息对应的响应消息需要回复的地址,示例中标识了发起请求的UA地址 • 同一个消息中可以包含多个Via header域,每个域中又可以包含多个entity地址
请求消息INVITE分析(3/8) INVITE sip:1000@1.1.1.1 SIP/2.0 v: SIP/2.0/UDP 192.168.1.126:5060 t: <sip:1000@1.1.1.1;user=phone> f: “Flood"<sip:2000@1.1.1.1;user=phone>;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1da i: 7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126 CSeq: 5001 INVITE m: <sip:2000@192.168.1.126:5060> User-Agent: "3Com-SIP-Phone/V7.0.14.15" c: application/sdp P-Asserted-Identity: “Flood" <sip:2000@192.168.1.126> l: 210 • To、From和Call-ID 唯一标志SIP会话中的对话(dialog) • To header包含接收请求消息的目标URI地址 • From header包含发送请求消息的display name(Flood)和起始URI地址,这两个值确定请求消息的发送源 • Tag parameter以及Call-ID是由发送源UA产生,包括随机的字符串、UA主机名称或者UA地址等。
请求消息INVITE分析(4/8) • Command Sequence包含一个整数和method名称 • 整数代表CSeq number,同一个对话中的请求消息序列号按照发送时间的顺序依次递增“1” • Contact包含到达消息源的直接路由URI INVITE sip:1000@1.1.1.1 SIP/2.0 v: SIP/2.0/UDP 192.168.1.126:5060 t: <sip:1000@1.1.1.1;user=phone> f: “Flood"<sip:2000@1.1.1.1;user=phone>;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1da i: 7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126 CSeq: 5001 INVITE m: <sip:2000@192.168.1.126:5060> User-Agent: "3Com-SIP-Phone/V7.0.14.15" c: application/sdp P-Asserted-Identity: “Flood" <sip:2000@192.168.1.126> l: 210
请求消息INVITE分析(5/8) • User-Agent是可选域,包含发送消息的UA信息 • Content-Type代表消息体所包含的媒体类型 • P-Asserted-Identity是可选域,用于标识可信任实体 • Content-Length表示消息体的内容长度 INVITE sip:1000@1.1.1.1 SIP/2.0 v: SIP/2.0/UDP 192.168.1.126:5060 t: <sip:1000@1.1.1.1;user=phone> f: “Flood"<sip:2000@1.1.1.1;user=phone>;tag=7c3c1168-01d6-01c2-13d0-00e0bb1ad1da i: 7c3c1168-01d6-01c2-13d1-00e0bb1ad1da@192.168.1.126 CSeq: 5001 INVITE m: <sip:2000@192.168.1.126:5060> User-Agent: "3Com-SIP-Phone/V7.0.14.15" c: application/sdp P-Asserted-Identity: “Flood" <sip:2000@192.168.1.126> l: 210
请求消息INVITE分析(6/8) • “v=“表示SDP协议的版本 • “o=“由<username> <session id> <version> <network type> <address type> <address> 组成 • “s=“表示会话名称 • “c=“包含连接数据 v=0 o=- 3687453239 0 IN IP4 192.168.1.126 s=652001 c=IN IP4 192.168.1.126 t=0 0 m=audio 8008 RTP/AVP 18 0 96 a=rtpmap:18 G729/8000 a=rtpmap:0 PCMU/8000 a=fmtp:96 0-15 a=rtpmap:96 telephone-event/8000
请求消息INVITE分析(7/8) • “t=“表示会议会话的开始和截止时间 • “m=“包含媒体描述符 • “a=“表示能力集描述符表示会话名称 v=0 o=- 3687453239 0 IN IP4 192.168.1.126 s=652001 c=IN IP4 192.168.1.126 t=0 0 m=audio 8008 RTP/AVP 18 0 96 a=rtpmap:18 G729/8000 a=rtpmap:0 PCMU/8000 a=fmtp:96 0-15 a=rtpmap:96 telephone-event/8000