SIP相关介绍

一:SIP 消息介绍

1:SIP请求消息

2:SIP响应消息

3:INVITE 消息

4:SDP

  1. v=:Version,表示协议的版本号。
  2. o=:Origin,表示源。值域中各项(以空格分隔)的涵义依次是username(用户名)、sess-id(会话ID)、sess-ver-sion(会话版本号)、nettype(网络类型)、addrtype(地址类型)、unicast-address(单播地址)。
  3. s=:Session Name,表示本SDP所描述的Session的名称。
  4. c=:Connecton Data,连接数据。其中值域中以空格分配的两个字段分别是网络类型和网络地址,以后的RTP流就会发到该地址上。注意,在NAT环境中如果我们要解决RTP穿越问题就要看这个地址。NAT问题将在第9章节中讲到。
  5. b=:Badwidth Type,带宽类型。
  6. t=:Timing,起止时间。0表示无限。
  7. m=:audio Media Type,媒体类型。audio表示音频,8396表示音频的端口号, RTP/AVP是传输协议;后面是支持的Codec类型,与RTP流中的Pay-load Type(载荷类型)相对应,在这里分别是8、0、98和101,8和0分别代表PCMA和PCMU,它们属于静态编码,因而有一一对应的关系,而对于大于95的编码都属于动态编码,需要在后面使用“a=rtpmap”进行说明。
  8. a=:Attributes,属性。它用于描述上面音频的属性,如本例中98代表8000Hz的ILBC编码,101代表RFC2833DTMF事件。a=sendrecv表示该媒体流可用于收和发,其他的还有sendonly(仅收)、recvonly(仅发)和inac-tive(不收不发)。

5:Sip 中的 brahch 、tag 、 CSeq

  • Transaction(事务)  事务发生于客户端和服务器端之间,包含从客户端发出请求给服务器,到服务器响应给客户端的最终消息(non-1xx message)之间的所有消息. 如果请求是一个"Invite"消息,并且最终的响应是一个non-2xx消息,那么该事务包含一个"Ack"响应消息.如果服务器的响应是一个2xx消息,那么,随后的ACK是一个单独的事务.

brahch是一个事务ID(Transaction ID),用于区分同一个Client 所发起的不同Transaction。

对于遵循RFC3261规范的实现,这个branch参数的值必须用magic cookie”z9hG4bK”打头. 其它部分是对“To, From, Call-ID头 域和Request-URI”按一定的算法加密后得到。

这7个字母是一个乱数cookie(定义成为7位的是为了保证旧版 本的RFC2543实现不会产生这样的值),这样服务器收到请求之 后,可以很方便的知道这个branch ID是否由本规范所产生的(就 是说,全局唯一的)。

  • Dialog(会话) 会话是两个UAs(user agent) 之间持续一段时间的端到端(peer-to-peer)的SIP 关系. 一个会话由一个Call-ID, 一个local tag 和 一个remote tag来标识.会话过去也叫做 "call leg".

对话都是有对话ID来标识的,包括Call-ID,一个本地标签(From-tag)和一个远端标签(To-tag)。即是说三者确定了某个对话的存在。

  • CSeq是一个序号,由于UDP是不可靠的协议,在不可靠的网络上可能丢包,所以有些包需要重发,该序号则可以防止重发引起的消息重复。

CSeq序列号。CSeq是按照各自方向严格增1的值,如果为空则设 为初始值。

二:RTP & RTCP

在完成SIP及SDP协商后,真正的语音数据是在RTP协议中传送的。即双方在前面的SDP协商中都已经获得了对方的IP地址、端口号,以及支持的媒体类型。接下来,就是将本地的媒体数据以指定的编码格式进行编码并通过RTP协议发送到对方去。

  • RTP协议的全称是Real-time Transport Protocol,即实时传输协议,它是由IETF的多媒体传输工作小组在RFC 3550中定义的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。
  • RTP协议用以传送实时数据。RTP协议通常运行在UDP层之上,二者共同完成运输层的功能。UDP提供复用及校验和服务,也就是通过分配不同的端口号传送多个RTP流。协议规定,RTP流使用偶数(2n)端口号,相应的RTCP流使用相邻的奇数(2n+1)端口号。因此,应用进程应在一对端口上接收RTP数据和RTCP控制数据,同时向另一对端口上接收RTP数据和RTCP控制数据。

三 DTMF

DTMF(Dual Tone Multi Frequency)就是双音多频,我们日常生活中拨打电话的过程中经常会用到,如拨打用户的分机号码,输入帐号和密码等。而随着IP电话的大量使用如何实现传送DTMF成为IP电话中的一个技术问题。

SIP中检测DTMF数据的方法:SIPINFO、RFC2833、INBAND

1SIPINFO

为带外检测方式,通过SIP信令通道传输DTMF数据。没有统一的实现标准,目前以Cisco SIPINFO为标准,通过SIPINFO包中的signal字段识别DTMF按键。注意当DTMF为“*”时不同的标准实现对应的signal=*或signal=10。SIPINFO的好处就是不影响RTP数据包的传输,但可能会造成不同步。

2RFC2833

为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包。同一个DTMF按键通常会对应多个RTP包,这些RTP数据包的时间戳均相同,此可以作为识别同一个按键的判断依据,最后一包RTP数据包的end标志置1表示DTMF数据结束。另外,很多SIP UA 包括IAD都提供TeleponeEvent的设置功能如3CX PhoneBillion-IADZTE-IAD等默认的TeleponeEvent都为101,但可以人为修改,这时要求在进行RFC2833 DTMF检测之前需事先获取SDP协商的TeleponeEvent参数。

就是将DTMF数字按照一个的规则和格式组成一个数据包,然后封装到RTP中发送。接收端接收后进行解析,再还原成相应的DTMF信号,这种方式的优点是对丢包的容错性强以及识别差错率低。

3INBAND

为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时唯一的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率,然后查表得到对应的按键。在选择压缩比很高码率很低的codec,比如G.723.1和G.729A等,建议不要使用INBAND模式,因为INBAND DTMF数据在进行复杂编解码后会产生失真,造成DTMF检测发生偏差或失败。

四:SIPp压力测试

1:SIPp介绍

  • SIPp 是基于SIP协议的性能测试工具. 它可以模拟各种UAC或者UAS的行为, 通过INVITE和BYE方法来建立和挂断通话.
  • 可以在XML的文件中, 建立各种性能测试的场景, 如:呼叫/88#转接等, SIPp可以解析该文件并执行, 还可以在场景文件中使用正则或者变量.
  • 可以实时显示测试中的各种统计参数(如:呼叫速率, 消息统计等),可以定时将统计结果写到CSV文件中, 可以实时调节呼叫速率.
  • SIPp可以用来测试很多SIP设备, 如SIP代理, B2BUAs, SIP媒体网关, SIP PBX等, 很适合模拟数千个坐席来呼叫SIP系统.
  • 手册:http://sipp.sourceforge.net/doc/reference.html#Foreword

2:SIPp的使用

1) SIPp:UAC(register)

注册分机:

./sipp  -sf mast_reg.xml -m 1 -p 15000

–loip 192.168.1.102 -xcip 192.168.1.102 -ap samton148 -s 18627180502 -fid 18625320000–aa -trace_err –bg

小技巧:

  • 注册和注销的命令基本一样, 只需要修改场景文件中的注册时间: Expires: 3600  => Expires: 0
  • 为了使测试能长时间执行, 需要将注册时间尽可能的定义久一些, 如 720000s(200个小时), 同时, 需要在PBX的sip.conf文件中, 定义最大的注册时间, maxexpiry=720000,默认值为3600.
  • –aa: 对INFO,UPDATE,NOTIFY消息自动回复200OK
  • –trace_err: 保存错误消息, 位于场景文件相同的目录

下, 文件名为<scenario filename>_<pid>_errors.log

类似选项(trace_msg, trace_stat, trace_rtt)

  • –bg: 置于后台执行

2) SIPp:UAC(caller)

发起呼叫:

./Sipp–sf  mast_uac.xml -r 30 –rp 1s

-loip 192.168.1.102 -xcip 192.168.1.102 –ap samton148

–s 18627180502 -p 7000 –mp 7002 -fid 18625320000-m  1000

命令解析:

1. 192.168.1.102: 服务器IP地址

2. –sf: 指定的场景文件

3. -r 30 –rp 1s:  每秒执行30次  (-rp 1s  == -rp 1000 )

4. –m: 总共执行的次数

5. –p: SIPp运行时绑定的端口, -mp: 绑定的媒体端口

6. –loip, -xcip, -ap, -s, -fid: (本地IP,远程IP,用户密码,被叫,主叫),用来替换场景文件中的变量

3) SIPp:UAS(callee)

接听来电:

./sipp -sf mast_uas.xml -p 15000 –mp 15002 –fid  18627180502

-loip 192.168.1.102 -xcip 192.168.1.102 -aa

注意:

1. 做为UAS端的SIPp, 不需要远端服务器的参数

2. 做为被叫号码, 必需先注册

五:软交换系统

1)  ppx_softswitch

ppx_softswitch系统是一套轻便级软交换系统,软件构架如下图所示:

  • LibEdit:命令行交互基础库;
  • Sofia-SIP:Nokia开发的SIP开源协议栈,负责SIP消息解析和封装,SIP事物管理,SDP消息解析和封装等;
  • Core:软交换入口模块,负责配置文件的加载、所有模块的初始化和启动等;
  • Utils:基础功能函数库,比如log,socket,哈希表,MD5算法等常用函数集;
  • CLI(Command-Line Interface):命令行操作维护管理模块;
  • SCM(SIP Call Management):SIP会话管理模块;
  • Formats:语音文件的读取和写入;
  • Codes:音频编解码库集合;
  • MS(Media Streamer):媒体流会话管理,RTP协议解析和封装,录音处理等;
  • PBX:PBX业务逻辑处理模块;
  • Meeting:会议管理模块;
  • SynwayAdapter:三汇API接口适配提供和管理模块。

2) 呼叫流程

a) 呼入流程

b) 呼出流程

SIP软交换相关介绍相关推荐

  1. 摄像头ip分享论坛_谁的SIP软交换呼叫中心终端摄像头正在公网裸奔

    SIP安全问题一直是整个IP通信行业非常重要的话题.SIP通信平台更多连接了SIP电话终端,IP摄像头,媒体服务器和计费系统.一旦某个环节出现问题都可能导致数据泄密,恶意盗打,系统被攻击等问题.特别是 ...

  2. 免费SIP软交换云总机IPPBX

    继开放免费IPPBX以来,一直受在到通信圈的朋友或热爱通信的达人研究与提出意见,也有放弃的. 在中国开放免费的或开源的系统真的很难,因为这方面没有收入来支撑投入,就是投入与产出不成正比,原因有很多. ...

  3. 阿里云服务器安装asterisk开源sip软交换服务器

    阿里云服务器安装asterisk开源sip软交换服务器 1.使用./contrib/scripts/install_prereq install自动安装依赖环境,此处是重要步骤. 2.版本的问题 ce ...

  4. 开源的 JAIN-SLEE SIP 软交换 -- Mobicents

    卢政 , 2006 年 1 月 26 日 JAIN-SLEE 是一个容器标准,目标是提供移动技术与企业技术之间的整合.该标准类似于 EJB,不过是用于各种面向事件的应用程序,例如 IP 电话服务.分布 ...

  5. 浅谈基于软交换的下一代网络技术

    浅谈基于软交换的下一代网络技术 随着产业界的融合趋势,电话网.计算机网.有线电视网趋于融合,网络面临的负荷在不断增大,业务需求也趋于多样化,运营商必须提供越来越多的多媒体业务才能吸引住用户,如何建设一 ...

  6. UT mSwitch软交换系统结构

    系统概述 mSwitch系统是UT斯达康公司开发研制的面向下一代网络(NGN)的软交换网络产品,可以为电信运营商提供崭新的软交换网络总体解决方案,这里m代表了移动(Mobile).多媒体(Multi- ...

  7. 软交换技术标准研究进展

    软交换技术标准研究进展 石友康 摘 要 下一代网络(NGN)包含了正在发生的网络构建方式的多种变革.软交换是目前各国电信部门的研究热点,也将是电信网络的发展趋势,一些国家正在开展试验,我国有关部门和运 ...

  8. VOS3000软交换怎么样,云服务器可以配置吗?

    VOS3000是昆石网络技术有限公司针对中小等规模 VoIP 运营业务提供的支撑系统.在云服务器和物理机上都是完美运行的. 除满足运营费率设定.套餐管理,账户管理.业终端管理.网关管理.数据查询.卡类 ...

  9. SIP协议及其简单介绍

    SIP协议及其简单介绍 概述 流程 SIP流程 两台设备建立会话 原理 使用场景 概述 SIP(Session Initiation Protocol,会话初始化协议)是一个应用层协议,用于在互联网上 ...

最新文章

  1. Educational Codeforces Round 93 (Rated for Div. 2) 题解
  2. php5.6 64位配置,centos(64位) 安装PHP5.6,配置LNMP
  3. 图像重建算法_降噪重建技术路在何方?
  4. redis集群3种模式
  5. Apollo进阶课程 ⑦ | 高精地图的采集与生产
  6. python做些什么项目内容_现在比较流行的python做什么项目最适合?
  7. window下搭建linux虚拟机
  8. ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
  9. linux发布成服务,linux服务简单部署
  10. android Sqlite操作之-- 自定义ORM关系实体映射类
  11. Mininet实验 自定义拓扑结构
  12. PPT常见的几种排版技巧,你都掌握了吗?
  13. 讯飞tts语音引擎_讯飞输入法A.I.语音引擎再升级 更强大更实用!
  14. 大众点评霸王餐自动报名autojs(更新版)
  15. 对于同一个数据库,Log shipping和log backup不可以同时运行
  16. 互联网入口之战:浏览器战争
  17. 如何在浏览器打开pdf文件头部隐藏菜单栏?
  18. M - 魔戒(BFS+四维数组)
  19. Win11通过注册表修改文件默认打开方式
  20. 如何完成述职报告或年终总结PPT

热门文章

  1. 技术积累 — SecureCRT串口工具及其使用说明
  2. 一文整理总结常见Java后端面试题系列——Java虚拟机篇(2022最新版)
  3. 高房楼噪音测试软件,高层住宅噪音测试:11层分贝数高于其他楼层
  4. DHCP协议详解,报文内容,如何查看报文,为什么offer报文会以广播的形式进行发送
  5. Matlab高光谱遥感、数据处理与混合像元分解及典型案例
  6. 海康威视硬件工程师校招一面面经
  7. 详解软件测试中白盒测试基本概念及四种白盒测试方法以及六种逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)
  8. ubuntu armv7l安装docker-comose
  9. 基于s3c2410的YL-LCD35液晶驱动的分析
  10. 计算机二级36套题解答百度云,全国计算机二级C选择题试题库第36套