logo资料库

FreeSWITCH+VoIP+实战.pdf

第1页 / 共139页
第2页 / 共139页
第3页 / 共139页
第4页 / 共139页
第5页 / 共139页
第6页 / 共139页
第7页 / 共139页
第8页 / 共139页
资料共139页,剩余部分请下载后查看
FreeSWITCH: VoIP 实战 前言 Fri May 07 07:46:27 -0700 2010 我们已经步入了一个新的时代。当前,VoIP 已开始成为语音通信的主导并将在全世界范围 内引领一场革命,而 SIP(Session Initiation Protocal,会话初始协议)必将是这场革命的 核心。 就像电子邮件一样,它用于文字通信,经过二十几年的发展,到现在几乎是人人都有一个 Email 地址了。而在不久的将来,每个人也将会拥有一个用于语音通信的 SIP 地址。随着互 联网的高速发展,数据流量的成本会越来越低,而且,随着 3G、4G 及 WiMax 无线网络的 发展,网络更将无处不在,各种新型的 SIP 电话及可以运行在各种移动设备上的 SIP 客户端 可以让你以极低的成本与世界上任何一个角落的人通信。 为什么写一本书? “大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折 中。” -- Andrew S.Tanenbaum 从第一次读 Tanenbaum 的《操作系统设计与实现》到现在已经好多年了,可这句写在前言 里的话还记忆犹新。在学校里,也学习过程控交换网、移动通信的知识,但只有肤浅的理解。 毕业后,我到电信局(这个名字也许太老了。中国电信业在短短的几年内经过了数次重组改 制,我离开时叫网通,电信局是我刚参加工作时的名字。)工作,负责程控交换机的维护。 在工作中我学到了 PSTN 网络交换的各种技术,掌握了七号信令系统(SS7),算是做到了理论 与实践相结合。那时候,VoIP 还是很新的东西,由于网络条件的限制,国内也少有人用。 2007 年底,我开始接触 Asterisk。阅读了《Asterisk, 电话未来之路》,并买了一个单口的 语音卡,实现了 VoiceMail,PSTN 网关,SIP 中继等各种功能。能在自己电脑上就能实现这 些有趣的东西,让我非常兴奋。后来,我加入 Idapted Inc.,做一种一对一的网络教学平台。 最初的后台语音系统也使用 Asterisk。但不久后转到 FreeSWITCH。虽然当时 FreeSWITCH 还是不到 1.0 的 Beta 版,但已经显出了比 Asterisk 高几倍的性能,并且相当的稳定。
FreeSWITCH 的主要作者 Anthony Minessal 曾有多年的 Asterisk 开发经验,后来由于他提的 一些设想未得到团队其它成员的支持,便独立开发了 FreeSWITCH,并以开源软件发布。 FreeSWITCH 主要使用 C、C++开发。为了不“重复发明轮子”,它使用了大量的成熟的第三 方软件库,功能丰富,可伸缩性强,并可以使用 Lua、Javascript、Perl 等多种嵌入式语言 控制呼叫流程。另外,它还提供 Socket 接口,可以使用任何语言进行二次开发或与其它系 统进行集成。最重要的是,它有一个非常友好、活跃的社区支持。如果你想到一项功能,可 能过几天就实现了;如果你发现一个 Bug,提交给开发者,通常第二天就修好了。FreeSWITCH 是极少数的 trunk 代码比最新的发行版更稳定的项目之一。而与此相对的很多商业系统却常 常需要很长的修复周期。 当然,我们在使用过程中也遇到不少问题,除了向开发者提交 Bug 外,我们也提交一些 Patch, 这不仅能在一定程度上能让 FreeSWITCH 按我们期望的方式工作,而且,也可以为开源事业 做一点点贡献,从而也可以获得一些成就感。而这也正是我们最喜欢开源软件的原因。 FreeSWITH 的文档非常丰富,它采用 wiki 系统,都是来自众多 FreeSWITCH 爱好者和实践 者的奉献。不过,对于初学者来说,查阅起来还不是很方便。因此 freeswitch-users 邮件列 表中也多次有人提到希望能有一本能系统地介绍 FreeSWITCH 的书。好像也已经有人在写, 只是还没有见到。 FreeSWITCH 在美国及其它国家已有很多的应用,但国内的用户还很少。2009 年下半年,我 创办了 FreeSWITCH-CN,希望能跟更多说中文的朋友一起学习和交流。我曾经设想能找一 些志同道合者把所有 wiki 资料都翻译成中文的。但由于各种原因一直未能实现。随着中文 社区的日益发展壮大,越来越多的人向我提问问题,而我也没有太多的时间一一作答。与此 同时,我在学习和使用的过程中积累了好多经验,因此,便有了自己写一本书的计划。 当然,上面提到,或者有人在写一本英文的书,但我相信我不是在重复发明轮子。我发现, 好多人问问题时,并不是因为不懂 FreeSWITCH,而是对一些基本理论或概念理解不清。当 然,我不会像教科书上那样照本宣科的讲理论,事实上,我也讲不了。我只是希望能结合多 年的工作经验,用一些比较通俗的语言把问题解释清楚,让与我遇到同样问题的朋友少走弯 路。 章节与内容安排 以什么风格来写呢?曾听人说过,“写作的难处不是考虑该写些什么,而是需要决定什么不 应该写进书里。”我深有感触。FreeSWITCH 官方 Wiki 上有几百页的资料,该从何写起呢? 如果只是盲目照抄的话,只不过是相当于做了些翻译工作,也没什么意思;如果只是将一些
功能及参数机械地罗列出来,那也不过相当于一个中文版的 Wiki。所以,我最后决定写成 一个由浅入深步步摔推进的教程。 当然,在最初几章我还是介绍了一些基本概念及背景知识,这主要是给没有电信背景的人看 的,另外,对从电路交换转到 VoIP 来的读者也会很有帮助。这些内容是不能舍弃的。 接下来应该是安装和配置。笔者看到有不少的图书,在讲一个软件时,将整个的安装过程都 会用图一步一步的列出来,有的甚至从如何安装 Linux 起,所有的步骤都抓了图。窃以为 那真是太没必要,事实上,这几年在邮件列表中看到大家问得比较多的问题是“我装上了 FreeSWITCH,该怎么用啊?”,而不是“谁能告诉我怎么安装 FreeSWITCH 啊?” 所以,如 何取舍就显页易见了。本书仅在第二章中提到了如何安装,或许以后如果觉得不够,可以加 一个附录,但绝对不会把如何安装 FreeSWITCH 单独作为一章。 实战部分,会以实际的例子讲配置,穿插讲解基本概念。如果有需要罗列的命令参考,在附 录中给出。 附录也很重要。除重要的参考资料,背景知识等,还收集了一些我所知道的奇闻轶事。 另外,FreeSWITCH 一直处理很活跃的开发中,所以,某些章节可能刚写完就过时了,最新、 最权威的参考还是官方的 Wiki。但是,本书所阐述的基本架构、理念,尤其是历史永远不 会进时。 鉴于本书的内容安排,本书适合顺序阅读。 谁适合阅读本书?  学生。我看过一些学校的教材,大部分只是讲 VoIP 原理及 SIP 协议等,很枯燥。  教师。显而易见,你希望你的学生能理论与实践相结合。  FreeSWITCH 初学者。本书肯定对你有帮助。  FreeSWTICH 高级用户,开发人员。如果你喜欢 FreeSWITCH,也一定会喜欢这本 书。  VoIP 爱好者,开发人员。他山之石,可以攻玉。即使你不使用 FreeSWITCH,本书 也会对你有帮助。  电信企业的维护人员、销售人员、决策人员。相信本书能使你更了解客户需求,以 及如何才能为客户提供更好的服务。
 其它企业管理人员。如果你知道电信业务其实还可以提供许多你所不知道的功能和 业务,你肯定能很好地加以利用,带来的是效率、节省的是成本。  其它人员。开卷有益,而且,你会对你天天离不开的电话、手机,以及新兴的网络 电话、即时通讯工具等有一个更好的了解,从而增加工作效率。 排版约定 本书是使用 Markdown 标记语言来写的,它比较简单,因此不能像 Latex 那样实现复杂的 排版和交叉引用,但作为电子书,也差不多够用了。 命令,程序输出等都使用 HTML 的 PRE 标签。 本书插图由 yed,XMind 生成,呼叫流程图就直接用了纯文本。 本书使用 Discount 转换成 HTML。 为方便读者,书中术语首次出现时尽量给出英文及中文全称,如 SIP(Session Initiation Protocal,会话初始协议)。 由于水平所限,存在错误在所难免,欢迎广大 F 友批评指正。 本书现在只是一个草稿,会不定期做改动,即使大的改动也不一定发布通知。 版权声名 本书内容采用 知识共享 署名-非商业性使用-禁止演绎 2.5 中国大陆(CC-BY-NC-ND) 授权. 任何形式的转载均需加入本授权协议链接(或文本)以及指向本站的链接。 协议地址:http://creativecommons.org/licenses/by-nc-nd/2.5/cn/legalcode 本文地址:http://www.freeswitch.org.cn/document 致谢
FreeSWITCHTM 是 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/legalcode 本 文 地 址 : http://www.freeswitch.org.cn/blog/past/2010/5/7/freeswitch-book-qian-yan/ ------------------------------------------------------------------------------------------- vontall at Fri May 07 22:54:38 -0700 2010: 我在 google reader 里订阅了本站,内容非常的好。目前我是在用 Asterisk,但对 FreeSWITCH 也很有兴趣。未来之路一书对于 Asterisk 的推广是显而易见的,FreeSWITCH 也确实缺乏这 么一份资料。感谢您的无私奉献。 第一章 PSTN 与 VoIP Fri Apr 30 11:00:43 -0700 2010 说起 VoIP,也许大家对网络电话更熟悉一些。其英文原意是 Voice Over IP,即承载于 IP 网 上的语音通信。大家熟悉家庭用来上网的 ADSL 吧,也许有些人还记得前些年用过的吱吱叫 的老“猫”。技术日新月异,前面的技术都是用电话线上网,现在,VoIP 技术使我们可以在 网上打电话,生活就是这样。 所谓温故而知新,在了解任何东西以前,我们都最好了解一下其历史,以做到心中有数。在 了解 VoIP 之前,我们需要先看一下 PSTN,那在 PSTN 之前呢?
PSTN 起源 PSTN(Public Switched Telephone Network)的全称是公共交换电话网,就是我们现在打电 话所使用的电话网络。 第一次语音传输是亚历山大·贝尔(Alexander Granham Bell)在 1876 年用振铃电路实现的。 在那之前,普遍认为烽火台是最早的远程通信方式。其实峰火台不仅具备通信的完整要素(通 信双方,通信线路及中继器),而且还是无线通信。当时的没有电话号码,相互通话的用户 之间必须有物理线路连接;并且,在同一时间只有一个用户可以讲话(半双工)。发话方通过 话音的振动激励电炭精麦克风而转换成电信号,电信号传到远端后通过振动对方的扬声器发 声,从而传到对方的耳朵里。 由于每对通话的个体之间都需要单独的物理线路,如果整个电话网上有 10 个人,而你想要 与另个 9 个人通话,你家就需要铺设 9 对电话线。同时整个电话网上就需要 10 x (10-1) / 2 = 45 对电话线。 当电话用户数量增加的时候,为每对通话的家庭之间铺设电话线是不可能的。因此一种称为 交换机(Switch)的设备诞生了。它位于整个电话网的中间用于连接每个用户,用户想打电 话时先拿起电话连接到管理交换机的接线员,由接线员负责接通到对方的线路。这便是最早 的电话交换网。 由于技术的进步,电子交换机替代了人工交换机,便出现了现代意义的 PSTN。随着通信网 络的进一步扩大,便出现了许许多多的交换机。交换机间通过中继线(Trunk)相连。有时 一个用户与另一个用户通话需要穿越多台交换机。 后来出现了移动电话(当移动电话小到可以拿在手里的时候就开始叫“手机”),专门用于对 移动电话进行交换的通信网络称移动网,而原来的程控交换网则叫固定电话网,简称固网。 简单来说,移动网就是在普通固网的基础上增加了许多基站(Base Station,可以简单理解 为天线),并增加了归属位置寄存器(HLR,Home Location Register)和拜访位置寄存器 (VLR,Visitor Location Register),以用户记录用户的位置(在哪个天线的覆盖范围内)、 支持异地漫游等。移动交换中心称之为 MSC(Mobile Switch Center)。 模拟与数字信号 现实中的一切都是模拟的。模拟量(Analog)是连续的变化的,如温度、声音等。早期的电 话网是基于模拟交换的。模拟信号对于人类交流来讲非常理想,但它很容易引入噪声。如果
通话双方距离很远的话,由于信号的衰减,需要对信号进行放大。问题是信号中经常混入线 路的噪音,放大信号的同时也放大的噪音,导致信噪比(信号量与噪声的比例)下降,严重 时会难以分辨。 数字(Digital)信号是不连续的(离散的)。它是按一定的时间间隔(单位时间内抽样的次 数称为频率)对模拟信号进行抽样得出的一些离散值。根据抽样定理,当抽样频率是最高模 拟信号频率的两倍时,就能够完全还原原来的模拟信号。 PCM PCM(Pulse Code Modulattion)的全称是脉冲编码调制。它是一种通用的将模拟信号转换 成以 0 和 1 表示的数字信号的方法。 一般来说,人的声音频率范围在 300Hz ~ 3400Hz 之间, 通过滤波器对超过 4000Hz 的频 率过滤出去,便得到 4000Hz 内的模拟信号。然后根据抽样定理,使用 8000Hz 进行抽样, 便得到离散的数字信号。 通过使用压缩算法(实际为压扩法,因为有的部分压缩有的是扩张的。目的是给小信号更多 的比特位数以提高语音质量),可以将每一个抽样值压缩到 8 个比特。这样就得到 8 x 8000 = 64000bit (通常称为 64kbit/s。注意,通常来说,对于二进制数,1kbit=1024bit,但此 处的 k=1000)的信号。通常我们就简称为 64k。 PCM 通常有两种压缩方式:A 律和 μ 律。其中北美使用 μ 律,我国和欧洲使用 A 律。这两 种压缩方法很相似,都采用 8bit 的编码获得 12bit 到 13bit 的语音质量。但在低信噪比的情 况下,μ 律比 A 律略好。 我国电话网结构
图中主体部分为一地市级电话网的结构。通常,话机(如 c)通过一对电话线连接到距离最 近的交换机上,该交换机称为端局交换机(一般以区或县为单位)。端局交换机通过局间中 继线连接到汇接局。为了保证安全,汇接局通常会成对出现,平常实行负荷分担,一台汇接 局出现故障时与之配对的汇接局承担所有话务。长途电话需要通过长途局与其它长途局相 连。但根据话务量要求,汇接局也可以直接与其它长途局开通高速直达中继。为节省用户线, 在一些人口比较集中的地方(如学校、小区),端局下会再设模块局或接入网,用户则就近 接入的模块局上。 智能网一般用于实现电话卡、预付费或 400/800 类业务,而近几年新布署的 NGN(Next Generation Network,下一代网络,一般指软交换。)则支持更灵活、更复杂的业务。 时分复用与局间中继 时分复用 通过将多个信道以时分复用的方式合并到一条电路上,可以减少局间中继线的数量。通过将 32 个 64k 的信道利用时分复用合并到一条 2M( 64k x 32 = 2.048M ,通俗来说就直接叫一 个 2M)电路上,称为一个 E1(在北美和日本,是 24 个 64k 复用,称为 T1,速率是 1.544M)。 在 E1 中,每一个信道称作一个时隙。其中,除 0 时隙固定传同步时钟,其它 31 个时隙最 多可以同时支持 31 路电话(如果使用隨路信令,则使用第 16 时隙传送,这时最多支持 30 路电话)。
分享到:
收藏