导语:如何才能写好一篇网络协议规范,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
关键词:Libnet;协议测试;DHCP
1协议测试技术
网络协议测试属于计算机软件测试的一个分支,在测试领域中测试方法分为3种:白盒测试、黑盒测试和灰盒测试。白盒测试通过每条语句至少执行一次来全面检查整个程序代码,而黑盒测试只测试软件外部可以观察到的行为,不涉及程序的内部结构。白盒测试的测试能力非常强,但是过程过于复杂,对被测软件要求也很高。黑盒测试只关心被测软件的输入和输出,测试能力虽然弱了些,但是测试过程本身相对简单,对被测软件要求也无特殊要求。灰盒测试是将白盒测试和黑盒测试结合起来形成的一种测试方法,吸收了两种方法的优点。在通信测试中,协议测试因为协议实现的复杂性往往采用黑盒测试,它并不检查协议代码,而是按照协议标准,通过控制观察被测协议实现或系统的外部行为对其进行评价。
协议测试中用来描述特定协议或协议族测试的实体称为测试集,它由多个测试组构成,测试组对应于此协议族的一个标准协议规范,测试例对应于一个标准协议规范的某一项功能描述,完成一个测试例可能需要不同的测试过程,一个测试过程的完成需要进行初始化、发包、收包、比较以及处理结果等步骤,每一个动作称为一个测试步,它是测试集中最小的单位。在构造用于测试协议实现的输入数据包时采用了Libnet函数库,在捕获协议实现的反馈输出数据包时采用了WinPcap函数库,Libnet与WinPcap都是免费开源的函数库,它们封装了常用繁琐的网络开发过程函数,开放出简单统一的API接口功能函数,方便用户调用,使开发人员能够忽略网络底层细节的实现,从而专注于程序本身具体功能的设计与开发。Libnet与WinPcap都是基于C语言的函数库,具备低层网络数据包操控能力。
2测试系统总体结构
3测试系统的设计与实现
本测试系统与被测实体部署在同一个交换网络中,被测实体是特定协议的一个实现,可以位于计算机或路由器等网络设备中,通过构造特定数据包并且捕获响应报文对协议外部行为进行分析测试。关键模块包括测试例构造,数据包构造与发送,数据包捕获与过滤。
3.1测试例构造
3.2数据包构造与发送
3.3数据包捕获与过滤
捕获响应数据包使用WinPcap函数库,它的核心是NPF协议驱动,符合NDIS规范。在捕获数据包的线程里使用pcap_open()打开网络接口,pcap_next_ex()读取网卡接收的数据包,网卡在混杂模式会捕获大量的数据包,如果逐一比对测试步将消耗大量资源,在系统实现时调用pcap_setfilter()设置数据包过滤器,在调用pcap_setfilter前先使用pcap_compile()函数把高层的过滤规则解释成能被过滤引擎集成到数据包驱动中的低级字节码。
4DHCP协议测试与结果分析
在对特定协议进行测试时需要根据协议的行为特征设计测试拓扑。某些协议的数据交换行为局限于测试平台与被测实体间,这种情况下只需将其部署在交换环境下即可,例如TCP协议的测试。而对于路由协议这样的协议而言,则需要设计更为复杂的拓扑,路由器的多个端口都需要部署测试平台进行协同测试。在协议安全性测试时借助交换机端口映射功能可以模拟攻击的拓扑结构。
为验证测试平台的有效性,选择DHCP协议进行测试。DHCP协议动态管理IP地址,工作在传输层之上,使用UDP提供的服务。其数据包封装格式如图2所示:
依照图2中DHCP数据包封装的结构,在构造DHCP数据包时调用函数依次为libnet_build_dhcpv4(),libnet_build_udp(),libnet_build_ipv4(),libnet_autobuild_ethernet(),Winpcap过滤DHCP数据包使用协议限定符“bootp”。测试采用的拓扑如图3所示:
测试拓扑中使用路由器作为DHCP服务器,在路由器上启用DHCPserver服务,并且配置地址池、网关、地址租期等信息。
ipdhcpexcluded-address172.16.1.1172.16.1.100
ipdhcppoolnet172
network172.16.1.0255.255.255.0
default-router172.16.1.254
dns-server172.16.1.253
lease30
在测试机上设置测试例Ts_sc,配置测试步:TS_DHCPDISCOVER,TS_DHCPOFFER,TS_DHCPREQUEST和TS_DHCPACK,其中TS_DHCPDISCOVER和TS_DHCPREQUEST是构造的激励数据报文,TS_DHCPOFFER与TS_DHCPACK为反馈数据报文。测试系统上启用测试执行Ts_sc测试例,在路由器上启用DHCPevent调试,调试信息显示路由器DHCP服务状态发生变化,测试系统完成所有测试步后成功获得172.16.1.0网段IP,使用showipdhcpserverstatistics查看DHCP服务器统计信息,与测试系统结果一致。
5结束语
本文基于Libnet与WinPcap函数库设计并实现了一个网络协议测试系统。在用于协议一致性测试时可手工设置测试用例,灵活配置协议首部字段,能够对常见网络协议进行测试。在用于网络性能测试时可以设置数据包类型与数据包的发送数量,网络注入速度受数据包长度与网卡接口速度、交换机背板带宽等因素限制,可分布多台测试系统在网络中同时注入从而提高注入速度。经过多年的研究,在协议一致性测试集自动生成技术方面,研究人员提出了多种可行的方法,下一步的主要工作是整合测试集自动生成技术从而完成协议自动测试,同时进一步完善支持的协议类型,增强扩展性。
参考文献:
[1]毕军,史美林.计算机网络协议测试及其发展[J].电信科学,1996(12):51-54.
[2]章韵,杨庚,钱恩渊.基于SDL语言的通信协议系统设计方法[J].计算机工程与应用,2001(22):95-98.
[3]潘红艳,于全.用于通信网络协议开发的形式化方法[J].计算机工程,2004(2):129-134.
[4]罗军舟,沈俊,顾冠群.从Petri网到形式描述技术和协议工程[J].软件学报,2000(5):606-615.
[5]刘浏,陈晓梅.基于测试套优化的DHCP协议一致性可扩展测试系统设计[J].信息网络安全,2012(8):206-209.
[6]程方,王鹏.现代网络测试技术发展综述[J].重庆邮电大学学报:自然科学版,2008(6):57-60.
[7]刘洪霞,赵保华.基于协议实现的网络安全测试[J].小型微型计算机系统,2007(4):619-621.
[8]尹霞,王之梁,景传明,施新刚.一种基于TTCN-3的协议测试系统及其扩展研究[J].中国科学:E辑:信息科学,2008(10):1594-1613.
[9]李尧,胡玲,郝文.基于状态的自动化无线协议安全测试平台设计[J].计算机应用与软件,2012(11):168-171.
【关键词】EtherCATETGGB/T
一、引言
EtherCAT作为最新一代的开放的实时以太网现场总线协议,最早是由德国的倍福自动化有限公司(BeckhoffAutomationGmbH)研发。现在由EtherCAT技术协会(EtherCATTechnologyGroup,简称ETG)来统一组织和管理。EtherCAT技术是基于工业以太网技术的开发的,这样的话,用户只需要主板集成的MAC口或者廉价的标准网卡,就可以完成组态,系统价格与其余现场总线相当,甚至是更加便宜。但是相比其他现场总线技术,性能却要强劲许多,包括65535个从站节点,自动设置地址,通讯速度更快等等。所以,EtherCAT非常适用于高速、精密控制等场合。现在,EtherCAT技术已经广泛地应用于设备控制、机器人、嵌入式系统、楼宇自动化、运输系统等领域,并且呈现出越发强劲的发展势头。有鉴于此,国家标准化委员会正在积极地为EtherCAT制定相应的国家标准,笔者有幸参与了送审稿的翻译和校队工作。本文通过对EtherCAT的技术优势的分析,国家标准化的制定流程,工业以太网国标送审稿的研究,总结EtherCAT现场总线的优势,并给出相应的依据。
二、EtherCAT现场总线优势
(一)开放性
EtherCAT的协议是完全公开的;并且已经成为了IEC、ISO及SEMI的标准协议。对应的协议号是IEC61158、IEC61784、ISO15745和SEMIE54.20,并且我国正在为其指定国家标准。
为了推广技术和保证技术的开放性,以技术主要发起人为主,成立了EtherCAT技术小组。小组的主要任务是支持、完善和推广EtherCAT技术。截止2012年7月2日,ETG共计有2050个会员,光是从2011年的5月到2012年的5月,就新增加了超过380个会员[1]。现在ETG已经成为了全球最大的现场总线组织[1]。在中国,截止2012年2月,中国区共有超过200个会员,也正是因为EtherCAT在我国的蓬勃发展,所以国家急需要制定相应的国家标准。
(二)高速性
下面举一个具体的例子来更好的体现EtherCAT的高速性[2]。
(三)低价
过去的现场总线无论主站还是从站设备都需要专用的设备,整个系统构建下来花费不小。使用EtherCAT技术的成本可以做到更低。
从硬件角度看,主站不需要专用插卡,集成的网口就可以满足要求了,现在许多的自动化设备都标配有网口,这样就不需要新的成本投入;从站采用低成本的从站控制器FPGA或者ASIC,不需要功能强大的微处理器;辅助设备方面,不需要交换机/集线器,只要使用标准的以太网线缆和接头就可以完成网络组态了。
下面我们用一个网络配置的实例来说明[2]:
如果我们要配置一个拥有10个站点,400个数字输入,400个数字输出的,100米长线缆,11个现场总线接头的网络。EtherCAT网络的总成本是最低的。Profibus贵了21.5%,DeviceNet贵了23.7%,CANOpen贵了21.9%.
三、EtherCAT现场总线标准化
(一)中国国家标准
我国将标准划分为四个层次,即国家标准、行业标准、地方标准、企业标准。各层次之间有一定的依从关系和内在联系,形成一个覆盖全国又层次分明的标准体系。
国家标准分为强制性国标(简称GB)、推荐性国标(简称GB/T)和指导性国家标准(GB/Z)。
EtherCAT在我们申请的国标是GB/T,推荐性国家标准。
GB/T是指推荐性国家标准,其中的“T”是推荐的意思。推荐性国标是指生产、交换、使用等方面,通过经济手段调节而自愿采用的一类标准,又称自愿标准。但推荐性标准国标一经接受并采用,或各方商定同意纳入经济合同中,就成为各方必须遵守的技术依据,具有法律上的约束性。
(二)申请国家标准的条件
现场总线的种类繁多,但是真正入选成为我国国家标准的现场总线并不多。这是因为在我国工业控制网络标准的制定是需要满足对应的条件的[4]。
(三)国标制作流程
工作组成员一般分为国内专家小组和国外专家小组。包括制造商、最终用户、集成商等成员。委员会审核通过的标准是75%以上成员赞成25%以下反对,如果委员会由超过25%以上成员反对,那么就需要重新审议项目。
EtherCAT申请国标的工作从2012年2月份开始正式启动,2012年7月成立了工作组,前后经过1年左右的翻译、校队工作后,2013年的2月份发出了征求意见稿,2013年6月发出送审稿,现在正在收集送审稿的投票工作,预计在2013
(四)EtherCAT国标整体结构
国标共分为6个部分。
第一部分:概述
第二部分:物理层服务和协议规范
第三部分:数据链路层服务定义
第四部分:数据链路层协议规范
第五部分:应用层服务定义
第六部分:应用层协议规范
EtherCAT国标内容是使用翻译法修改采用ETG.1000《EtherCAT规范》[5],在技术内容上与原国际标准没有差异,对文本进行了适当的编辑性调整。
EtherCAT文档结构和OSI模型的对应关系如图3所示
所有的网络协议都是基于OSI网络模型的,EtherCAT也不例外。EtherCAT总共使用了OSI中的应用层、数据链路层和物理层,而第3到第6层没有在EtherCAT中实现。这样保证了EtherCAT协议的简洁、高效,正因为剥离了IP,TCP等传统的以太网网络层、传输层实现,所以使得EtherCAT的实时性得到了极大的保证。
四、结论
EtherCAT总线协议有许多吸引自控行业的特点:高速、开放、安全、冗余。正因为如此,该技术自诞生起就取得了飞速的发展。鉴于此,国家标准机构正在积极的推进EtherCAT的国标化。
[1]EtherCATTechnologyGroup,EtherCAT工业以太网现场总线,2012
[2]EtherCATTechnologyGroup,IndustrialEthernetTechnologies:Overview,2011
[3]国际电工委员会,Servingglobalindustrialautomation:IECpublishesnewFieldStandard.2012-12-14
[4]EtherCAT技术协会,一致性与互操作性,2011
[5]EtherCAT技术协会,EtherCAT规范,2013
作者简介:
关键词:信令分析;呼叫失败;感知;满意度
1引言
信令分析是运营商网络故障定位的常用手段,近年来基于信令分析进行网络故障定位、隐患排查等项目也逐步在国内各运营商铺开,但从项目的成果看,大多停留在分析研究上,并未能将这些成果很好的落地。笔者从大量信令分析服务项目成果中进行总结与提炼,提出一种基于呼叫失败信令分析的提醒服务方案,旨在帮助运营商通过提升用户感知度,强化运营商的竞争力,达到用户、运营商双方得益的局面。
2呼叫失败的现状
呼叫失败是指主叫用户拨打号码后,在还没有听到回铃音之前,由网络下发释放消息、中止呼叫。呼叫失败时,主叫用户一般都能听到网络下发的通知音解释本次呼叫未能接通的原因,但是还有相当数量的呼叫失败表现为主叫用户呼叫后直接返回待机状态,没有任何解释,这类呼叫失败现象会严重影响用户感知度,而且会造成其他负面后果,主要表现为以下两方面:
⑴用户会怀疑运营商的网络质量问题,对运营商失去信心,久而久之将极有可能导致用户流失;
⑵大量用户出现呼叫失败而又没有任何提示时,一般会继续多次拨打,存在着引发“雪崩效应”的隐患,使站点或交换机负荷过高而瘫痪,引发更为严重的通信故障。
3基于信令的呼叫失败分析
呼叫失败在信令流程中表现为用户发起“CM_SERVICE_REQUEST”消息后,在其后的流程中没有收到ALERTING、CONNECT、CONNECT_ACK等接通的消息,而由网络侧下发释放消息中止呼叫。
网络下发的释放消息一般有“CM_SERVICE_REJECT”和“DISCONNECT”两种,前者是在CM服务尚未建立就被网络中止呼叫,后者一般为CM服务建立后网络下发的释放消息,但这些释放消息都带有一个原因值,一般称为Cause值,指示了本次释放的原因,这些Cause值都可以在3GPP协议规范中找到其解释,有些解释很明显的指示了失败原因,如电路拥塞、无线资源不可用等,也有些解释比较笼统,如DTAP_CC层的Temporaryfailure、DTAP_MM层的Networkfailure等,从Cause的字面解释无法知道释放消息的真正原因,这时就需要根据本次呼叫失败的信令模型、用户行为、多接口关联等分析手段对呼叫失败进行原因追查。
3.1基于信令的呼叫失败分析一般流程如下
⑴建立A接口呼叫失败的呼叫模型,即手机主叫发起CMSERVICEREQUEST,在A接口会话中,没有ALERTING、CONNECT,排除正常的呼叫终结Cause值。
⑵统计A接口上释放消息所带的Cause值,并进行数量的上排序。
⑶对数量较大、异常的Cause值进行原因追查,查询下放释放消息的前一条消息的详细内容,如仍无法明确原因则需要进行多接口关联,直至关联到被叫端无线侧,追踪下发释放消息的根节点,如在根节点仍无法明确原因,则需要查询用户行为,看是否由用户行为导致的呼叫失败。
⑷对明确原因的Cause提出优化建议及实施。
3.2我们一般将呼叫失败原因归为四种类型
⑴由于无线环境质差导致的呼叫失败
⑵由于核心网存在隐患、故障引发的呼叫失败
⑶由于用户行为导致的呼叫失败
⑷由于用户终端导致的呼叫失败
基于信令分析的呼叫失败优化项目能对前两种原因引起的呼叫失败进行优化,而对于后两类原因只停留在分析研究上,其成果效益并不明显。
4主叫用户提醒方案设计
4.1呼叫失败提醒的设计框架
呼叫失败用户提醒的核心思想是将基于呼叫信令的分析成果进行落地,将研究成果真正惠及用户,其整体设计框架如下所示:
⑴当用户出现呼叫失败时,其信令数据被信令采集设备所采集、解码并存入信令数据库。
⑵信令系统对呼叫失败的会话进行建模,建模要点包括会话所包含的消息、释放消息携带的Cause值、释放消息出现的位置。
⑶将建立呼叫失败模型与呼叫失败模型库进行比较匹配,如果匹配成功,则根据呼叫失败模型库中对该呼叫失败模型的原因解释以及用户操作建议以短信的形式发送给用户。
⑷如果匹配不成功,则需要对该种类型的呼叫失败模型进行研究,追踪其失败原因,再将新的成果输入到呼叫失败模型库中去。
图中循环1是信令分析应用部分,即为用户提供呼叫失败提醒功能;循环2相当于一个改进系统,为系统提供持续动力,令整个呼叫失败提醒功能不断完善,不断适应复杂的环境。
4.2方案拓扑结构
呼叫失败提醒方案是以信令分析为基础一种解决方案,需要对现网各接口进行信令搭接,其拓扑结构如下图:
信令搭接的涉及到的网络接口和协议有:
⑴Mc接口,主要采集BSSAP、RANAP、H.248、BICC协议的信令数据(适用于IP化软交换局)
⑵A接口,主要采集BSSAP协议的信令数据(适用于传统非软交换局)
⑶C接口(MSC-S\MSC与LSTP的接口),主要采集MAP协议的信令数据
⑷A-bis接口,采集BSC侧以下的信令数据
信令采集系统通过IP网络与短信中心建立连接,为给用户下发短信建立通道。
4.3应用案例
用户在某一建了MSCINPOOL的城市出现呼叫困难现象,而在其它非POOL城市则能正常使用。具体表现为每次呼叫需要重复拨7-8次才能呼叫成功,呼叫失败时手机显示“连接错误”。
信令系统捕捉到该用户的呼叫失败信令流程,如下所示:
用户在呼叫过程中收到网络下发CM_SERVICE_REJECT携带Dtap_Cause_4,协议规范解释为“IMSIUNKNOWINVLR”。
系统将该呼叫失败模型与已知的呼叫失败模型库进行匹配,得到该呼叫失败的原因以及用户操作建议:
系统提取呼叫失败模型库中该呼叫失败的提醒短信内容,及时向主叫用户发送呼叫失败提醒短信。
上述案例为非网络质量导致的呼叫失败,如果没有呼叫失败用户提醒短信,用户会由于不知情而怀疑运营商的网络质量。呼叫失败用户提醒短信可以消除用户的疑惑,既让用户明白其呼叫失败并非网络原因,及时改变联系方式避免误事,又能让用户感受到运营商的贴心服务和技术含量,增加了用户对运营商的认同感与依赖度,可谓一举多得。
5小结
通过对各类呼叫失败过程的信令监测,结合模型库数据的比对,分析呼叫失败的原因,通过短信方式将呼叫失败的原因、用户操作建议及时地送达客户,让客户感受到运营商的贴心服务,是一种“以人为本”的服务理念。在高速发展的移动通信市场上,运营商必须采用创新的手段为客户提供新的亮点,增强用户感知度、吸引用户、留住用户,方能在激烈的市场竞争中领先一步。
[参考文献]
[1]袁永福,洪烨.GSM手机引起用户感知度下降的原因.通信管理与技术,2008,(2)
1.1信息家电网络系统的体系结构
电力线信息家电网络系统是以家庭电力线作为传输介质的局域网,就网络本身而言,它符合通用的4层网络体系结构.根据目前家庭网络所承担的主要业务,从网络分层的角度可以将信息家电网络系统分为3层.
(1)物理介质层(Media)是信息家电网络的物理层,以电力线为传输介质,以扩频载波技术(SpreadSpectrumCarrier,SSC)为信号传输基础.
(2)底层协议层(Protocol)对应于OSI参考模型的数据链路层和网络层.数据通信采用带有避免冲突的载波侦听多路访问(CSMA/CA)机制来确保数据包按照最快的路径正确收发.网络控制层从底层接收数据,并为信息家电协议提供接口.
(3)应用程序接口层(API)是信息家电网络的应用层,担负着实现信息家电网络内部管理以及与外部互联网络信息交互的重任.具体包含的功能有数据格式转化,信息家电功能状态解析,信息家电服务控制管理等.
1.2协议规范
电力线信息家电网络是按层的方式来组织的,每一层都建立在其下层之上,这种协议分层设计的方式也符合当前软件设计结构化和面向对象的思想.
(2)通信协议基于电力线的优势,信息家电可以根据不同的需要和功能使用不同的标准和协议,如X-10,CEBus,LonWorks等.X-10接口技术是一种以电力线作为信号传输介质,为家庭用户提供家用电器的远程控制、家庭安全控制等方面应用的通信协议.CEBus是一种针对现代智能家庭电子产品的开放性协议(KIA-600协议).CEBus物理层中使用最广泛的传输介质就是电力线,电力线载波信号在其上进行传输时数据传输速率可达10GB/s,完全可以满足信息家电的高速通信需求.LonWorks技术的LonTalk通讯协议提供了OSI参考模型中定义的全部7层服务,便于将家用电器、电表、灯光控制设备等互相连接并与互联网络集成,主要适用于信息家电网络中的安全控制设备.物理层使用电力线通信技术时通信速度可达5.4kB/s.
(3)网络协议UPnP(universalplugandplay)协议使用开放的标准协议和通用的网络媒体,不仅适用于电源线网络,而且其设备架构更适合于信息家电网络中的设备识别和访问控制.由于它是一种即插即用协议,因此便于信息家电的自动发现与连接、自动控制以及网络互连.
1.3信息家电网络系统的硬件设计方案
基于电力线通信的信息家电网络系统硬件架构.其硬件平台实现的基础是在信息家电和其他智能家用设备内部嵌入PLC芯片,作为接入互联网络的接口.许多新型家电设备内部都置有微控制器,将PLC芯片通过标准的输入输出接口与各种微控制器相接,就可以实现信息家电网络内部设备之间的通信以及与外部网络的连接.信息家电、监控设备、计算机等家庭设备若想共享互联网资源,还必须在电力线上连接一个PLC路由器作为选通设备.若将PDA等移动设备作为无线接入点,与挂在电力线上的各种设备进行通信时,只需要将无线网络基站作为内置PLC芯片的信息家电即可.除了完成信息家电网络内部的通信外,各住宅网络还可以通过电力线MODEM连接到互联网上.PLC网关一方面负责获取住宅内信息家电的状态信息,另一方面负责传送远程控制系统的命令,同时将家电的响应信息反馈给远程控制系统.
2结语
(3)联合计划、预测、补货作业流程实施规范
补货是指物流及供应链上合作伙伴通过共享需求信息、预测信息、资源信息,来实施联合计划、预测和补货。通过供应链中的伙伴相互协作共享标准化的信息来制定目标计划、进行有效的市场预测并实施及时订单补货,为供应链中各个企业降低库存成本、减少运营费用、提高销售额、以实现有关方共赢。联合计划、预测、补货的目标是改变现有的伙伴关系模式,以更精准的信息使供应链各方的销售额和利润更大化,其流程表现在四个部分:全面协议和联合商业计划(包括各项目小组对销售、库存、零售网点分布和商品类型款式在可见未来的变化决策);销售预测协会(零售商和供应商共同需求预测,比较和甄别各自预测曲线的不协调点,找出问题并修改计划);定单预测协作(零售商和供应商共享补货计划,甄别不协调点并解决之);定单生成/交货执行(即结果数据共享,包括销售地占、定单、运货班期,现有库存等,甄别预测准确度的偏差,库存状况及执行中的问题并予以解决)。
4.基于XML的物流信息交换
在物流系统中,当供应商、制造商、批发商、零售商和顾客之间传递商务及其他物流信息时,双方的电脑间进行电子数据的交换方式一般采用EDI方式,按标准协议规范化和格式化的业务信息通过电子数据网络,利用增值网或专用网在不同电脑间进行自动交换和处理。但建设EDI增殖网或专用网投资较大,又缺乏开放性。这种以标准固定格式传递业务信息的方式,适用于交易双方有经常性业务联系的大型企业之间进行,对于只有偶尔业务联系的企业间或小企业就很难实施,而现代物流系统及供应链网络,一方面需要在不同行业各类企业间进行广泛的业务、商务联系;另一方面供应链合作伙伴间的战略联盟虽有长期性,但更多的是一种动态同盟关系,这样传统的EDI方式就不适于这种大范围的、动态的信息交换,这就必须研制、、宣贯投资少、更开放的物流信息交换标准体系结构。(待续)
据研究人员介绍,该系统名为“自行组控蓝牙网络”。该网络通过在家居环境中各个需要或开或关的装置中都嵌入蓝牙装置来组建,无论是各个居室的窗户或是灯,又或者是各类电器设备,只需要进行相应的改进,便都可以纳入该系统之内。
而该系统配备的一个蓝牙手机,则成为所有设备的遥控器。只要主人携带这部手机回到家中,手机就会通过蓝牙装置自动接入家居环境中的上述网络,而无需进行有线连接或是其他的繁琐操作。这样,你只需要通过操作手机上简单的几个按钮,便可以对家中的各类设备进行遥控了。
既然蓝牙技术这么神奇,那让我们走进它。
蓝牙技术简介
1.蓝牙简介
蓝牙技术是Ericsson移动通信公司在1994年开始启动的,1998年5月,Ericsson联合Nokia、Intel、IBM、Toshiba这4家公司一起成立了蓝牙特别兴趣小组(SpecialInterestGroup,SIG),负责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体使用。3Com、Lucent、Microsoft和Motorola很快加盟SIG,与SIG的5个创始公司一同成为SIG的9个倡导发起者。自蓝牙规范1.0版推出后,蓝牙技术的推广与应用得到了迅猛发展。截至目前,SIG的成员已经超过了2500家,几乎覆盖了全球各行各业,包括通信厂商、网络厂商、外设厂商、芯片厂商、软件厂商等,甚至消费类电器厂商和汽车制造商也加入了SIG。
“蓝牙(Bluetooth)是一个开放性的、短距离无线通信技术标准,也是目前国际上最新的一种公开的无线通信技术规范。它可以在较小的范围内,通过无线连接的方式、安全、低成本、低功耗的网络互联,使得近距离内各种通信设备能够实现无缝资源共享,也可以实现在各种数字设备之间的语音和数据通信。由于蓝牙技术可以方便地嵌入到单一的CMOS芯片中,因此,特别选用于小型的移动通信设备,使设备去掉了连接电缆的不便,通过无线建立通信。
蓝牙技术工作在全球通用的2.4GHzISM频段。从理论上讲,以2.4GHzISM频段运行的技术能使用距30m以内的设备互相连接,但实际上很难达到。现阶段,蓝牙的发射范围可达10m,可以同时实现8台设备的相互联通。当检测到距离小于10m时,接收设备可动态地调节功能;当业务量减小或停止时,蓝牙设备即可进入低功耗工作模式。
2.蓝牙中的关键技术
2.1跳频技术
所谓跳频技术,就是将整个频带分成若干跳频信道(HopChannel)。在一次连接中,蓝牙芯片所控制的收发器按照一定的码序列,不断地从一个信道跳转到另一个信道;而接收方也是按照相同的跳转规律进行通信。这实际上属于一种硬件加密手段,除非第三方掌握了接收双方的切换信道干什么,否则,从理论上是无法完整获得信息的,而干扰源也是不可能按同样的规律进行干扰的。跳频的瞬时带宽很窄,但通过扩展频谱技术,可以使这个窄带宽被成倍地扩展成宽频带,使扰的可能性变得很小,由此就可以保证传送的完整性和系统的稳定性。
2.2纠错技术
在蓝牙技术中使用了三种纠错方案:1/3比例前向纠错码(1/3FEC)、2/3比例前向纠错码(2/3FEC)和用于数据的自动请求重发(ARQ)方式。
1/3比例前向纠错码是一种较简单的纠错码方式,属于重复码,实现时对每位信息重复三次。2/3比例前向纠错码是一种(15,10)精简的汉明码表示方法,用于部分分组。
使用ARQ方式,在一个时隙中传送的数据必须在下一个时隙得到确认(或超时)信息。只有数据在接收端通过了报头错误检测和循环冗余检测,被认为无错后,才向发送端返回确认信息;否则,返回一个错误信息。
2.3微微网
蓝牙支持点对点和点对多点的通信,其最基本的网络组成是微微网。微微网是通过蓝牙技术连接起来的一种微型网络,由一个主设备(Master)和若干个从设备(Slave)组成,且从设备最多为7台。主设备负责通信协议的动作,而从设备则受控于主设备。一个微微网可以是2台相连的设备,也可以是8台连在一起的设备,所有设备单元均采用同一跳频序列。
蓝牙给每个微微网都提供了特定的跳转模式,因此,它允许大量的微微网同时存在。同一区域内,多个微微网互联形成了分散网。不同的微微网信道有不同的主单元,因而存在不同的跳转模式。
2.4安全性
蓝牙技术的无线传输特性使它非常容易受到攻击,因此,安全机制在蓝牙技术中显得尤为重要。虽然蓝牙系统所采用的跳频技术已经提供了一定的安全保障,但蓝牙技术仍然需要在应用层和链路层上提供安全措施。该措施将用于对等环境,即蓝牙系统每个单元中设备的匹配和加密规则都将以同样的方法实现。在链路层,蓝牙使用四个参数来保证系统的安全性:每个用户唯一的48位地址、用户的128位验证密钥、用户的8~128位加密密钥、设备产生的一个128位随机数RAND。
蓝牙的低层安全是通过基带和链路管理中的鉴权、匹配和加密完成的。
鉴权基于“竞争-应答”算法,是蓝牙系统中的关键部分,它允许用户为个人的蓝牙设备建立一个信任域。校验器发送一个LMP-au-randPDU分组给请求者,该PDU(协议数据单元)分组含有一个随机数。请求者根据获取的分组计算出应答值,然后将应答值发回给校验器,验证应答值是否正确。
当两台设备无共用链接字时,则基于个人识别码PIN和随机数创建初始化字Kinit,这一过程为匹配。Kinit字在校验器向请求者发出LMP-in-rand时创建,然后进行鉴权,共计算过程基于Kinit字,而不是链接字。通过鉴权后,链接字即被创建。
加密被用来保护连接中的个人信息,密钥由程序的高层来管理。网络传送协议和应用程序,可以为用户提供一个较强的安全机制,需要注意的是,加密字节不同于鉴权字。鉴权字具有静态性,而一旦建立加密字,就由运行在蓝牙设备上的具体应用,来决定什么时候和是否需要修改加密字。
蓝牙技术的协议标准
SIG所颁布的蓝牙规范(SpecificationoftheBluetoothSystem)就是蓝牙无线通信协议标准,它规定了蓝牙应用产品应遵循的标准和需要达到的要求。
蓝牙规范包括核心协议(Core)与应用框架(Profiles)两个文件。协议规范部分定义了蓝牙的各层通信协议,应用框架指出了如何采用这些协议实现具体的应用产品。蓝牙协议规范遵循开放系统互连参考模型(OpenSystemInterconnetion/ReferencedModel,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次。
按照蓝牙协议的逻辑功能,协议堆栈由下至上分为3个部分:传输协议、中介协议和应用协议。其功能简介如下:
本文为全文原貌未安装PDF浏览器用户请先下载安装原版全文
1.传输协议
负责蓝牙设备间相互确认对方的位置,以及建立和管理蓝牙设备间的物理和逻辑链路。这一部分又进一步分为低层传输协议和高层传输协议。低层传输协议侧重于语音与数据无线传输的物理实现以及蓝牙设备的物理和逻辑链路。低层传输协议包括蓝牙的射频(Radio)部分、基带与链路管理协议(Baseband&LinkManagerProtocol,LMP)。高层传输协议包括逻辑链路控制的物理实现以及蓝牙设备间的连接与组网。高层传输协议包括逻辑链路控制与适配协议(LogicalLinkControlandAdaptationProtocol,L2CAP)和主机控制器接口(HostControllerInterface,HCI)。这部分为高层应用程序屏蔽了诸如跳频序列选择等低层传输操作,并为高层应用传输提供了更加有效和更有利于实现的数据分组格式。
2.中介协议
为高层应用协议或程序在蓝牙逻辑链路上工作提供了必要的支持,为应用层提供了各种不同的标准接口。这部分协议包括以下几部分:
串口仿真协议(RFCOMM)
基于欧洲电信标准化协会(EuropeanTelecommunicationStandardizationInstitute,ETSI)的TS07.10标准制定。该协议用于模拟串行接口环境,使得基于串口的传统应用仅作少量的修改或者不做任何修改可以直接在该层上运行。
服务发现协议(ServiceDiscoveryProtocol,SDP)
为实现蓝牙设备之间相互查询及访问对方提供的服务。
IrDA(InfraredDataAssociation)互操作协议
蓝牙规范采用了IrDA的对象交换协议(OBEX),使得传统的基于红外技术的对象(如电子名片(vCard)和电子日历(vCal)等)交换应用同样可以运行在蓝牙无线接口之上。
网络访问协议
该部分协议包括点对点协议(PointtoPointProtocol,PPP)、网际协议(InternetProtocol,IP)、传输控制协议(TransferControlProtocol,TCP)和用户数据报协议(UserDatagramProtocol,UDP)等,用于实现蓝牙设备的拨号上网,或通过网络接入点访问Internet和本地局域网。
3.应用协议
是指那些位于蓝牙协议堆栈之上的应用软件和其中所涉及的协议,包括开发驱动各种诸如拨号上网和通信等功能的蓝牙应用程序。蓝牙规范提供了传输层及中介层定义和应用框架,在传输层及中介层之上,不同的蓝牙设备必须采用统一符合蓝牙规范的形式;而在应用层上,完全由开发人员自主实现。事实上,许多传统的应用都可以几乎不用修改就在蓝牙协议堆栈之上运行,如基于串口和OBEX协议的应用。通常蓝牙技术应用程序接口(ApplicationProgrammingInterface,API)函数的开发由开发工具的设计人员来完成,这样有利于蓝牙技术与各类应用的紧密结合。
蓝牙技术在智能家居系统中的应用
由于蓝牙技术的免布线、低成本、低功耗、高速率、高可靠性和兼容性等特点,使得基于蓝牙技术的智能家居系统能为人们所接受。
家庭电器控制
家庭流量计费
目前,大多数远传计量系统采用如下方式:在各个房间内的远传表,通过专用的布线系统连接至各个节点流量控制器,再汇总到物业管理中心进行上位管理。在智能家居系统中如果采用了蓝牙技术,就会出现新的三表远传流量计费系统的局面。
通过在支持蓝牙的微芯片中置入相应程序,并置入流量表中,可以去掉流量表与节点控制器之间的连线,使每个计量末端采用无线方式,降低系统由于线路损坏而带来的系统故障,提高了系统的可靠性。
安防系统
蓝牙技术可以使数据采集和家庭安防监控灵活方便,摆脱了布线系统的束缚。
近两年数据泄漏事件接连发生,让企业对业务安全及应用安全的重视达到前所未有的高度。杭州安恒信息技术有限公司(简称安恒信息)总裁范渊对当前的Web应用安全现状非常担忧,在他看来,“我们现在面临的是一个岌岌可危的网络安全环境,用户就好比《皇帝的新装》中的帝王一样,毫无隐私可言”。
90%以上WAF可能被绕过
WAF(Web应用防火墙)是企业应对Web应用攻击的主要方法。但是,随着攻击技术的日新月异,攻击方式的不断变化,攻击者仍然会经常让企业感到措手不及:针对Web应用的零日攻击屡屡得逞;社交工程学攻击、APT攻击则让企业遭受重创……
美国举办的2012黑帽大会上披露的一个消息令人咂舌:安全厂商Qualys工程经理IvanRistic用一个新的工具测试WAF是否存在漏洞,结果是WAF可以被150多种协议级避让技巧绕过。这意味着黑客只要稍微修改恶意请求的URL路径,就可以轻松绕过WAF的检测。对此,吴卓群认为:“WAF本是保护Web应用安全的设备,但它却缺乏足够的安全测试,有大量攻击手段和方法可完全绕过WAF的防护策略,对Web网站进行攻击。更大的风险是,攻击者利用解析错误彻底绕过安全防护策略。当前,国内外无论是硬件WAF还是云WAF,至少有90%以上存在被彻底绕过的风险。”
主动防御的安全策略
面对攻击者多种多样的绕过方法,WAF厂商该如何应对?安恒信息的策略是变被动为主动。“作为国内最早研发Web应用防火墙的企业,安恒信息逐渐认识到这点。”吴卓群表示,“经过多年的实践,安恒信息总结出一套可行的技术方法,有效地解决了目前针对WAF的绕过保护问题,使得WAF成为实实在在的能有效抵御Web攻击的最佳防御方式。”
从2007年国内第一款透明Web应用防火墙至今,安恒信息在WAF领域成果累累,其WAF产品明御Web应用防火墙不仅内置了30余类的通用Web攻击特征,能够有效防御来自外部的SQL注入、文件注入、命令注入、配置注入、LDAP注入和跨站脚本等攻击,而且通过HTTP协议规范性检测,可以实现Web主动防御功能,比如通过设置请求头长度限制、请求编码类型限制等方式,能有效拦截大部分非法的未知攻击行为。
【关键词】NATVPNIPSec通道安全
一、前言
采用RFC1918编址方式节约IP地址的方法通称为NAT,NAT分为三类:静态NAT、动态NAT、NAPT。NAPT应用最为广泛。NAT技术是为了节约IP地址,在网络内部采用私有地址,在出口采用公网地址,内部地址要访问外网时,需要将内网地址转换为公网地址,这种转换主要是IP地址和端口的转换,涉及到修改每个IP包的IP地址和端口值。而IPSec是一套网络安全协议规范,常用于组建VPN,构建两个远程局域网之间的安全隧道,进而把位于两地的两个局域网合并成一个可以通过不安全的互联网相互联系的一个局域网,而IPSec中使用的协议不允许修改IP报头内容,因此,NAT和IPSec相互矛盾,不能在一起混用。虽然目前有一些方法克服这种矛盾,比如IPOVERTCP,IPOVERUDP,NAT-T等,但是都是对IP报文结构的一种破坏,本文根据NAT和IPSec的不同用途,客户端采用NAT和IPSec分别访问不同的对象,在配置上巧妙避开矛盾,使两种协议各司其职,互不影响。
二、NAT结构分析
私有网络192.168.1.0/24的多台计算机,需要访问internet,但是只有一个公网地址,在路由器R1上启用NAPT功能,将源地址为192.168.1.x的私有地址转换成internet中可以识别和交换的公网地址200.1.1.1,同时将端口进行相应的转换,并在R1中储存对应表,如图1所示。
三、IPSecVPN解析
IPSec是一种IP层的数据加密方法,它包含两种模式:传输模式和隧道模式,有两种封装:AH和ESP,两种模式和两种封装共组合成四种应用,比较常见的是隧道模式的ESP封装。其基本封装原理如图2所示。
四、配置与验证
试验网络拓扑如图3所示。
4.1NAT配置与验证
首先在R1上设置NAT,排除到对端的流量,其余流量均采用NAT。
R1(config)#accesslist102denyip192.168.1.00.0.0.255172.16.1.00.0.0.255
R1(config)#accesslist102permitipanyany
R1(config)#ipnatinsidesourcelist102intf0/1overload
R1(config)#intf0/1
R1(config)#ipnatoutside
R1(config)#intf0/0
R1(config)#ipnatinside
在R3上设置NAT,排除到对端的流量,其余流量均采用NAT。
R3(config)#accesslist102denyip172.16.1.00.0.0.255192.168.1.0.0.0.0.255
R3(config)#accesslist102permitipanyany
R3(config)#ipnatinsidesourcelist102intf0/1overload
R3(config)#intf0/1
R3(config)#ipnatoutside
R3(config)#intf0/0
R3(config)#ipnatinside
实验的关键是NAT的访问控制列表范围的规定,前往对端私用网络的源IP不要转换,而去往公网的源地址需要转换,采用debugipnat验证NAT转换过程。
4.2IPSec配置与验证
第一步配置IKE协商
R1(config)#cryptoisakmppolicy100建立IKE协商策略
R1(config-isakmap)#authenticationpre-share预共享密钥认证
R1(config)#cryptoisakmpkeywwpaddress201.1.1.2设置共享密钥和对端地址
R3(config)#cryptoisakmppolicy100建立IKE协商策略
R3(config-isakmap)#authenticationpre-share预共享密钥
R3(config)#cryptoisakmpkeywwpaddress200.1.1.1设置共享密钥和对端地址
R1(config)#cryptoipsectransform-setwwpsetesp-des配置转换集、验证算法、加密算法
R1(config)#access-list101permitip192.168.1.00.0.0.255172.16.1.00.0.0.255定义访问控制列表
R2(config)#cryptoipsectransform-setwwpsetesp-des传输模式
R2(config)#access-list101permitip172.16.1.00.0.0.255192.168.1.00.0.0.255
第三步应用配置到接口
R1(config)#cryptomapwwpmap110ipsec-isakmp采用IKE协商,优先级为110
R1(config-crypto-map)#setpeer201.1.1.2指定VPN链路对端IP地址
R1(config-crypto-map)#settransform-setwwpset指定转换集
R1(config-crypto-map)#matchaddress101指定访问控制列表,匹配信息流
R1(config-if)#cryptomapwwpmap应用此表到端口
R3(config)#cryptomapwwpmap110ipsec-isakmp采用IKE协商,优先级为110
R2(config-crypto-map)#setpeer200.1.1.1指定VPN链路对端的IP地址
R2(config-crypto-map)#settransform-setwwpset指定转换集
R2(config-crypto-map)#matchaddress101指定访问控制列表匹配需要加密的信息流
R2(config)#intf0/1
R2(config-if)#cryptomapwwpmap应用此表到端口
IPSECVPN配置完成后,首先采用ping命令,测试到对端私网和公网是否畅通;其次,采用show命令查看IPSec状态,R1#showcryptoipsecsa,R1#showcryptoisakmpsa,R1#showcryptoisakmppolicy;最后,采用debugcryptoisakmp和debugcryptoipsec命令,查看IPSec运行情况。
五、结论
根据VPN和NAT的不同应用范围,灵活配置策略,精细化配置测试,可以采用不同信息流量采用不同途径的方法,分别使用NAT和VPN,达到到达对端采用VPN,到达公网采用NAT,各司其职,既保障了访问公网的灵活性,又保证了私网通信的安全性。
参考文献
[1]洪洲.NAT的UDP穿透技术分析与实现.广州城市职业学院学报[J],2009,2:27-31
[2]杨翼平.双重NAT技术在集中网络管理业务中的应用.中国新通信[J],2012,10:49-51
[3]吴丽华,肖子玉.IMS组网中的NAT/防火墙穿越方案.电信工程技术与标准化[J],2009,5:16-21页
[4]蔡琴.运用VPN技术组建新疆党校虚拟专用网络.无线互联科技[J],2012,11:8-9
[5]黄益彬,吕洋,杨维永.智能终端网络安全防护设计.计算机与现代化[J],2012,12:106-109
[6]程龙,张学平,王海涛.基于OPNET的IPSec协议性能监测与仿真.计算机安全[J],2012,11:51-55
关键词:物联网;课程性质;教学的开发思路;教学内容和要求;课程考核
1课程性质
“无线传感器网络技术”涉及通信技术、计算机技术和传感器技术等多种技术领域,因此本课程是一门理论综合性高,应用实践性强的课程。通过本课程的学习和实践,旨在使学生了解WSN和ZigBee协议规范的基础知识,为进行ZigBee项目开发提供了理论基础。
2课程设计理念
在本课程教学设计过程中,遵循“项目为载体,模块递进”的原则,在夯实学生WSN和ZigBee协议理论基础的同时,培养学生对ZigBee技术的应用能力,并引进ZigBee项目,采用任务驱动的方式,充分体现WSN的教学实践。将专业教学过程,技能训练过程有机结合起来,有效地提高课程教学的实践性、开发性和有效性。
3课程开发思路
本课程的教学过程要实现课堂案例教学和实践任务导向教学相结合,将项目式案例引入课堂教学,以真实项目为对象进行工作导向组织教学,从教学过程和形式上体现“学”和“做”的紧密结合。课程模拟完成企业“项目任务”贯穿整个教学过程。通过问题、项目导入(实践)学生思考、分析、回答、教师评议、总结(理论)扩展应用(实践)的方式进行,使授课内容与工作实际紧密结合[2]。项目实施过程中教师加强对学生的引导,并且进行过程性评价,教会学生怎样应付大量的信息,引导学生如何在实践中发现新知识,掌握新内容。教师要成为教学策划和导演,在教学过程中起指导作用[3]。
4课程目标
本课程的项目强调从学生的学习和认知水平出发,通过理论、实践相结合的教学方式,边讲边学、边学边做、做中学、学中做,把学生培养成为具有良好职业道德的、具有嵌入式系统开发、程序设计的管理理论和实践能力的、具有可持续发展能力的高素质高技能型物联网专门人才,以适应市场对物联网人才的需求[4]。
5课程内容和要求
本课程的内容主要包括以下4大模块:无线传感器网络、无线片上系统、ZigBee网络协议、TIZ-Stack协议栈的使用,具体要求如表1所示。
6课程考核
[1]谢金龙,邓人铭.物联网无线传感器网络技术与应用[M].北京:人民邮电出版社,2016.
[2]桂小林.物联网技术专业课程体系探索[J].计算机教育,2010(16):1-3.
[3]李强.浅谈我国高校物联网专业教学模式创新[J].北京师范大学学报,2010(2):30-35.
[4]施炯,杨亚萍,梁丰.“物联网工程导论”课程教学探索与实践[J].中国电力教育,2013(28):106-107.
在现有的即时通信系统中,实现音视频通信的核心组件包括音视频处理框架和即时通信协议两个部分。音视处理框架集成了音视频采集、音视频编解码、音视频分流控制、音视频数据流网络拥塞控制等技术模块,能够完成音视频数据流的采集、编码、分流等基本处理流程;即时通信协议则负责为音视频数据协商传输通道,并且在协商好的传输通道上建立对应的连接,从而为音视频数据的顺畅传输提供保障。
1即时通信协议
核心协议只规定了很小、很基本的一些功能,大部分功能都是在扩展协议中规定的。实际上,XMPP协议只是作为协商协议应用,真正的P2P连接和实时通信是通过其扩展协议实现的。Jingle就是典型的扩展协议案例。Jingle[6]是Google开发的XMPP协议上的扩展,其解决了在XMPP协议体系下点对点的P2P连接问题。Jingle协议提供了多种传输方式用于数据传输,而针对多媒体数据的最为常见的模式是两种UDP传输方式。一种传输模型是RAWUDP[9],RAWUDP是在UDP协议上发送媒体数据包的传输通道模型,可以实现在同一局域网下的P2P连接,没有网络穿越功能,无法实现远程通信;另一种模型则是功能更为强大的ICE-UDP[8],ICE-UDP也是在UDP协议上发送媒体数据包,并且可以实现具有防火墙的网络穿越和ICE连接性检查,实现远程通信。ICE是标准的建立P2P连接性检查的协议,其自身不能独立工作,必需在信号通道的协调下建立连接,而XMPP协议就可以作为ICE通道协商的协议标准。
基于Jingle/XMPP协议实现的即时通信框图如图1所示。Jingle通过XMPP完成P2P通道的协商任务,同时通过Jingle协议建立P2P通道并进行连接性检查,然后建立并完成RTP会话,从而完成音视频通信。如果选择ICE-UDP通道传输模型进行RTP视频数据传输,XMPP服务器可以使用STUN[2]服务器收集用户的地址,包括NAT[3]后面的私有地址以及NAT与互联网连接的公共地址,并且以此为基础建立映射机制,完成会话参与者跟具体的网络地址间的转换和NAT穿越。
2音视频处理框架
即时通信系统中的音视频处理框架主要为用户提供一组多媒体数据处理的接口,用户可以用这些接口实现从多媒体采集卡上获得数据,进行压缩编码、格式转换、数据封包等一系列操作,从而完成多媒体的实时处理传输功能,大大简化多媒体处理的复杂性。目前具有二次开发功能的音视频处理框架包括Gstreamer,Directshow,Opencore等。其中DirectShow是微软公司在ActiveMovie和VideoforWindows基础上推出的基于COM的流媒体处理开发包。运用DirectShow可以很方便地从支持Windows驱动模型的采集卡上捕获数据,并进行相应的后期处理乃至存储到文件中。OpenCore则是手机操作系统Android的多媒体核心,OpenCore的代码非常庞大,是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。而基于Linux平台的GStreamer则是完全开源的多媒体框架库,利用其可以构建一系列媒体处理模块,包括从简单的Ogg播放功能到复杂的音频混音和视频非线性编辑处理。Gstreamer应用非常广泛,大多数手机平台及个人电脑Linux平台均采用Gstreamer进行音视频处理开发。
2.1Gstreamer音视频处理
2.2Farsight视频会议框架
通过Gstreamer开发库中的基础元件可以完成音视频处理的功能,并且可以进行简单的局域网内视频通信。但是,在视频会议等复杂应用中经常包含多个多媒体会话,而且多媒体会话之间的协调非常复杂,需要通过更为高层的处理框架来实现会话管理的功能。Farsight是以Gstreamer为基础开发的视频会议框架,它能够提供一套完整的为多媒体流协议编写插件的应用程序接口,同时还为用户提供API调用这些插件。即时通信应用程序可以使用Farsight进行音视频会议,而无须担心底层的数据流和NAT穿越的问题。因为Farsight[5]是以Gstre-amer为基础进行开发,所以开发新的元件能够和已有的Gstreamer元件整合,实现完成视频会议功能的多媒体框架。Farsight可以包含多路音视频会话流,包含多个会话参与者,具有强大的音视频会话管理功能。它通过模块化设计为许多即时通信软件提供音视频会议的服务,大大扩展了多媒体处理的功能,并且可以实现更为强大的视频会议功能。目前很多即时通信客户端软件都采用Farsight完成音视频通信。本文以Gstreamer/Farsight音视频处理框架为重点,详述其内部结构及功能实现。
Farsight中包括4个核心概念:会议(Conference)、会话(Session)、参与者(Participant)、流(Stream)。会话参与者是指多媒体数据源,可以是音频或视频等;会话则代表一路音频或视频会话,通常有一个媒体类型和一个输出端;会议则代表一个多媒体会议,可以包含多路会话,并且完成多路会话的协调管理;当参与者加入到会话中,就将多媒体数据引入会话中,使得数据能够流动,从而构成数据流。另外,Farsight实现了网络层的抽象,即将网络抽象为一个发射器对象,当数据流被创建时就会建立发射器对象,然后通过设置发射器参数确定发送的目的地址。实际上,Farsight并没有参与多媒体数据的采集和打包工作,它只是为多媒体数据流传输到网络端进行发送提供了一个通道,并且对通道进行协调管理,保证不同的会话参与者与其特定的数据流绑定以防止收发混淆。
Farsight实现RTP视频会议的结构如图3所示,其中FsRTPConference是Farsight框架下的一种插件,主要的RTP会话管理功能都在这个组件中实现。FsRTPConference中可以同时存在多路FsSession,每一路FsSession因参与者或音媒体源的不同代表不同的多媒体会话。编解码器在双方建立连接前无法确定,只有当通信双方的客户端协商之后,才会根据具体的编解码器名字调用并进行插件的连接。
Farsight通过将gstrtpbin封装到FsRTPConference中,添加一些其他的必要组件,实现RTP会话。RTP管理器主要由gstrtpbin负责完成RTP会话管理的操作。在发送端,视频源和音频源通过Sink接入到会话中,编解码器协商成功后,将编码器与数据源和过滤元件连接,然后通过RTP混合器将音视频数据发送到RTP管理器中,完成RTCP数据包的生成以及RTP会话的管理。最后,经过数据发射器将数据发送到相应的数据通道中。在接收端,数据流同样要经过类似的信息解码过程得到音视频数据。在发送端,数据发射器在Farsight中通常有多种插件选择,例如多播UDP插件、Libnice插件等,目的是为了实现底层数据传输的连接性检查。Libnice是实现了ICE和STUN协议规范的软件库,开发者以此为基础完成nice插件,可以实现基于ICE的数据发送。但是Libnice中只定义了如何在P2P连接确立后进行连接性检查,以及如何在确定的P2P连接上进行数据传输的网络穿越,并没有定义如何进行P2P连接,即P2P通道的协商任务。Jingle协议规范则定义了P2P通道建立连接及通道协商的任务。目前,Jin-gle协议已经在Libpurple(多协议会话开发库)中实现。
3即时通信系统中音视频通信的实现
为了开发的便捷,Pidgin软件的开发者将负责通信部分与图形用户界面部分分开,分离出来的核心代码构成即时通信客户端开发的核心部分,被称为Libpurple。这个程序库已被Adium与Proteus这些客户端使用。完成分离后,开发者将有可能以各自的图形程序库编写自己的客户端接口。在Libpurple中,为实现多媒体通信,开发者将基于Farsight的多媒体处理框架进行继承和封装,实现即时通信协议,并提供接口供用户使用,用户可利用应用程序接口编写程序实现网络层的连接。使用者可以使用Libpur-ple直接编写即时通信程序的核心代码,并构建应用程序。
同时,Libpurple实现了许多即时通信协议的通信,例如MSN,XMPP,AIM等协议,同时完成了媒体后端流处理与相应即时通信协议的协同工作。Libpurple在Farsight的基础上进行开发,实现了一套具备自身特点的流媒体模式。通过对Lipurple库的理解分析[10],得到了Libpurple实现音视频数据流控制及会话管理的方法,如图4所示。图4中Src是音视频数据源,传输到FsSession进行音视频流整合、RTCP包生成、数据流管理等操作。Vol-ume和level则分别表示音频的音量与消息控制插件。Libpurple采用FsSession做会话管理,并在FsSession的基础上添加Gstreamer基础元件进行控制,完成自己需要的功能。FsSession通过选择不同的连接通道,将音视频数据流通过发送器进行发送。