论文部分内容阅读
摘要:首先分析了VoIP系统的组成,介绍了一些开放源代码的网守项目,也就是VoIP系统的核心--软交换部分,然后以Asterisk为例,介绍了其安装与配置,分析了VoIP协议、编码及终端选用的一些原则,最后以一个小的成本分析为例,分析了VoIP系统的特点及在企业应用中极低的使用成本。
关键词:网络电话;网络私有交换机;Asterisk;下一代网络
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2862-03
A Low-cost VoIP Solution Based on Open Source Software
HU Yao-dong, LI Wan-gao
(Network Management Center, Henan Institute of Engineering,Zhengzhou 451191,China)
Abstract: First,This paper analyzes the constitution of VoIP system, introduce some open source code items of network Gatekeeper,is also the cores of the system of VoIP- soft commutation part, then to take Asterisk as an example,introduce it installs and sets, analyzing the VoIP agreement,coding and the terminal choose some principles for uses,Last is to take a small cost analysis as an example,analyzing the characteristics of the system of VoIP,and very low usage cost in business enterprise apply.
Key words:VoIP;IPPBX;asterisk;NGN
1 引言
通信行业的开源项目不断涌现打破了传统电信设备制造商对电信技术的垄断,也为下一代网络(NGN)的发展注入了无限的活力。VoIP(Voice over IP)技术,整合数据和语音两个系统,可以发挥网络的潜力,极大节约在语音方面的花费,一些跨国、跨地区的公司早已经应用,遍布各地的话吧绝大部分是VoIP应用,如何在已有IP网络的基础上低成本地实现VoIP应用?是本文探讨的基本目的。
2 VoIP系统的组成
VoIP的基本原理是:通过语音的压缩算法对语音数据编码进行压缩处理,然后把这些语音数据按TCP/IP标准进行打包,经过IP网络把数据包送至接收地,再把这些语音数据包串起来,经过解压缩处理后,恢复成原来的语音信号,从而达到由IP网络传达语音的目的。从基本原理上我们可以看出,VoIP系统是建立在IP网络的基础之上的,IP网络可以是各种类型的,有线的、无线的,V4的或者V6的,VoIP的基本组成由VoIP终端和网守(Gatekeeper)两大部分。
VoIP终端,VoIP终端指的是将模拟的语音信号转换为数字信号并进行压缩,可以是下列形式之一,单独的网络电话机;计算机系统和一个应用软件;传统电话机和语音网关(Gateway)。
网守(Gatekeeper):网守指的是指引终端来的IP数据包到接收地,并完成相应的认证计费等工作,类似于传统电话网络中的程控交换机。
如果需要VoIP终端和传统的电话系统互通,还需要网守和传统的电话程控交换机互通,这种情况通常叫落地或落地网关,从严格意义上来说,这已经不属于VoIP系统的范畴了。
3 网守的选用和配置
网守,又叫软交换(Soft Switch ),完成此功能的设备通常情况下称作IPPBX(IP Private Branch eXchange,网络私有交换机),其实质就是一台运行网守软件的联网计算机。除了私有的PBX应用方案,开放源代码的PBX应用方案也是数量众多,常见的有以下几种:
Asterisk:Linux系统下开源的IPPBX,功能强大稳定,主要用c语言开发。http://www.asterisk.org/
Vocal:Linux系统下开源的SIP服务器端。可以作为IPPBX,也可以作为运营系统。很多VoIP虚拟运营商都用这个作为自己的运营系统。http://www.vovida.org/
YATE:跨平台(Linux,Windows)的开源SIP服务器端。http://yate.null.ro/pmwiki/
SER:Linux平台下重量级的SIP服务器断。功能比较丰富,也是很多VoIP虚拟运营商的系统选择。http://www.iptel.org/ser/
SIPX:Linux平台下的SIP服务器。http://www.sipfoundry.org
下面以Asterisk为例,介绍PBX系统的安装和配置,Digium公司发起的Asterisk是首批开源VoIP项目之一,也是最早的VoIP PBX之一。Asterisk是一个完整的PBX软件,它运行在Linux,BSD,Window(仿真)和OS X操作系统上,提供了超越你想象的PBX特性,Asterisk支持几乎所有的VOIP方面的协议和标准电话设备。Asterisk是一个非常成熟的平台,采用GPL许可证,它支持大企业都希望的VoIP解决方案提供的各种功能,包括语音邮件、呼叫转移、会议功能,甚至交互语音应答(IVR)等。它还有呼叫详细记录,以及适合用于虚拟教室或者虚拟会议室等场合的高级特性。
Asterisk可以运行在很多平台上,多数情况下建议在Linux系统下运行,比如Fedora或CentOS上,Asterisk主要使用三个包:Asterisk主程序(Asterisk),Zapata电话驱动(zaptel),和PRI库libpri。如果搭建一个纯VoIP网络,那么只需要Asterisk包;如果使用ztdummy驱动(电话会议使用)作为时间接口,或者使用ISDN PRI接口,则建议三个包都安装。另一个建议安装的包就是asterisk-sounds,当Asterisk接收到分别来自各地的呼叫时,asterisk-sounds包给出一个适当的声音提示。所有这些包都可以通过http://www.asterisk.org/downloads网站下载。
为编译上面所下载的包,需要安装GCC编译器(3.X版本或者更高)以及附属包。在目前发行的Linux版本上,已经很好的支持了。通常建议先安装zaptel包,再安装libpri包,最后安装Asterisk包和asterisk-sounds包。一般情況下需要解压缩,编译,安装等过程。如果熟悉Linux系统,通常情况下这个过程是比较简单的。如果需要有针对性的编译或更高的执行效率,开放源代码的程序给我们提供了众多的选项,可以按需定制。
安装完成后,根据需要加载相应的模块,最后可以加载Asterisk,加载Asterisk有很多方法,最简单的方法就是通过Linux命令行接口直接运行二进制可执行文件。如果在系统启动的时候使用init.d脚本,同样可以很容易启动和重新启动Asterisk,然而,最好的方法是通过safe_asterisk脚本。
Asterisk系统的配置,主要由一些配置文件决定,这些配置文件大部分在/etc/asterisk这个目录下,但zaptel.conf文件在/etc目录里。几个主要的配置文件是zaptel.conf、zapata.conf、extensions.conf、sip.conf、iax.conf等,通过修改这些配置文件,可以方便地定制我们需要的功能。
如果对Linux不太熟悉的话,我们可以使用别人封装好的安装包,AsteriskNOW(http://www.asterisknow.org/) TrixBox(http://www.trixbox.org/)和Elastix(http://www.elastix.org/)就是很好的例子,這几个都是基于CentOS操作系统和Asterisk软件封装的安装包,在其网站下载光盘镜像文件,刻录光盘,经过几个简单的提示操作,就可完成软件的安装。而且提供了方便的web管理界面,配置、管理变得比较简单了。
如果需要和传统的电话网互通的话,Asterisk也提供了很好的支持,除了直接找落地运营商外,也可以通过和Asterisk兼容的模拟或数字卡,可以在一定程度上满足网络电话和传统电话的互通。
4 协议、编码和VoIP终端的选用
目前流行的VoIP协议有以下几种:
H.323:这个国际电联(ITU)的协议最初设计是用来为视频会议提供IP传输机制。它成为了基于IP传输的视频会议设备的标准,作为一个VoIP协议,它非常出名。
SIP:会话初始化协议(SIP)暴风骤雨般地占据了VoIP世界,做为在网络终端的VoIP协议的特别选择,最初仅认为是一个有趣的想法的SIP现在看起来已经取代了H.323的主体地位。SIP的前提是连接的每个终端是一个对等的实体(Peer),然后他们间进行协议协商。SIP引人注目的是它是一个相对简单的协议,与它语法类似的协议有HTTP、SMTP等。
IAX:IAX(Inter Astersik eXchange)协议是Digium公司开发用来与其他Asterisk服务器通信的。IAX是一个传输协议(非常像SIP),它使用一个单独的UDP端口(4569)来传输通道信号和实时传输协议(RTP)流。IAX还具备将多个会话在一个数据流中进行中继的能力,这在向远端的设备发送大量通道信号的时候具有极大的带宽优势。
MGCP:多媒体网关控制协议(MGCP)来自于IETF。在RFC3435中被定义,它被设计成使终端设备尽可能的简单,所有呼叫的逻辑和处理都有多媒体网关和呼叫代理处理。与SIP不同,MGCP采用集中模式。MGCP电话不能直接拨打其他MGCP电话,只能通过某种形式的控制器进行。
Skinny/SCCP:Skinny Client Control Protocol(SCCP)专用于思科VoIP设备。它是思科Call Manager PBX中终端的默认协议。
UNISTIM:作为Nortel专有的VoIP协议。
虽然Asterisk对以上介绍的每个协议都可以支持,但在一个特定的环境下对VoIP协议的选择,仍然是一个比较麻烦的过程,在局域网内部使用,通常建议使用SIP协议,如果涉及到某些终端需要使用NAT访问网守的话,经常会出现网络电话没有声音的现象,这是由SIP协议本身的限制决定的,虽然有解决办法,但总归有些不方便,如果存在网络电话需要使用NAT访问网守的情况,建议使用IAX或H.323协议。也可以根据实际情况,混合使用上述协议,Asterisk对此也提供了良好的支持,通常建议大部分用户使用SIP协议,需要使用NAT的用户使用IAX协议,可以实现良好的互通。
编码和解码通常理解为多种用来数字化(或压缩)模拟音频信息的数学模型。不同编码规则的目的是在效率和质量中取得平衡。G.711、G.726、G.723.1、G729A、GSM、iLBC、Speex等编码均可以采用,在目前的宽带接入(大于64kbps)环境下,选择哪种编码对音质基本没有影响。
虽然绝大多数网络电话机都被Astersik支持,但为了减少一些不必要的问题,建议采用支持SIP或IAX协议的网络电话机,最好有两个网络接口的,能方便接入设备;如果是在计算机上使用的话,也有众多的VoIP软件可以选择,通常建议使用Zoiper(支持SIP和IAX)和X-Lite(仅支持SIP),这两款软件都可以在Windows, Mac OS 和 Linux上运行;网关加传统电话的模式中网关尽量选用支持SIP或IAX协议的,可减少很多不可预测的问题。
5 成本分析
经过上面的分析,我们会发现,在已有局域网的环境下,我们使用VoIP电话仅仅是一些软件的事情,如果真的像原来内部电话一样使用,满足部分对计算机系统不熟悉的人的需求,购买一些数字电话机就可以满足传统习惯的使用方式了,而且提供了超越传统电话很多的功能。目前市场中支持SIP协议的网络电话机的价格基本在300元左右,可以很方便的购买到。
我们分析一下常用的Cisco公司的VoIP系统的组成:网守软件Cisco Callmanager,网络电话机Cisco 7960/40/10等,Cisco AS5300网关等组成,使用的Cisco公司自己的私有VoIP协议Skinny/SCCP,在全Cisco环境下,使用是比较方便的。在一些对VoIP用户需求数量不大的情况下,Cisco公司在其部分路由器中集成了VoIP功能,通过安装对应的语音模块,实现简单的VoIP功能。
我们以具有200部传统电话的部分为例,分析一下使用传统电话和VoIP电话的成本的差异。
传统电话的使用费用,按一个月每部电话的月租加使用费200元计算,200部电话的月使用费大约在四万元左右。按统计学一般规则,内部的交流应该占到80%,也就是说内部交流的月使用费在三万两千元左右。
使用VoIP电话的成本,内部通话的成本基本为零。
设备成本,在Cisco公司提供的VoIP方案中,使用了其自己的私有协议(通过更新Fireware也可以支持其他协议),和其他厂商的互通中存在一些问题,我们仅以其网络电话机7960/40为例,其价格大约在3000元左右,且其使用了自己的POE供电标准,基本被市场淘汰。目前市场中常见的网络电话机绝大多数支持常见的多种VoIP协议,价格在300元左右。
6 结论
随着通信行业开源项目的发展,企业可以用较低的投入在IP网络上提供VoIP增值服务,例如电话会议、语音信箱、交互式语音应答、呼叫队列、振铃组等超越传统电信服务的内容。从而提高企业的综合业务能力,VoIP以极低的使用成本,迅速得到了普及,对于传统的电信运营商,也在试图通过一些办法(如集团内部通话不计费等)延长传统电话的使用。另外VoIP电话自身的一些硬伤(如在断电的情况下不能提供服务等)也影响了普及的速度,所以目前VoIP电话仍然不能完全取代传统的电话。但是,随着通信技术的发展,随着NGN网络的推进,随着无线网络的推进,三网合一,全IP网络的时代终要到来,语音免费的时代也终将到来。
参考文献:
[1] Jim Van Meggelen.
关键词:网络电话;网络私有交换机;Asterisk;下一代网络
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2862-03
A Low-cost VoIP Solution Based on Open Source Software
HU Yao-dong, LI Wan-gao
(Network Management Center, Henan Institute of Engineering,Zhengzhou 451191,China)
Abstract: First,This paper analyzes the constitution of VoIP system, introduce some open source code items of network Gatekeeper,is also the cores of the system of VoIP- soft commutation part, then to take Asterisk as an example,introduce it installs and sets, analyzing the VoIP agreement,coding and the terminal choose some principles for uses,Last is to take a small cost analysis as an example,analyzing the characteristics of the system of VoIP,and very low usage cost in business enterprise apply.
Key words:VoIP;IPPBX;asterisk;NGN
1 引言
通信行业的开源项目不断涌现打破了传统电信设备制造商对电信技术的垄断,也为下一代网络(NGN)的发展注入了无限的活力。VoIP(Voice over IP)技术,整合数据和语音两个系统,可以发挥网络的潜力,极大节约在语音方面的花费,一些跨国、跨地区的公司早已经应用,遍布各地的话吧绝大部分是VoIP应用,如何在已有IP网络的基础上低成本地实现VoIP应用?是本文探讨的基本目的。
2 VoIP系统的组成
VoIP的基本原理是:通过语音的压缩算法对语音数据编码进行压缩处理,然后把这些语音数据按TCP/IP标准进行打包,经过IP网络把数据包送至接收地,再把这些语音数据包串起来,经过解压缩处理后,恢复成原来的语音信号,从而达到由IP网络传达语音的目的。从基本原理上我们可以看出,VoIP系统是建立在IP网络的基础之上的,IP网络可以是各种类型的,有线的、无线的,V4的或者V6的,VoIP的基本组成由VoIP终端和网守(Gatekeeper)两大部分。
VoIP终端,VoIP终端指的是将模拟的语音信号转换为数字信号并进行压缩,可以是下列形式之一,单独的网络电话机;计算机系统和一个应用软件;传统电话机和语音网关(Gateway)。
网守(Gatekeeper):网守指的是指引终端来的IP数据包到接收地,并完成相应的认证计费等工作,类似于传统电话网络中的程控交换机。
如果需要VoIP终端和传统的电话系统互通,还需要网守和传统的电话程控交换机互通,这种情况通常叫落地或落地网关,从严格意义上来说,这已经不属于VoIP系统的范畴了。
3 网守的选用和配置
网守,又叫软交换(Soft Switch ),完成此功能的设备通常情况下称作IPPBX(IP Private Branch eXchange,网络私有交换机),其实质就是一台运行网守软件的联网计算机。除了私有的PBX应用方案,开放源代码的PBX应用方案也是数量众多,常见的有以下几种:
Asterisk:Linux系统下开源的IPPBX,功能强大稳定,主要用c语言开发。http://www.asterisk.org/
Vocal:Linux系统下开源的SIP服务器端。可以作为IPPBX,也可以作为运营系统。很多VoIP虚拟运营商都用这个作为自己的运营系统。http://www.vovida.org/
YATE:跨平台(Linux,Windows)的开源SIP服务器端。http://yate.null.ro/pmwiki/
SER:Linux平台下重量级的SIP服务器断。功能比较丰富,也是很多VoIP虚拟运营商的系统选择。http://www.iptel.org/ser/
SIPX:Linux平台下的SIP服务器。http://www.sipfoundry.org
下面以Asterisk为例,介绍PBX系统的安装和配置,Digium公司发起的Asterisk是首批开源VoIP项目之一,也是最早的VoIP PBX之一。Asterisk是一个完整的PBX软件,它运行在Linux,BSD,Window(仿真)和OS X操作系统上,提供了超越你想象的PBX特性,Asterisk支持几乎所有的VOIP方面的协议和标准电话设备。Asterisk是一个非常成熟的平台,采用GPL许可证,它支持大企业都希望的VoIP解决方案提供的各种功能,包括语音邮件、呼叫转移、会议功能,甚至交互语音应答(IVR)等。它还有呼叫详细记录,以及适合用于虚拟教室或者虚拟会议室等场合的高级特性。
Asterisk可以运行在很多平台上,多数情况下建议在Linux系统下运行,比如Fedora或CentOS上,Asterisk主要使用三个包:Asterisk主程序(Asterisk),Zapata电话驱动(zaptel),和PRI库libpri。如果搭建一个纯VoIP网络,那么只需要Asterisk包;如果使用ztdummy驱动(电话会议使用)作为时间接口,或者使用ISDN PRI接口,则建议三个包都安装。另一个建议安装的包就是asterisk-sounds,当Asterisk接收到分别来自各地的呼叫时,asterisk-sounds包给出一个适当的声音提示。所有这些包都可以通过http://www.asterisk.org/downloads网站下载。
为编译上面所下载的包,需要安装GCC编译器(3.X版本或者更高)以及附属包。在目前发行的Linux版本上,已经很好的支持了。通常建议先安装zaptel包,再安装libpri包,最后安装Asterisk包和asterisk-sounds包。一般情況下需要解压缩,编译,安装等过程。如果熟悉Linux系统,通常情况下这个过程是比较简单的。如果需要有针对性的编译或更高的执行效率,开放源代码的程序给我们提供了众多的选项,可以按需定制。
安装完成后,根据需要加载相应的模块,最后可以加载Asterisk,加载Asterisk有很多方法,最简单的方法就是通过Linux命令行接口直接运行二进制可执行文件。如果在系统启动的时候使用init.d脚本,同样可以很容易启动和重新启动Asterisk,然而,最好的方法是通过safe_asterisk脚本。
Asterisk系统的配置,主要由一些配置文件决定,这些配置文件大部分在/etc/asterisk这个目录下,但zaptel.conf文件在/etc目录里。几个主要的配置文件是zaptel.conf、zapata.conf、extensions.conf、sip.conf、iax.conf等,通过修改这些配置文件,可以方便地定制我们需要的功能。
如果对Linux不太熟悉的话,我们可以使用别人封装好的安装包,AsteriskNOW(http://www.asterisknow.org/) TrixBox(http://www.trixbox.org/)和Elastix(http://www.elastix.org/)就是很好的例子,這几个都是基于CentOS操作系统和Asterisk软件封装的安装包,在其网站下载光盘镜像文件,刻录光盘,经过几个简单的提示操作,就可完成软件的安装。而且提供了方便的web管理界面,配置、管理变得比较简单了。
如果需要和传统的电话网互通的话,Asterisk也提供了很好的支持,除了直接找落地运营商外,也可以通过和Asterisk兼容的模拟或数字卡,可以在一定程度上满足网络电话和传统电话的互通。
4 协议、编码和VoIP终端的选用
目前流行的VoIP协议有以下几种:
H.323:这个国际电联(ITU)的协议最初设计是用来为视频会议提供IP传输机制。它成为了基于IP传输的视频会议设备的标准,作为一个VoIP协议,它非常出名。
SIP:会话初始化协议(SIP)暴风骤雨般地占据了VoIP世界,做为在网络终端的VoIP协议的特别选择,最初仅认为是一个有趣的想法的SIP现在看起来已经取代了H.323的主体地位。SIP的前提是连接的每个终端是一个对等的实体(Peer),然后他们间进行协议协商。SIP引人注目的是它是一个相对简单的协议,与它语法类似的协议有HTTP、SMTP等。
IAX:IAX(Inter Astersik eXchange)协议是Digium公司开发用来与其他Asterisk服务器通信的。IAX是一个传输协议(非常像SIP),它使用一个单独的UDP端口(4569)来传输通道信号和实时传输协议(RTP)流。IAX还具备将多个会话在一个数据流中进行中继的能力,这在向远端的设备发送大量通道信号的时候具有极大的带宽优势。
MGCP:多媒体网关控制协议(MGCP)来自于IETF。在RFC3435中被定义,它被设计成使终端设备尽可能的简单,所有呼叫的逻辑和处理都有多媒体网关和呼叫代理处理。与SIP不同,MGCP采用集中模式。MGCP电话不能直接拨打其他MGCP电话,只能通过某种形式的控制器进行。
Skinny/SCCP:Skinny Client Control Protocol(SCCP)专用于思科VoIP设备。它是思科Call Manager PBX中终端的默认协议。
UNISTIM:作为Nortel专有的VoIP协议。
虽然Asterisk对以上介绍的每个协议都可以支持,但在一个特定的环境下对VoIP协议的选择,仍然是一个比较麻烦的过程,在局域网内部使用,通常建议使用SIP协议,如果涉及到某些终端需要使用NAT访问网守的话,经常会出现网络电话没有声音的现象,这是由SIP协议本身的限制决定的,虽然有解决办法,但总归有些不方便,如果存在网络电话需要使用NAT访问网守的情况,建议使用IAX或H.323协议。也可以根据实际情况,混合使用上述协议,Asterisk对此也提供了良好的支持,通常建议大部分用户使用SIP协议,需要使用NAT的用户使用IAX协议,可以实现良好的互通。
编码和解码通常理解为多种用来数字化(或压缩)模拟音频信息的数学模型。不同编码规则的目的是在效率和质量中取得平衡。G.711、G.726、G.723.1、G729A、GSM、iLBC、Speex等编码均可以采用,在目前的宽带接入(大于64kbps)环境下,选择哪种编码对音质基本没有影响。
虽然绝大多数网络电话机都被Astersik支持,但为了减少一些不必要的问题,建议采用支持SIP或IAX协议的网络电话机,最好有两个网络接口的,能方便接入设备;如果是在计算机上使用的话,也有众多的VoIP软件可以选择,通常建议使用Zoiper(支持SIP和IAX)和X-Lite(仅支持SIP),这两款软件都可以在Windows, Mac OS 和 Linux上运行;网关加传统电话的模式中网关尽量选用支持SIP或IAX协议的,可减少很多不可预测的问题。
5 成本分析
经过上面的分析,我们会发现,在已有局域网的环境下,我们使用VoIP电话仅仅是一些软件的事情,如果真的像原来内部电话一样使用,满足部分对计算机系统不熟悉的人的需求,购买一些数字电话机就可以满足传统习惯的使用方式了,而且提供了超越传统电话很多的功能。目前市场中支持SIP协议的网络电话机的价格基本在300元左右,可以很方便的购买到。
我们分析一下常用的Cisco公司的VoIP系统的组成:网守软件Cisco Callmanager,网络电话机Cisco 7960/40/10等,Cisco AS5300网关等组成,使用的Cisco公司自己的私有VoIP协议Skinny/SCCP,在全Cisco环境下,使用是比较方便的。在一些对VoIP用户需求数量不大的情况下,Cisco公司在其部分路由器中集成了VoIP功能,通过安装对应的语音模块,实现简单的VoIP功能。
我们以具有200部传统电话的部分为例,分析一下使用传统电话和VoIP电话的成本的差异。
传统电话的使用费用,按一个月每部电话的月租加使用费200元计算,200部电话的月使用费大约在四万元左右。按统计学一般规则,内部的交流应该占到80%,也就是说内部交流的月使用费在三万两千元左右。
使用VoIP电话的成本,内部通话的成本基本为零。
设备成本,在Cisco公司提供的VoIP方案中,使用了其自己的私有协议(通过更新Fireware也可以支持其他协议),和其他厂商的互通中存在一些问题,我们仅以其网络电话机7960/40为例,其价格大约在3000元左右,且其使用了自己的POE供电标准,基本被市场淘汰。目前市场中常见的网络电话机绝大多数支持常见的多种VoIP协议,价格在300元左右。
6 结论
随着通信行业开源项目的发展,企业可以用较低的投入在IP网络上提供VoIP增值服务,例如电话会议、语音信箱、交互式语音应答、呼叫队列、振铃组等超越传统电信服务的内容。从而提高企业的综合业务能力,VoIP以极低的使用成本,迅速得到了普及,对于传统的电信运营商,也在试图通过一些办法(如集团内部通话不计费等)延长传统电话的使用。另外VoIP电话自身的一些硬伤(如在断电的情况下不能提供服务等)也影响了普及的速度,所以目前VoIP电话仍然不能完全取代传统的电话。但是,随着通信技术的发展,随着NGN网络的推进,随着无线网络的推进,三网合一,全IP网络的时代终要到来,语音免费的时代也终将到来。
参考文献:
[1] Jim Van Meggelen.