FreeSWITCH_VoIP实战.doc

上传人:sk****8 文档编号:3519986 上传时间:2019-06-01 格式:DOC 页数:141 大小:979.50KB
下载 相关 举报
FreeSWITCH_VoIP实战.doc_第1页
第1页 / 共141页
FreeSWITCH_VoIP实战.doc_第2页
第2页 / 共141页
FreeSWITCH_VoIP实战.doc_第3页
第3页 / 共141页
FreeSWITCH_VoIP实战.doc_第4页
第4页 / 共141页
FreeSWITCH_VoIP实战.doc_第5页
第5页 / 共141页
点击查看更多>>
资源描述

1、FreeSWITCH: VoIP 实战前言Fri May 07 07:46:27 -0700 2010我们已经步入了一个新的时代。当前,VoIP 已开始成为语音通信的主导并将在全世界范围内引领一场革命,而 SIP(Session Initiation Protocal,会话初始协议)必将是这场革命的核心。就像电子邮件一样,它用于文字通信,经过二十几年的发展,到现在几乎是人人都有一个Email 地址了。而在不久的将来,每个人也将会拥有一个用于语音通信的 SIP 地址。随着互联网的高速发展,数据流量的成本会越来越低,而且,随着 3G、4G 及 WiMax 无线网络的发展,网络更将无处不在,各种新型

2、的 SIP 电话及可以运行在各种移动设备上的 SIP 客户端可以让你以极低的成本与世界上任何一个角落的人通信。为 什 么 写 一 本 书 ?“大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。” - Andrew S.Tanenbaum从第一次读 Tanenbaum 的操作系统设计与实现到现在已经好多年了,可这句写在前言里的话还记忆犹新。在学校里,也学习过程控交换网、移动通信的知识,但只有肤浅的理解。毕业后,我到电信局(这个名字也许太老了。中国电信业在短短的几年内经过了数次重组改制,我离开时叫网通,电信局是我刚参加工作时的名字。)工作,负责程控交换机的维护。在工作

3、中我学到了 PSTN 网络交换的各种技术,掌握了七号信令系统(SS7) ,算是做到了理论与实践相结合。那时候,VoIP 还是很新的东西,由于网络条件的限制,国内也少有人用。2007 年底,我开始接触 Asterisk。阅读了Asterisk, 电话未来之路,并买了一个单口的语音卡,实现了 VoiceMail,PSTN 网关,SIP 中继等各种功能。能在自己电脑上就能实现这些有趣的东西,让我非常兴奋。后来,我加入 Idapted Inc.,做一种一对一的网络教学平台。最初的后台语音系统也使用 Asterisk。但不久后转到 FreeSWITCH。虽然当时 FreeSWITCH 还是不到 1.0

4、的 Beta 版,但已经显出了比 Asterisk 高几倍的性能,并且相当的稳定。FreeSWITCH 的主要作者 Anthony Minessal 曾有多年的 Asterisk 开发经验,后来由于他提的一些设想未得到团队其它成员的支持,便独立开发了 FreeSWITCH,并以开源软件发布。FreeSWITCH 主要使用 C、C+开发。为了不“ 重复发明轮子”,它使用了大量的成熟的第三方软件库,功能丰富,可伸缩性强,并可以使用 Lua、Javascript 、Perl 等多种嵌入式语言控制呼叫流程。另外,它还提供 Socket 接口,可以使用任何语言进行二次开发或与其它系统进行集成。最重要的是

5、,它有一个非常友好、活跃的社区支持。如果你想到一项功能,可能过几天就实现了;如果你发现一个 Bug,提交给开发者,通常第二天就修好了。FreeSWITCH 是极少数的 trunk 代码比最新的发行版更稳定的项目之一。而与此相对的很多商业系统却常常需要很长的修复周期。当然,我们在使用过程中也遇到不少问题,除了向开发者提交 Bug 外,我们也提交一些Patch,这不仅能在一定程度上能让 FreeSWITCH 按我们期望的方式工作,而且,也可以为开源事业做一点点贡献,从而也可以获得一些成就感。而这也正是我们最喜欢开源软件的原因。FreeSWITH 的文档非常丰富,它采用 wiki 系统,都是来自众多

6、 FreeSWITCH 爱好者和实践者的奉献。不过,对于初学者来说,查阅起来还不是很方便。因此 freeswitch-users 邮件列表中也多次有人提到希望能有一本能系统地介绍 FreeSWITCH 的书。好像也已经有人在写,只是还没有见到。FreeSWITCH 在美国及其它国家已有很多的应用,但国内的用户还很少。2009 年下半年,我创办了 FreeSWITCH-CN,希望能跟更多说中文的朋友一起学习和交流。我曾经设想能找一些志同道合者把所有 wiki 资料都翻译成中文的。但由于各种原因一直未能实现。随着中文社区的日益发展壮大,越来越多的人向我提问问题,而我也没有太多的时间一一作答。与此同

7、时,我在学习和使用的过程中积累了好多经验,因此,便有了自己写一本书的计划。当然,上面提到,或者有人在写一本英文的书,但我相信我不是在重复发明轮子。我发现,好多人问问题时,并不是因为不懂 FreeSWITCH,而是对一些基本理论或概念理解不清。当然,我不会像教科书上那样照本宣科的讲理论,事实上,我也讲不了。我只是希望能结合多年的工作经验,用一些比较通俗的语言把问题解释清楚,让与我遇到同样问题的朋友少走弯路。章 节 与 内 容 安 排以什么风格来写呢?曾听人说过,“写作的难处不是考虑该写些什么,而是需要决定什么不应该写进书里。”我深有感触。FreeSWITCH 官方 Wiki 上有几百页的资料,该

8、从何写起呢?如果只是盲目照抄的话,只不过是相当于做了些翻译工作,也没什么意思;如果只是将一些功能及参数机械地罗列出来,那也不过相当于一个中文版的 Wiki。所以,我最后决定写成一个由浅入深步步摔推进的教程。当然,在最初几章我还是介绍了一些基本概念及背景知识,这主要是给没有电信背景的人看的,另外,对从电路交换转到 VoIP 来的读者也会很有帮助。这些内容是不能舍弃的。接下来应该是安装和配置。笔者看到有不少的图书,在讲一个软件时,将整个的安装过程都会用图一步一步的列出来,有的甚至从如何安装 Linux 起,所有的步骤都抓了图。窃以为那真是太没必要,事实上,这几年在邮件列表中看到大家问得比较多的问题

9、是“我装上了 FreeSWITCH,该怎么用啊?”,而不是“谁能告诉我怎么安装 FreeSWITCH 啊?” 所以,如何取舍就显页易见了。本书仅在第二章中提到了如何安装,或许以后如果觉得不够,可以加一个附录,但绝对不会把如何安装 FreeSWITCH 单独作为一章。实战部分,会以实际的例子讲配置,穿插讲解基本概念。如果有需要罗列的命令参考,在附录中给出。附录也很重要。除重要的参考资料,背景知识等,还收集了一些我所知道的奇闻轶事。另外,FreeSWITCH 一直处理很活跃的开发中,所以,某些章节可能刚写完就过时了,最新、最权威的参考还是官方的 Wiki。但是,本书所阐述的基本架构、理念,尤其是历

10、史永远不会进时。鉴于本书的内容安排,本书适合顺序阅读。谁 适 合 阅 读 本 书 ? 学生。我看过一些学校的教材,大部分只是讲 VoIP 原理及 SIP 协议等,很枯燥。 教师。显而易见,你希望你的学生能理论与实践相结合。 FreeSWITCH 初学者。本书肯定对你有帮助。 FreeSWTICH 高级用户,开发人员。如果你喜欢 FreeSWITCH,也一定会喜欢这本书。 VoIP 爱好者,开发人员。他山之石,可以攻玉。即使你不使用 FreeSWITCH,本书也会对你有帮助。 电信企业的维护人员、销售人员、决策人员。相信本书能使你更了解客户需求,以及如何才能为客户提供更好的服务。 其它企业管理人

11、员。如果你知道电信业务其实还可以提供许多你所不知道的功能和业务,你肯定能很好地加以利用,带来的是效率、节省的是成本。 其它人员。开卷有益,而且,你会对你天天离不开的电话、手机,以及新兴的网络电话、即时通讯工具等有一个更好的了解,从而增加工作效率。 排 版 约 定本书是使用 Markdown 标记语言来写的,它比较简单,因此不能像 Latex 那样实现复杂的排版和交叉引用,但作为电子书,也差不多够用了。命令,程序输出等都使用 HTML 的 PRE 标签。本书插图由 yed,XMind 生成,呼叫流程图就直接用了纯文本。本书使用 Discount 转换成 HTML。为方便读者,书中术语首次出现时尽

12、量给出英文及中文全称,如 SIP(Session Initiation Protocal,会话初始协议)。由于水平所限,存在错误在所难免,欢迎广大 F 友批评指正。本书现在只是一个草稿,会不定期做改动,即使大的改动也不一定发布通知。版 权 声 名本书内容采用 知识共享 署名-非商业性使用- 禁止演绎 2.5 中国大陆(CC-BY-NC-ND) 授权.任何形式的转载均需加入本授权协议链接(或文本)以及指向本站的链接。协议地址:http:/creativecommons.org/licenses/by-nc-nd/2.5/cn/legalcode本文地址:http:/ 谢FreeSWITCHTM

13、是 http:/www.freeswitch.org 的注册商标。 感谢 Anthony Minessal 及他的团队给我们提供了如果优秀的软件;同时感谢 FreeSWITCH 社区所有成员的热心帮助。本书的一些资料和例子来自 FreeSWITCH Wiki 及邮件列表,不能一一查证原作者,在此一并致谢。版 权 声 明本文采用 知识共享 署名-非商业性使用- 禁止演绎 2.5 中国大陆(CC-BY-NC-ND) 授权,任何形式的转载均需加入本授权协议链接(或文本)以及指向本站的链接。协议地址:http:/creativecommons.org/licenses/by-nc-nd/2.5/cn/

14、legalcode本文地址:http:/ at Fri May 07 22:54:38 -0700 2010: 我在 google reader 里订阅了本站,内容非常的好。目前我是在用 Asterisk,但对FreeSWITCH 也很有兴趣。未来之路一书对于 Asterisk 的推广是显而易见的,FreeSWITCH也确实缺乏这么一份资料。感谢您的无私奉献。第一章 PSTN 与 VoIPFri Apr 30 11:00:43 -0700 2010说起 VoIP,也许大家对网络电话更熟悉一些。其英文原意是 Voice Over IP,即承载于 IP网上的语音通信。大家熟悉家庭用来上网的 ADS

15、L 吧,也许有些人还记得前些年用过的吱吱叫的老“猫”。技术日新月异,前面的技术都是用电话线上网,现在,VoIP 技术使我们可以在网上打电话,生活就是这样。所谓温故而知新,在了解任何东西以前,我们都最好了解一下其历史,以做到心中有数。在了解 VoIP 之前,我们需要先看一下 PSTN,那在 PSTN 之前呢?PSTN 起 源PSTN(Public Switched Telephone Network)的全称是公共交换电话网,就是我们现在打电话所使用的电话网络。第一次语音传输是亚历山大贝尔(Alexander Granham Bell)在 1876 年用振铃电路实现的。在那之前,普遍认为烽火台是最

16、早的远程通信方式。其实峰火台不仅具备通信的完整要素(通信双方,通信线路及中继器) ,而且还是无线通信。当时的没有电话号码,相互通话的用户之间必须有物理线路连接;并且,在同一时间只有一个用户可以讲话(半双工) 。发话方通过话音的振动激励电炭精麦克风而转换成电信号,电信号传到远端后通过振动对方的扬声器发声,从而传到对方的耳朵里。由于每对通话的个体之间都需要单独的物理线路,如果整个电话网上有 10 个人,而你想要与另个 9 个人通话,你家就需要铺设 9 对电话线。同时整个电话网上就需要 10 x (10-1) / 2 = 45 对电话线。当电话用户数量增加的时候,为每对通话的家庭之间铺设电话线是不可

17、能的。因此一种称为交换机(Switch)的设备诞生了。它位于整个电话网的中间用于连接每个用户,用户想打电话时先拿起电话连接到管理交换机的接线员,由接线员负责接通到对方的线路。这便是最早的电话交换网。由于技术的进步,电子交换机替代了人工交换机,便出现了现代意义的 PSTN。随着通信网络的进一步扩大,便出现了许许多多的交换机。交换机间通过中继线(Trunk)相连。有时一个用户与另一个用户通话需要穿越多台交换机。后来出现了移动电话(当移动电话小到可以拿在手里的时候就开始叫“手机” ),专门用于对移动电话进行交换的通信网络称移动网,而原来的程控交换网则叫固定电话网,简称固网。简单来说,移动网就是在普通

18、固网的基础上增加了许多基站(Base Station,可以简单理解为天线),并增加了归属位置寄存器(HLR,Home Location Register)和拜访位置寄存器(VLR,Visitor Location Register),以用户记录用户的位置(在哪个天线的覆盖范围内)、支持异地漫游等。移动交换中心称之为 MSC(Mobile Switch Center)。模 拟 与 数 字 信 号现实中的一切都是模拟的。模拟量(Analog)是连续的变化的,如温度、声音等。早期的电话网是基于模拟交换的。模拟信号对于人类交流来讲非常理想,但它很容易引入噪声。如果通话双方距离很远的话,由于信号的衰减,

19、需要对信号进行放大。问题是信号中经常混入线路的噪音,放大信号的同时也放大的噪音,导致信噪比(信号量与噪声的比例)下降,严重时会难以分辨。数字(Digital)信号是不连续的(离散的)。它是按一定的时间间隔(单位时间内抽样的次数称为频率)对模拟信号进行抽样得出的一些离散值。根据抽样定理,当抽样频率是最高模拟信号频率的两倍时,就能够完全还原原来的模拟信号。PCMPCM(Pulse Code Modulattion)的全称是脉冲编码调制。它是一种通用的将模拟信号转换成以 0 和 1 表示的数字信号的方法。一般来说,人的声音频率范围在 300Hz 3400Hz 之间, 通过滤波器对超过 4000Hz

20、的频率过滤出去,便得到 4000Hz 内的模拟信号。然后根据抽样定理,使用 8000Hz 进行抽样,便得到离散的数字信号。通过使用压缩算法(实际为压扩法,因为有的部分压缩有的是扩张的。目的是给小信号更多的比特位数以提高语音质量),可以将每一个抽样值压缩到 8 个比特。这样就得到 8 x 8000 = 64000bit (通常称为 64kbit/s。注意,通常来说,对于二进制数,1kbit=1024bit,但此处的 k=1000)的信号。通常我们就简称为 64k。PCM 通常有两种压缩方式:A 律和 律。其中北美使用 律,我国和欧洲使用 A 律。这两种压缩方法很相似,都采用 8bit 的编码获得

21、 12bit 到 13bit 的语音质量。但在低信噪比的情况下, 律比 A 律略好。我 国 电 话 网 结 构图中主体部分为一地市级电话网的结构。通常,话机(如 c)通过一对电话线连接到距离最近的交换机上,该交换机称为端局交换机(一般以区或县为单位)。端局交换机通过局间中继线连接到汇接局。为了保证安全,汇接局通常会成对出现,平常实行负荷分担,一台汇接局出现故障时与之配对的汇接局承担所有话务。长途电话需要通过长途局与其它长途局相连。但根据话务量要求,汇接局也可以直接与其它长途局开通高速直达中继。为节省用户线,在一些人口比较集中的地方(如学校、小区),端局下会再设模块局或接入网,用户则就近接入的模

22、块局上。智能网一般用于实现电话卡、预付费或 400/800 类业务,而近几年新布署的 NGN(Next Generation Network,下一代网络,一般指软交换。)则支持更灵活、更复杂的业务。时 分 复 用 与 局 间 中 继时分复用通过将多个信道以时分复用的方式合并到一条电路上,可以减少局间中继线的数量。通过将 32 个 64k 的信道利用时分复用合并到一条 2M( 64k x 32 = 2.048M ,通俗来说就直接叫一个 2M)电路上,称为一个 E1(在北美和日本,是 24 个 64k 复用,称为 T1,速率是1.544M)。在 E1 中,每一个信道称作一个时隙。其中,除 0 时隙

23、固定传同步时钟,其它31 个时隙最多可以同时支持 31 路电话(如果使用隨路信令,则使用第 16 时隙传送,这时最多支持 30 路电话)。局间中继这些连接交换机(局) 的 2M 电路就称为局间中继。随着话务量的增加,交换机之间的电路越开越多,目前通常的做法是将 63 个 2M 合并到一个 155M( 2 x 63 + P = 155,其中 P 是电路复用的开销)的光路(光纤)上。信 令用户设备(如话机)与端局交换机之间,以及交换机与交换机之间需要进行通信。这些通信所包含的信息包括(但不限于)用户、中继线状态,主、被叫号码,中继路由的选择等。我们把这些消息称为信令(Signaling )。用户线

24、信令用户线信令是从用户话机到端局交换机之间传送的信令。对于普通的话机,线路上传送的是模拟信号,信令只能在电话线路上传送,这种信令称为带内信令。话机通过电压变化来传递摘、挂机信号;通过 DTMF(Dual Tone Multi Frequency,双音多频。话机上每个数字或字母都可以发送一个低频和一个高频信号相结合的正弦波,交换机经过解码即可知道对应的话机按键)传送要拨叫的电话号码。另外,也可以通过移频键控(FSK,Frequency Shift-keying)技术支持来电显示(Caller ID 或 CLIP,Caller Line Identification Presentation,主叫

25、线路识别提示)。与普通电话不同,ISDN(Integrated Service Digital Network,综合业务数字网)在用户线上传送的是数字信号。它的基本速率接口使用 144k 的 2B+D 信道-两个 64k 的 B 信道及一个 16k 的 D 信道。由于其信令在话路(B 信道)以外的 D 信道传送,这种信令称为带外信令。实际上,2B+D 的 ISDN 并没有发挥出它应有的作用,在国内已很少有人使用。局间信令局间信令主要在局间中继上传送。一般一条信令链路通常只占用一个 64k 的时隙。一条信令消息通常只有几十或上百个字节,一条 64k 的电路足矣容纳成千上万路电话所需要的信令。但随

26、着技术的进步,话务量的上涨以及更多增值业务的出现,完成一次通话需要更多的信令消息,因此出现了 2M 速率的信令链路,即整个 E1 链路上全部传送信令。局间信令也分为带内信令和带外信令。带内信令又称为随路信令,它是在跟话路同一个 2M上传送的,通常使用第 16 时隙。带外信令则是在独立的专门用于传送信令链路的 2M 中继上传送的,与带内信令相比,它更加灵活。我国的电话网络中有专门的信令网并使用 7 号信令(SS7, Signaling System No. 7)。七号信令SS7 是目前我国使用的主要的信令方式用户 A a 交换机 b 交换机 用户 B| | | | 摘机 |-| | | 拨号音

27、|-|-| 回铃音 ACM |-|-| RLC| |-|-| | | | |我们来看一次简单的固定电话的通话流程。如图。用户 A 摘机,与其相连的 a 交换机根据电压变化检测到 A 摘机后,即送拨号音,同时启动收号程序。A 开始拨号,待 a 交换机号码收齐后,即查找路由,发送 IAM(初始地址消息)给 b 交换机。b 向话机 B 振铃,同时向 a 发 ACM(地址全消息),a 向 A 送回铃音。这时如果 B 接听电话,则 b 向 a 发送ANM(应答计费消息),A 与 B 开始通话,同时 a 对 A 计费。通话完毕,任何一方挂机,则本端交换机(如 a)向对端 b 发送 REL(释放消息),b 向 a 回 RLC(确认,释放完成),并向 B 送催挂音(啫啫啫.)。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。