电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

VoIP终端范文

来源:开心麻花作者:开心麻花2025-09-191

VoIP终端范文(精选4篇)

VoIP终端 第1篇

关键词:VoIP,BF531,会话初始化协议,Qt/E

引言

VoIP即Voice Over IP, 通过对语音进行数字化编码压缩成帧并封装成IP包在Internet上传输, 数据到达目的地后进行解压、数模转换还原语音, 是一种利用Internet技术进行语音通信的新业务。由于VoIP技术促进了网络资源利用, 降低语音业务成本, 因此在全球范围内得到了迅速的发展, 可以说是当前世界上发展最快, 普及最广的应用服务技术之一。鉴于VoIP在网络和通信领域所占的重要地位以及表现出来的广阔前景, 本文提出一种在技术上可行的设计方案, 即在高性能低功耗的BF531处理器平台上实现VoIP终端。

1 VoIP原理及关键技术

1.1 VoIP原理

VoIP原理:运用语音压缩算法对语音数据进行压缩编码, 然后把语音数据按有关协议进行打包, 经由IP网络把数据包发送到接收地, 接着再把语音数据包串起来, 经过解码解压缩处理后, 就可以恢复成原来的语音信号了, 从而实现互联网传送语音的目的。

1.2 VoIP关键技术

VoIP完全建立在IP网络基础上, 关键技术包含信令、编码、实时传输等。

1.2.1 信令

保障电话呼叫的实现和话音质量好坏的前提就是信令, VoIP主要信令包括ITU-T的H.323和会话初始化协议SIP。

1.2.2 语音编码

由于现代信息技术的不断发展, 尤其是互联网和无线通信的蓬勃发展, 作为多媒体通信中信息传输重要环节的语音, 也越来越受到重视, 对语音编码要求也就越来越高, 在要求低延时、低码率的同时还要保证语音的高质量。语音压缩编码的目标就是要在尽可能低的比特率下, 最大化的提取语音信号的特征信息, 并且在接收端还原出清晰自然的声音。

1.2.3 实时传输

VoIP电话是一种语音通信, 需要对音频数据进行实时传输。其中主要涉及到RTP协议和RTCP协议。

(1) RTP协议

RTP是一种应用型的传输层协议, 为应用提供端到端的实时网络传输。RTP需要与底层网络协议相配合才可以实现传输数据的任务。由于语音传输对实时性要求较高, 所以一般采用UDP来完成数据传输。

(2) RTCP协议

RTCP是配合RTP的一种实时传输控制协议。它自己没有QoS保证功能, 但是能通过阶段性的向会话参与者传送控制分组数据, 并以此来提供网络状况的有关参数。

1.3 SIP协议

1.3.1 SIP简介

S I P是2 0 0 1年推出的I E T F标准 (RFC3261) , 用于在IP网络上建立、改变和终结多媒体会话, 是基于应用层的控制协议。同时SIP可以邀请第三方加入会话, 也支持重定向服务和名字映射。

1.3.2 SIP呼叫流程

SIP是通过用户代理之间的交互消息来建立呼叫的, 它继承了Internet中客户机/服务器的模式, 即主叫代理充当UAC, 被叫代理充当UAS。SIP大致有三种呼叫模式:a.UAC向UAS直接呼叫, b.UAC在重定向服务器的配合下进行重定向的呼叫, c.代理服务器代表UAC向被叫方发起呼叫。下面我们以直接呼叫为例 (如图1) 说明呼叫过程的建立。

由图1可知, 一个有效的SIP邀请包含两个请求, 即INVITE和ACK。INVITE是邀请被叫加入会话, 其内容包含SDP会话描述。如果被叫同意加入会话, 就会发送200OK响应, 同时会在200 OK响应的SDP会话描述中列出被叫方支持的一系列参数。接下来主叫会再次发送ACK请求来确认它已收到被叫方对INVITE的响应 (200OK) 。当任一方想结束会话时, 会直接发送一个BYE请求给对方, 然后对方会回送一个200 OK响应, 这样双方会话就结束了。

2 VoIP终端设计实现

2.1 VoIP终端组成框图

2.2 硬件设计

硬件采用模块化设计, 包括IP电话处理器、电源管理模块、语音处理模块、网络接口模块、存储器、键盘和LCD 7部分。其中IP电话处理芯片采用BF531, 语音芯片采用UDA1341。

2.3 软件设计

终端软件分驱动层、中间层和应用层三层设计, 其中应用层软件采用Qt/E开发, 移植开源软件linphone的库文件, 采用多线程设计思想, 将整个应用程序划分为四部分, 分别由四个线程来实现。

UI线程主要用来响应用户的键盘输入和屏幕的显示及传递消息到协议栈。通过在main.cpp程序中创建QApplication类型的对象实现。QApplication类负责图形界面应用程序的控制流以及主要设置管理, 包括主事件的循环、应用程序的初始化和结束及对话管理。

Codec语音线程主要完成语音处理, 包括本地语音采集与编码工作, 网络语音数据解码、混音及播放等。

SIP信令交互线程调用linphone所依赖的eXoSIP和oSIP库, 使用UDP实现底层SIP接收/发送, 并且封装了SIP消息解析器。利用系统初始化时创建的eXosip_execute线程不断查询是否有数据需要处理。当它发现状态机中有需要处理的数据时, 它会调用在系统初始化时eXosip_set_callbacks注册的事件处理函数。利用函数eXosip_listen_addr监听端口, 等待连接。如果有数据, 立即接收并解析数据, 放到事件队列中。

RTP/RTCP收发线程调用linphone所依赖的oRTP库, 用Socket套接字实现RTP/RTCP数据包收发工作。RTP负责传送语音数据, RTCP对数据分发质量等信息进行反馈。其中初始化函数:rtp_session_init, 它执行rtp会话的一些必要的初始话工作。发送函数:rtp_session_send_with_ts, 发送rtp数据包, session是rtp会话结构体, 返回值是成功发送到网络中字节数。接收函数:rtp_session_recv_with_ts, 接收rtp数据包。

3 VoIP终端功能验证

首先向SIP服务器注册主叫方和被叫方的SIP地址, 分别为100200@192.168.1.231和100300@192.168.1.23, 然后进行了通话测试, 并进行了语音时延测量。通过测试发现VoIP终端能够实现语音通话, 语音清晰流畅, 没有出现明显的时延和回音, 达到预期效果, 已在实际中应用。

4 结论

本文在深入分析VoIP原理和SIP机制的基础上, 提出基于BF531处理器的设计方案, 利用Qt/E开发出一款支持通话、短信、通讯录等多种功能的终端。通过测试结果分析, 设计的终端达到了预期的目标, 验证了本文提出的设计方案的可行性。

参考文献

[1]徐炽, 张闻芳.基于SIP协议的VOIP系统设计与实现[J].科学技术与工程, 2008.8 (10)

[2]倪继利.Qt及Linux操作系统窗口设计[M].电子工业出版社, 2006.P212~248

[3]陈峰.Blackfin系列DSP原理与系统设计[M].电子工业出版社, 2010.P295~302

[4]陶慧明.基于SIP的嵌入式VoIP终端的设计与实现[学位论文].华中科技大学, 2008

VoIP终端 第2篇

SIP是一个应用层控制信令协议,它用来创建、修改以结束若干个参与者参与的多媒体会话。这些会话可以是Internet多媒体会议、Internet电话、多媒体分发等,即由Internet上两方或多方参与的交互式多媒体通信活动。

近年来,SIP议的发展势头越来越强劲,也获得了越来越多的支持。Microsoft已公开宣布将在Windows系统中支持SIP信令协议,这意味着大多数个人计算机从此将成为SIP协议广阔的用武之地。鉴于SIP在网络和通信领域所占的重要地位以及目前表现出来的广阔前景,为捕捉SIP发展的动态,致力于SIP研究是很有意义的。

本文对Vo IP信令技术中的SIP协议展开了深入研究,并在此基础上设计开发出了一个基于SIP协议的电话终端软件。

随着IP分组网语音传输业务的不断发展,特别是IP电话在全球的广泛应用,市场急需大量的、功能更加强大的IP电话产品,对于该领域相关产品的研究与开发具有相当的现实意义。

1. SIP协议

1.1 SIP协议结构框架

SIP是一个分层结构的协议,这意味着它的行为根据一组平等独立的处理阶段来描述,每一阶段之间只是松耦合。协议分层描述是为了表达,从而允许功能的描述可在一个部分跨越几个元素。

SIP按服务分层的方式定义,它本身运行在TCP协议模型的应用层,从下到上依次是语法及编码层、SIP传输层、事务层和事务用户层,如图1所示。

(1)语法与编码

SIP的最底层是语法和编码。它的编码使用增强Backus-N ayr形式语法来规定。互联网技术规范经常需要定义一种格式化语法,并能够自由地使用作者认为是有用的任何符号。

(2)SIP传输层

SIP传输层定义了网络上一个客户机如何发送请求和接收响应以及一个服务器如何接收请求和发送响应,所有的SIP元素包含传输层。传输层支持的传输协议可能有TCP、SCTP、TLS、UDP,其中TCP是必须的,因为大消息的缘故。具体使用的协议受传输层用户的指定、消息体的大小及下一跳服务器是否支持等因素的影响。

(3)事务层

事务是SIP的重要概念。一个事务是由客户机事务发送给服务器事务的请求,以及对该请求的从服务器事务发送回客户机的所有响应组成。事务层处理应用层重传、匹配响应到请求、匹配请求到响应以及应用层超时。

用户代理、有状态的代理服务器、重定向服务器、注册服务器均包含事务层,无状态的代理不包含事务层。

事务层具有客户机组成部分(称为客户机事务)和服务器组成部分(称为服务器事务),每个代表有限的状态机,它被构造来处理特定的请求。事务根据请求消息是否是INVITE请求而分为Invite Transaction和none-Invite Transaction。

(4)事务用户层

每个SIP实体,除了无状态代理,都是事务用户。当一个TU(Transaction User)希望发送请求,它生成一个客户机事务实例并且向它传递请求和IP地址、端口和用来发送请求的传输机制。一个TU生成客户机事务也能够删除它。当客户机取消一个事务时,它请求服务器停止进一步的处理,将状态恢复到事务初始化之前,并且生成特定的错误响应到该事务。

1.2 SIP认证鉴权机制

SIP执行过程中的安全性是一个至关重要的问题,也是至今尚未完全解决的一个问题,包括保证信息的机密性和完整性,防止重放攻击和信息欺骗,提供会话中对参与者的鉴别,防止Do S攻击、应用的安全性等,比较典型的实际安全隐患包括注册攻击、假冒服务器、窜改消息体、拆卸会话、拒绝服务等。

SIP的安全框架还在发展中。目前的措施主要包括以下几个方面:

(1)传输和网络层安全

两种流行的方案是TLS和IPSec。另外,证书也可以用来提供鉴别。

(2)SIPSURI方案

该方案是通过对用户地址的信息结构加以改进以达到安全的目的。

(3)HTTP认证

目前广泛采用的SIP认证机制是基于HTTP认证的。HTTP认证提供了两种不同安全级别的认证机制:Basic认证和Digest认证(DAA)。两者都是采用挑战应答(Challenge/R esponse)方式,即由服务器发出认证挑战(challenge),然后客户端做出应答(R esponse),并在应答中包含了客户的凭证。

HTTP Basic认证是一种比较简单的认证方式,但它存在严重的安全问题,除非它和其它安全机制(如加密等)一起使用。Basic认证的不安全性源于其用户名和密码在网络中以近似于明文的方式传输。

2. Vo IP软终端的设计与实现

2.1 系统设计

2.1.1 需求分析(1)协议支持

1)符合R FC3261规范的SIP信令协议:可与符合该规范的任何Vo IP设备进行会话。

2)TCP/IP协议支持。

3)用R TP/R TCP协议进行语音数据的实时传输与控制。(2)功能

1)SIP终端之间可通过IP地址直接实现语音呼叫与通话。

2)可注册到SIP代理服务器及重定向服务器,并通过服务器完成呼叫。

3)语音编解码算法可选,能适应低带宽工作环境。

4)类似传统电话的响铃音、回铃音提示。

5)实现语音通话功能,主观感觉接近普通PSIN电话。

6)CPU运算能力强,接口丰富。

7)软件操作系统功能强大,扩展性好。

2.1.2系统功能组成与结构设计

系统按功能可分四个组成模块:用户接口模块、语音处理模块、系统控制模块和网络接口模块。

用户接口模块的功能是为使用者提供操作接口以及信息反馈。目前采用串口来调试及输入输出,未来计划采用键盘和LCD。

语音处理模块的功能是对模拟语音进行滤波、放大、A/D转换、PCM量化并送入控制模块,同时对来自控制模块的数字信号进行D了A转换、滤波、放大最后还原为模拟语音。

系统控制模块式整个系统的核心,完成对整个系统的控制、管理.包括软件和数据的存储、TCP/IP、SIP等协议栈的实现,UA功能的实现,对语音数据流的控制与编解码以及用户接口的响应等。

网络接口模块的功能是实现RJ45的以太网接口,为数据传输提供符合规范的通道。

总体结构如图2所示。

2.2 音频驱动程序的开发

整个音频驱动的实现分为初始化、打开设备、单声道/立体声转换、读写操作、设备查询/控制、释放设备和注销设备等部分。

2.2.1 初始化、打开设备

设备初始化包括对对s3C2410X的ns接口的初始化、UDA1341芯片的初始化和分配DMA通道.并且在内核中注册设备。这部分的函数是s3c24lo_udal34l_init(void)和init_udal34l(void)。其中后者是被前者调用。对IIS接口的初始化是指根据s3c2410X的数据手册的要求将相应引脚配置为IIS接口模式,对UDA1341的初始化是通过L3接口对芯片进行配置,也是根据UDA1341手册的要求写入相应指令,配置采样频率为384fs,设置为全双工,并打开内部增益和自动增益控制模式。最后为读、写操作分别分配一个DMA通道,并分配DMA缓冲区。

2.2.2 打开设备

打开设备时主要是初始化s3C2410X的IIS相关寄存器并使能IIS接口,并清除声音数据缓冲区。这部分的函数是smdk2410_audio_O pen(struct inode*inode,struct file*file)和init_s3c2410_iis_bus(void),其中后者是被前者调用。对IIS寄存器的设置包括设置默认采样速率、设置为DMA模式、主从模式设定、速率设定等,最后使能接口。

2.2.3 单声道/立体声转换

由于UDA1341芯片本身不支持单声道模式。而在实际应用中,很多IP电话软件都使用的是单声道模式,因此要能和这些软件互通,就必须支持单声道。我的做法是通过软件来实现。简单的说就是在放音时,如果是单声道的声音数据,则创建一个双声道数据格式的字符变量,然后将两个声道的数据都复制为单声道数据。而在录音时,如果需要保存为单声道数据,则创建一个单声道数据格式的字符变量,去掉双声道声音数据其中一个声道的数据,然后再复制给单声道数据的变量。

2.2.4 读写设备

读写操作也就是实现音频数据的传输即播放和录音的数据传输。

2.2.5 释放设备

释放设备是在应用程序调用声卡结束后清除调用标记和清除缓冲区。由注销函数smdk2410_audio_release(struct inode*inode,struct file*file)来完成。

2.2.6 注销设备

注销设备是从系统中注销自身,注销后系统即无法再调用该设备。

参考文献

[1]精英工作室编著.IP电话完全手册.北京:中国电力出版社,2002.

[2]侯建军,柳立鹏,邵文龙,基于TMs32oC5402的新型IP电话的设计.北方交通大学学报,2001,3(25):107-110.

[3]曹志刚,钱亚生.现代通信原理.北京:清华大学出版社,1992.

VoIP终端 第3篇

传统的工厂生产线调度系统通信都是通过有线电话实现的。这种有线连接方式存在着无法满足移动通信需求, 线缆设施易受损, 且布设和维护成本高等诸多问题。基于IEEE 802.11协议的无线局域网接入技术拥有广泛的应用基础, 具有传输速率快, 覆盖范围广等突出优势, 可以很好地解决这些问题。

为了能在基于IEEE 802.11协议的无线局域网上实现语音通信目的, 必须采用无线VoIP (Voice over IP) 技术。考虑到一般工厂的通信范围为1 km左右, 目前采用基于IEEE 802.11的技术, 在空旷地带的传输距离只有大约200 m, 因此考虑采用多跳的方式增加通信的覆盖范围。本文提出了一种基于IEEE 802.11协议的无线VoIP终端设计方案, 并通过在嵌入式终端上实现Ad Hoc路由协议AODV (Ad hoc On-demand Distance Vector, 按需距离矢量路由协议) , 使终端具有了多跳通话功能。

1 相关技术及协议

1.1 VoIP

VoIP是利用IP 网络实现语音通信的一种先进通信手段, 是基于IP 网络的语音传输技术[1]。其基本原理是利用电话网关服务器之类的设备将电话语音数字化, 将数据压缩后打包成数据包, 然后把这些语音数据按IP等相关协议进行打包并通过IP网络把数据包传输到目的地, 目的地收到这一串数据包后, 将数据重组、解压缩后再还原成原来的语音信号, 这样就达到了通过网络传送语音的目的。

采用VoIP技术进行语音传输的最大优势在于能够以报文的形式传递音频数据, 不占用固定信道, 并且采用了先进的数字信号处理技术, 以降低数据量, 可以将传统的64 Kb/s语音信号压缩成6~8 Kb/s, 从而有效地节省了带宽, 同时由于不需要单独建立通信网络, 大大降低了通信费用。

1.2 IEEE 802.11无线技术

IEEE 802.11是由IEEE定义的无线网络通信工业标准, 目前主流的IEEE 802.11协议主要有IEEE 802.11a, IEEE 802.11b和IEEE 802.11g。IEEE 802.11a工作于5 GHz频段, 使用正交频分复用 (OFDM) 调制技术作为传输方案, 支持6~54 Mb/s的传输速率, 802.11a的优势在于传输速率快 (最高达54 Mb/s) 且干扰少, 但价格相对较高。IEEE 802.11b工作于2.4 GHz频段, 使用补码键控 (CCK) 调制和直序列调频 (DSSS) 技术, 支持1~11 Mb/s的传输速率, 802.11b的优势在于价格低廉, 但速率较低 (最高为11 Mb/s) 。IEEE 802.11g构建在已有的IEEE 802.11b物理层与介质访问控制层标准基础上, 同样选择2.4 GHz作为工作频段, 由于采用了OFDM调制技术, 可实现最高54 Mb/s的传输数率。由于其仍然工作在2.4 GHz频段, 并且保留了IEEE 802.11b所采用的CCK技术, 可与IEEE 802.11b的产品保持兼容。

1.3 AODV路由协议

AODV是一种基于距离矢量的按需路由算法[2], 是专为移动Ad Hoc网络设计的路由协议, 它的处理过程简单, 路由开销以及存储开销都较小, 能对链路状态的变化做出快速反应, 并通过在控制报文中引入序列号, 确保在任何时候都不会形成路由环。由于AODV路由协议性能优越, 且实现复杂度低, 被IETF (Internet Engineering Task Force) 的MANET工作组认为是无线自组网最好的候选路由协议之一。因此, 本设计采用AODV作为路由协议的实现方案。

2 终端硬件设计

终端的硬件架构如图1所示, 采用英飞凌公司的高速率ADM5120嵌入式微处理器作为主要器件, 同时在终端集成了存储器模块、语音处理模块、FXS连接模块、IEEE 802.11b/g无线模块等共同构建终端的硬件平台。

(1) 处理器ADM5120

ADM5120[3]是一种基于MIPS构架的高度集成、高度灵活的SoC处理器, 内置了MIPS 32内核, 工作主频最高可达175 MHz, 内部集成了8 KB指令缓存和8 KB数据缓存, 对外提供8/16位的LOCAL BUS (支持标准的ROM/FLASH接口) 、32位的SDRAM接口, 1路UART接口。ADM5120内部还集成了1个Switch引擎、5路10/100 Mb/s的PHY芯片, 可对外提供5个10/100 Mb/s的以太网接口。ADM5120是终端通信控制和管理的核心, 主要用于完成操作系统的运行、资源的管理和分配、与各个模块的接口和通信等功能。

(2) 语音处理模块

采用了高性能的DSP (VINETIC-2CPE) , 具有很强大的数字信号处理能力。用于完成处理模拟电话信号, 语音压缩包, 并提供实时压缩包的缓冲, 自适应回声抵消, 静音检测, DTMF信号产生、译码等功能, 且不需要另外的存储单元。

(3) FXS连接模块

终端通过一个带有DC/DC转换功能的SLIC-DC芯片连接模拟电话线路。通信过程中, 模拟话音信号通过RJ-11电话接口经SLIC和CODEC电路转换后, 将产生的PCM流送到语音处理模块中进行处理。SLIC即用户线接口电路, 主要完成用户状态检测和语音信号输入输出。它能够检测电话为挂机状态还是摘机状态, 并产生高电压驱动振铃。CODEC (编解码电路) 由ADC与DAC电路构成。ADC将模拟电话中的模拟信号转换为可通过VoIP网络传输的数字信号。DAC将数字信号转换为模拟电平, 以驱动模拟电话。

(4) IEEE 802.11b/g无线模块

IEEE 802.11b/g无线模块实现空中无线接口, 完成无线局域网的接入功能。终端提供一个MiniPCI接口, 采用的是美国Atheros公司 AR2413芯片组的无线网卡WMIA-165G, 支持IEEE 802.11b/g标准, 可提供54 Mb/s高速无线连接。

3 终端软件设计

终端采用了主流的嵌入式Linux操作系统, Linux具有源码开放, 稳定性与安全性较高, 移植和扩展能力较好的特点。如图2所示, 采用模块化的设计思想对终端软件进行设计。

硬件驱动层:主要功能是实现对IEEE 802.11b/g无线模块、DSP芯片、以太网接口及串口等底层硬件设备的驱动控制。针对终端的无线网卡类型, IEEE 802.11b/g无线模块中采用了madwifi (Multiband Atheros Driver for wifi) 驱动。madwifi是为Atheros系列芯片IEEE 802.11a/b/g无线网卡在Linux系统下实现的驱动程序。

Linux内核层:为语音数据的压缩处理和语音包的实时传输提供了保证。TCP/IP协议软件栈提供了对TCP/IP的支持, 考虑到语音数据的实时性要求, 终端的语音传输采用UDP方式实现。建立在UDP之上的RTP协议用于保障数据流的实时可靠传输。语音处理模块提供了对G.723等音频编解码软件的支持。在网络协议栈中包括了实现多跳通话功能的AODV路由协议。

应用程序层:包括电话应用程序接口TAPI (Telephony Application Program Interface) 3.0和Web服务器两部分。TAPI 3.0集成了传统电话的媒体流控制功能, 并封装了对底层电话硬件进行操作的功能, 通过将呼叫控制的功能抽象出来, 达到屏蔽不同的、不兼容的通信协议的目的。通过TAPI 3.0的编程接口可以方便地自定义信令协议, 完成点对点的拨号过程。同时为了便于使用, 在终端中植入了一个支持CGI的、非常适合于嵌入式系统的Boa Web Server, 使用户可以通过Web页面的用户接口输入参数来配置终端的参数。

3.1 无线模块驱动编译

所有的Atheros芯片无线网卡基本都可以使用madwifi驱动, 驱动程序源码madwifi-0.9.4.tar.gz可以从http://madwifi.org/上下载。在进行无线模块驱动开发时, 首先要配置并编译Linux内核, 使其支持MiniPCI网卡, 然后针对终端环境修改madwifi-0.9.4目录下的Makefile, 再使用make命令进行编译, 生成适用于MIPS的驱动程序模块, 并使用insmod命令将模块在终端的Linux中进行加载。加载成功后, 用Linux下的无线局域网工具命令iwconfig对无线网卡进行配置, 注意配置时要将无线网卡的工作模式设定成为Ad Hoc模式。

./wlanconfig ath0 destroy

./wlanconfig ath0 create wlandev wifi0 wlanmode adhoc

3.2 AODV路由协议的实现

Linux操作系统的内核并不直接支持按需路由, 因此要实现AODV路由协议需要对操作系统进行相应的扩充和修改。

Linux操作系统的路由体系结构按功能可分为转发功能模块和路由功能模块[4,5], 可以在转发功能模块保持不变的情况下, 通过修改路由功能模块, 实现不同的路由协议。转发功能在Linux内核中实现, 根据需要发送的数据分组目的地址;查找路由表, 按照最长前缀匹配原则寻找与目的地址匹配的表项, 如果找到匹配项, 则将数据分组发送到相应的网络接口;否则就丢弃该分组[6]。路由功能模块作为后台进程在用户空间运行, 主要负责与其他网络节点进行信息交流, 采用适当的路由算法建立路由, 更新和维护内核路由表。

目前发布的针对AODV协议的实现方案中多数协议的实现都采用了Netfilter功能框架[7]。 Netfilter是Linux核心中的一个通用架构, 用于实现数据包过滤、状态保持、NAT以及安全等多种网络功能。Netfilter结构提供了一系列的“列表” (tables) , 每个列表由若干个“链” (chains) 组成, 而每条链中又可以有一条或数条规则 (rules) 进行规范, 规则的定义采用“如果数据包头符合这样的条件, 就这样处理该数据包”。当一个数据包到达一个链时, 系统就会从第一条规则开始查看是否符合该规则所定义的条件。如果满足, 系统将根据该条规则所定义的方法处理该数据包;否则, 继续检查下一条规则。如果该数据包不符合该链中任何一条规则的定义, 系统就会根据该链的缺省策略处理该报文。

Linux在内核2.4版本以上的系统中提供了五个hook注册点, 这些hook点处在数据分组流经协议栈的几个关键位置, 用户可以在这些位置注册自己定义的操作函数, 流经hook点的数据分组将执行函数的操作。如图3所示, Netfilter便由处于Linux协议栈中的五个hook函数组成[8]。

在AODV协议的实现过程中, Netfilter的配置是协议正常运行的前提, 需要在内核中注册hook函数, 但并不是所有的Linux系统都默认启用Netfilter, 因此需要在内核配置选项中进行配置并编译进内核。进入Linux内核源代码安装目录, 输入make menuconfig命令进入内核配置主菜单, 通过空格键选择:

Networking options --> [*] Network packet filtering (replaces ipchains)

IP:Netfilter Configuration --> <*> Userspace queueing via NETLINK

4 结 语

结合IEEE 802.11无线技术和VoIP技术的优势, 采用了高性能的微处理器ADM5120和功能稳定强大的嵌入式Linux操作系统作为软件平台, 构建了一个基于IEEE 802.11b/g技术的无线VoIP便携式终端。通过在终端的系统上加载AODV路由协议实现了多跳的功能。经过三台终端的联合测试, 多跳通话可以保证良好的语音效果。

参考文献

[1]张登银, 孙精科.VolP技术分析与系统设计[M].北京:人民邮电出版社, 2003.

[2]方旭明, 何蓉.短距离无线与移动通信网络[M].北京:人民邮电出版社, 2004.

[3]ADMtek Incorporation.ADM5120 Home Gate-way Control-ler[Z].ADMtek, 2003.

[4]Vikas Kawadia, Zhang Yongguang, Binita Gupta.SystemServices for Implementing Ad-hoc Routing Protocols[A].Proceedings of International Conference on Parallel Pro-cessing Workshops[C].2002.

[5]Daniel P.Bovet, Macro Cesati.Understanding the LinuxKernel[M].Second Edition.O′Reilly, 2004.

[6]Ian D Chakeres, Elizabeth M Belding-Royer.AODV RoutingProtocol Implementation Design[A].Proceedings of the In-ternational Workshop on Wireless Ad Hoc Networking[C].Tokyo, 2004:698-703.

[7]Lilieblad F, Mattsson O, Nyland P, et al.Mad-hoc AODVImplementation and Documentation[EB/OL].http://mad-hoc.flyinglinux.net.

VoIP终端 第4篇

随着通信技术和数字信号处理技术的发展,以及国家广播电影电视总局对数字电视的规划要求,数字机顶盒得到空前发展和普及[1]。

VoIP采用分组交换和数字化传输技术,与传统电话相比具有节省带宽、通话费用低、智能化等优点,因而得到了众多消费者的极大认可和喜爱。本文设计了一种基于会话初始化协议 (Session Initiate Protocol,SIP)信令控制协议的VoIP终端。该方案通过分析、改写、交叉编译比较成熟的OSIP,EXOSIP,ORTP等开源协议栈,并将其移植到以Linux为操作系统的SIC8008芯片上,从而设计出数字机顶盒VoIP终端。

1 开源协议栈

1.1 OSIP与EXOSIP

SIP是IETF标准体系中的一部分。它是应用层控制协议,是用来建立、修改和终止多媒体会话的。SIP分别从用户定位、用户状态查询、用户能力查询、会话建立、会话管理5个方面实现对多媒体通信的控制。作为一种信令控制协议,它需要和IETF的其他协议如RTP,SDP和RTSP等协同工作[2]。

OSIP是使用标准C编写的一个底层的SIP开源协议栈,符合SIP和SDP标准,具有结构简单、小巧,专注于SIP底层解析,使用效率高等特点。但是它只提供了一些解析SIP/SDP消息的API和处理事务的状态机,通过调用回调函数来响应事件的发生,但它仅适应于底层事件的响应与处理。OSIP主要包括3部分:1) 解析器模块,对SIP的请求和响应进行封装与解析处理, 主要包括对SIP,SDP,URI等消息结构的封装和解析;2) 状态机模块,记录注册过程、呼叫过程等事务的状态,并在特定的事务状态下执行相应的API,并触发其他模块的运行;3) 工具模块,主要提供SDP等处理的一些工具,终端利用这些工具能够快速准确地作出请求和响应[3]。

EXOSIP是在SIP协议的基础上,对OISP进一步的封装和改进而形成的SIP扩展协议集。它不但可以对transaction层协议进行封装和解析,而且还增加了对dialog,session和call等过程的封装和解析,减少了上层应用直接调用OSIP中API的难度,同时提高了程序的实用性。EXOSIP是采用定时查询的方式来响应事件的,并通过添加、捕获、读取transaction消息管道的方式,驱动transaction中的状态机工作,从而使VoIP终端彼此间建立起通信[4]。

1.2 ORTP

RTP(Real-time Transport Protocol)是用于Internet上提供端到端的包括音频在内的实时数据传送协议。在流媒体传输方面,离不开RTP协议的实现及应用。

ORTP是一个支持RTP以及RFC3550的协议栈,它也是使用纯C语言编写的,该协议可以方便地实现对实时媒体的传输和控制。而且ORTP协议栈能够及时地检测到RTP分组丢失的发生并确保收到的数据以正确的次序提交给用户,RTP分组还包含了一个时间戳,这个时间戳对应RTP分组从流媒体进行抽样的时间,ORTP通过利用这个时间戳来确保信息同步地传输给目的用户并计算出时延和抖动[5]。

由于本终端的设计是基于Linux下的C语言编程,为了快速在终端中实现RTP协议对流媒体的传输和控制,故选择了ORTP作为第三方库,在使用之前只需要对其进行编译、连接,生成静态连接库,为应用层调用即可。

2 VoIP终端的硬件设计

VoIP终端分为接收方和呼叫方,根据不同的应用场合,呼叫双方可以相互的转换角色,也就是说,任何一个VoIP终端既可以发起呼叫,也可以响应呼叫。本终端是以四联微电子的SIC8008数字机顶盒芯片为硬件平台,以Linux为操作系统而开发设计的VoIP终端。

SIC8008数字机顶盒芯片是一块高清交互式机顶盒芯片。该芯片最初是为高清数字电视节目和流媒体等视频文件处理而设计的,在主处理器和解码器的选取上要高于普通VoIP终端的要求。但是由于本芯片在设计时没有设计RJ-11话机接口,所以只能通过外接USB话机来实现,其硬件的基本构成框图如图1所示。

在图1中,USB话机完成电话按键的输入、声音的采集和播放。以太网完成不同VoIP终端的互通。而在SIC8008芯片中,CPU采用ARM1176JZ-S为处理器,主要实现USB话机驱动、音频的软编解码和其他软件操作;Flash采用的最大可以支持128 Mbyte的NOR Flash,主要用来存储系统控制程序、语音数据处理程序等固化的程序;16 kbyte的E2PROM,主要用于设置和存储系统参数;USB控制器集成OHCI Host控制器,支持480 Mbit/s高速数据传输模式(比USB 1.1的全速模式速率快40倍)、全速模式和低速模式,屏蔽了USB 2.0 Host控制器自身协议的复杂性,主要实现和控制数据在话机与缓存器之间的传输。

以太网MAC控制器包括了一个即插即用的全双工以太网接口,数据按照以太网协议,通过MAC端口传输。主要帮助CPU完成TCP/IP数据包的接收和发送。

3 VoIP终端的软件设计

本文所要设计的VoIP终端的体系结构如图2 所示。从图2中可以看出软件的设计应该包括USB话机的驱动程序的编写,开源协议栈的改写和移植,语音的编解码以及应用层程序的编写。

USB话机的驱动部分:采用的USB话机自带有Linux下的驱动程序,直接将其安装到SIC8008芯片中即插即用。

OSIP和EXOSIP部分:支持RFC3261,RFC3311和RFC2327。在发送端,EXOSIP通过调用底层OSIP提供的API函数对OSIP_MESSAGE结构体进行初始化和赋值操作,实现SIP消息的构造。同样在接收端,EXOSIP也是利用OSIP提供的API函数对OSIP_MESSAGE结构体进行相应的解析,从中获取需要的信息。最终,完成网络的SIP信令呼叫,建立起连接。

编解码部分:通过USB话机采样出来的PCM编码数据虽然能提供较好的长途通信语音质量,但其速率过高,占用了很大的网络带宽,有效性极差。因此,一般都需要对语音数据进一步压缩,以降低语音编码的速率。相应的,在接收端也就需要同样的解压算法来恢复原始语音数据。该终端采用目前比较成熟的ITU-TG.711编解码方式[6]。

ORTP部分:支持RFC1889和RFC3551,主要完成音频媒体数据的打包、传输、消除乱序、抖动缓冲、解包处理等一系列任务。

应用层部分:根据用户配置来初始化和调用各个模块,为OSIP协议栈注册回调函数,并启动数据包监听线程,定时查询来自EXOSIP的事件。初始化成功后,主循环等待事件,如有事件发生就会调用相应的处理函数进行处理。

综上,各部分软件的工作流程如图3所示。

4 测试与结果

首先,在Linux环境下完成代码的交叉编译,即把OSIP、EXOSIP、ORTP、编解码部分的代码在Linux中进行编译、连接,生成静态连接库,应用层调用这些库生成可执行文件。然后,将这些可执行文件以及所需要的驱动程序下载到SIC8008芯片上。最后,USB话机上电,开启USB话机驱动,在局域网中进行测试,并在shell界面中提取了显示结果。

1) <sip:yangrui@192.168.8.42>发起呼叫的界面截图见图4。

7) <sip:yangrui@192.168.8.42>回应终止的界面截图见图10。

以上测试结果表明:该终端可以安全稳定地发起呼叫、响应呼叫、建立连接、终止会话,基本上实现VoIP电话的功能。同时,通过移植OSIP,EXOSIP和ORTP等成熟的开源协议栈到SIC8008芯片中,不但可以减少人力和物力,缩短开发周期,加快项目进程,而且代码的稳定性也得到了保证。此外,该方案的实现也为以后在机顶盒上开发出更多的增值业务提供了方案和依据。

5 小结

本文通过扩展早已进入千家万户的机顶盒的硬件接口,并将开源协议栈ORTP,OSIP和EXOSIP改写和移植到其中,可以经济、便利地实现备受消费者喜爱的VoIP话机的基本功能,方法简单可行。同时把电信网中的打电话业务通过互联网来传输,并用机顶盒作终端来实现,既响应了政府三网融合的号召,也可以给人民生活和工作提供更多的便利和实惠。

摘要:介绍并分析SIP开源协议栈OSIP,EXOSIP,RTP开源协议栈ORTP的原理和运行机制。并在此基础上,设计并实现了一个基于SIC8008数字机顶盒芯片为硬件平台、Linux为操作系统的VoIP终端。该终端通过一个10/100 Base-T的RJ-45以太网接口直接连接互联网来实现和其他VoIP终端的通话。

关键词:SIP,OSIP,RTP,ORTP,Linux,VoIP终端

参考文献

[1]姚峰.基于三网融合的机顶盒原理及应用[J].电视技术,2011,35(6):1-2.

[2]IETF RFC 3261,Session initiation protocol[S].2002.

[3]王世卿.基于OSIP的嵌入式SIP终端的研究与实现[J].微计算机信,2007(12):2-3.

[4]周芒芝.EXOSIP开发者手册[EB/OL].[2011-03-03].http://www.docin.com/p-23551965.html.

[5]RFC1889,RTP:a transport protocol for real-time application[S].1996.

VoIP终端范文

VoIP终端范文(精选4篇)VoIP终端 第1篇关键词:VoIP,BF531,会话初始化协议,Qt/E引言VoIP即Voice Over IP, 通过对语音进行数字化编码压...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部