本发明有关于智能网关测速系统,特别是有关于一种硬件辅助测速系统。
背景技术:
网关(gateway)是用于电信网络的网络硬件,其允许数据(data)自一离散网络移动至另一离散网络。网关扮演“不相似网络”,例如局域网(localareanetwork,lan)及广域网(wideareanetwork,wan)等不同层次的网络的共同接入点。网关使用多个协议进行通信,并可操作于开放式系统互联通信参考模型(opensystemsinterconnectionmodel,osi模型)的七层的任何一层。
osi模型的七层分别是:应用层(applicationlayer)、表达层(presentationlayer)、会话层(sessionlayer)、传输层(transportlayer)、网络层(networklayer)、数据链路层(datalinklayer)、及物理层(physicallayer)。其中,传输层会将传输表头加入数据,以形成数据包;传输表头包括例如传输控制协议(transmissioncontrolprotocol,tcp)信息。网络层提供数据的寻址及路由,会将网络表头加至数据包,以形成分组;网络表头包括例如互联网协议(internetprotocol,ip)信息。数据链路层在两个网络之间管理数据链路的建立、维持、及释放,其又分为二子层:逻辑链路控制(logicallinkcontrol,llc)子层及介质访问控制(mediaaccesscontrol,mac)子层。
tcp/ip协议族则将osi模型的七层简化为应用层、传输层、网络互连层(internetlayer)、及网络接口层(linklayer)。
图1显示智能网关测速的组网环境示意图。
典型地,智能网关51通过互联网52通信于服务器53。智能网关测速是指对于网关的wan侧的带宽(bandwidth)大小进行测速的功能。目前,这种功能都实现于osi模型的应用层。测速应用程序,无论是接收或发送报文(message),都会经过完整的网络协议栈(protocolstack)。网络协议栈的主要工作包括:与wan侧的服务器,以传输控制协议完成握手;与wan侧的服务器完成超文本传输协议(hypertexttransferprotocol,http)交互、及与wan侧的服务器完成数据交互。
以在测速应用程序上行发送报文为例,诚如前述,osi模型(或tcp/ip协议族)的一层或多层会将各自的信息写入报文(数据包):应用层会写入部分数据,tcp层会完成其tcp头的构造,ip层会完成其ip头的构造,而mac层会完成报文mac头的构造。最终,构造完成的报文,通过驱动发送至硬件,再由硬件发送出去。
目前,无源光纤网络(passiveopticalnetwork,pon)得到普遍应用。1gpon智能网关的上下行最大带宽可达到1000mbps。国内运行商测试规范要求测速结果必须达到最大带宽的90%以上,也即900mbps+。
典型地,可使用软件实现整个报文收发的测速,但其效率较低,且会占用较多的cpu资源,其下载测速结果可达到900mbps+,但上传速率却只有200mbps+。
由此可见,确实有必要提出一种改良方案,以提升智能网关测速的效率。
技术实现要素:
有鉴于此,本发明提供一种硬件辅助测速系统,其包括硬件辅助测速模块(以下简称为“hw_nat模块”或“硬件”),可对报文进行网络地址转换(networkaddresstranslation,nat)的转发,可修改mac、ip、或端口号(portnumber)等信息,并可对报文计算ip层、tcp层、udp层各自的校验和(checksum)。本发明的测速辅助系统实现在芯片中。
因此,根据本发明的一种观点所提供的硬件辅助测速系统包括一硬件辅助测速模块(hw_nat模块),其组态成执行一硬件辅助测速步骤集,该硬件辅助测速步骤集包括步骤s1:计算一报文的一互联网协议(ip)层校验和及一传输控制协议(tcp)层校验和。
可选地或优选地,该硬件辅助测速步骤集还包括步骤s2:将一真实介质访问控制(mac)层信息写入该报文。
可选地或优选地,该硬件辅助测速步骤集还包括步骤s3:将一点对点协议(point-to-pointprotocol,ppp)信息及一虚拟区域(virtuallocalareanetwork,vlan)信息写入该报文。
可选地或优选地,该硬件辅助测速步骤集还包括步骤s4:将一传输容器(transmissioncontainer,tcont)信息及一吉比特无源光纤网络封装模端口(gigabitpassiveopticalnetworkencapsulationmodeport,gemport)信息写入该报文。
可选地或优选地,该硬件辅助测速步骤集还包括步骤s5:将该报文发送出去。
可选地或优选地,本发明的硬件辅助测速系统还包括一处理器,其组态成以一测速软件执行一软件测试步骤集,该软件测试步骤集包括:
步骤p1:向一存储器申请一报文空间以存储该报文;
步骤p2:将数据写入该报文;
步骤p3:将一tcp头信息写入该报文,但省略计算一tcp层校验和;及
步骤p4:将一ip头信息写入该报文,但省略计算一ip层校验和。
可选地或优选地,该软件测试步骤集还包括步骤p5:将一虚假mac层信息写入该报文。
可选地或优选地,该软件测试步骤集还包括步骤p6:将该报文发送至一驱动,例如,一直接存储器访问(directmemoryaccess,dma)驱动。
通常,该软件测试步骤集执行于该硬件辅助测速步骤集前。
再者,为了进一步提升至能测速功能的上行性能,测速功能的实现可从应用层移植至驱动层,以避免报文在协议栈之间层层转发而造成效率低下的现象。
对此,可选地或优选地,该软件测试步骤集执行于一网络接口层的一驱动层。
此外,为了借助硬件实现报文组装的部分工作,还需要在报文交互的开始阶段,对硬件配置正确的信息,才可使硬件正确地工作。也即,软件与硬件之间需要先行配合。
对此,可选地或优选地,本发明的硬件辅助测速系统还组态成执行一配合步骤集,该配合步骤集包括:
步骤q1:由该测速软件将该报文发送到该硬件辅助测速模块;
步骤q2:由该硬件辅助测速模块计算该报文的一校验值,并将该校验值写入该报文的一校验值位置;及
步骤q3:判断该硬件辅助测速模块是否设定有一个或多个配置信息;经过判断,若尚未设定有任何配置信息,则将该报文送回该测速软件。
可选地或优选地,该配合步骤集还包括步骤q4:由该测速软件接收该硬件辅助测速模块送回的该报文,填写一个或多个配置信息。其中,该一个或多个配置信息包括一mac头信息、一ppp信息、一vlan信息、一tcont信息、及一gemport信息。
可选地或优选地,该配合步骤集还包括步骤q5:将该一个或多个配置信息配置于该硬件辅助测速模块。
通过上述配合步骤集,硬件已经配置好正确的信息。其后,发送的报文是通过软件测试步骤集发送到硬件,而硬件则通过硬件辅助测速步骤集,完成报文的所有信息,并直接发送出去。
对此,可选地或优选地,该配合步骤集还包括步骤q6:经过判断,若设定有正确的(也即预定的)一个或多个配置信息,则完成该报文的剩余信息,并将该报文发送出去。
综上所述,本发明借助硬件辅助软件,完成智能测速功能的上行报文的组装和发送的工作。其一优点在于,可避免占用cpu资源,降低cpu使用率。其另一优点在于,可提升上行(上传)效能。本发明所提供的硬件辅助测速效能的带宽可达到930mbps,比起现有纯软件测速效能的带宽为250mbps,性能提升270%。其又一优点在于:确实已满足国内运行商测试规范的要求。
附图说明
图1显示智能网关测速的组网环境示意图。
图2显示一实施例的纯软件测速方法。
图3显示本发明一实施例的硬件辅助测速系统。
图4显示本发明一实施例的硬件辅助测速系统所执行的包括硬件辅助测速步骤集的多个步骤的流程图。
图5显示本发明一实施例的硬件辅助测速系统所执行的包括配合步骤集的多个步骤的流程图。
【附图标记】
1硬件辅助测速系统
10硬件辅助测速模块
20处理器
30存储器
40驱动
51智能网关
52互联网
53服务器
s1~s5步骤
t1~t8步骤
p1~p6步骤
q1~q6步骤
具体实施方式
以下提供本发明的不同实施例。这些实施例用于说明本发明的技术内容,而非用于限制本发明的权利范围。可对本发明的特征进行修饰、变化、组合、分离、置换、或转用,而实现其他实施例。
在本发明中,所谓的“系统”、“设备”、“装置”、“模块”、或“单元”等用语,是指一电子元件或由多个电子元件所组成的一数字电路、一模拟电路、或其他更广义的电路,且除了特别指明之外,它们不必然有阶层或从属关系。
此外,本发明的方法、或其中的步骤或手段可以任何所需及适合方式来实现。例如,它们可实现于硬件或软件。除了特别指明之外,本发明的多种功能性元件、层级及手段可包括一处理器、一控制器、一功能性单元、一电路、一程序逻辑、或一微处理器的设置等,可操作成执行这些功能。可能存在一专用的硬件元件和/或可程序硬件元件,可组态成以所需及适合方式来操作。
图2显示一实施例的纯软件测速方法。
典型地,该普测速方法是纯粹由一软件所执行。该纯软件测速方法在处理上行发送报文时,必须完成以下工作:
步骤t1:申请一报文空间;
步骤t2:将数据写入该报文;
步骤t3:将一tcp信息写入该报文,并计算其校验和;
步骤t4:将一ip信息写入该报文,并计算其校验和;
步骤t5:将一mac信息写入该报文;
步骤t6:根据wan侧的一拨号信息,将对应的一ppp信息及一vlan信息写入该报文;
步骤t7:查找对应的一tcont信息及一gemport信息;
步骤t8:将该报文发送到一驱动;及
步骤t9:将该报文发送到一硬件。
在该纯软件测速方法中,由于报文的组装及发送都是由cpu完成,将占用大量cpu资源。此外,报文必须从应用层到硬件层,层层传递,造成效率低下。
图3显示本发明一实施例的硬件辅助测速系统1。
该硬件辅助测速系统1至少包括一硬件辅助测速模块10。然而,典型地,该硬件辅助测速系统1可还包括一处理器20、一存储器30、和/或一驱动40,适合于配合(例如,通信连接至)该硬件辅助测速模块10。该处理器20、该存储器30、和/或该驱动30可用于实现与该硬件辅助测速模块10配合的一测速软件。本发明的测速辅助系统1,特别是该硬件辅助测速模块10,实现在一芯片100中,该芯片100可独立于该处理器20、该存储器30、和/或该驱动30。
图4显示本发明一实施例的硬件辅助测速系统1所执行的包括硬件辅助测速步骤集的多个步骤的流程图。
具体而言,本发明的硬件辅助测速系统1的该硬件辅助测速模块10组态成执行一硬件辅助测速步骤集(步骤s系列),该硬件辅助测速步骤集主要包括下列多个步骤;这些步骤不必然全部执行,而可依照实际应用来执行这些步骤的一个或多个:
步骤s1:计算一报文的一ip层校验和及一传输控制协议tcp层校验和;
步骤s2:将一真实mac层信息写入该报文;
步骤s3:将一ppp信息及一vlan信息写入该报文;
步骤s4:将一tcont信息及一gemport信息写入该报文;及
步骤s5:将该报文发送出去。
通常,在该硬件辅助测速步骤集(步骤s系列)前,会先执行一软件测试步骤集(步骤p系列)。该软件测试步骤集由该硬件辅助测速系统1的该处理器20所执行。该软件测试步骤集包括下列多个步骤;这些步骤不必然全部执行,而可依照实际应用来执行这些步骤的一个或多个,特别是,该软件测试步骤集所提供的一个或多个信息对应于该硬件辅助测速步骤集所需要的一个或多个信息:
步骤p1:向一存储器30申请一报文空间以存储该报文;
步骤p2:将数据写入该报文;
步骤p3:将一tcp头信息写入该报文,但省略计算一tcp层校验和;
步骤p4:将一ip头信息写入该报文,但省略计算一ip层校验和;
步骤p5:将一虚假mac层信息写入该报文;及
步骤p6:将该报文发送至一驱动40,例如,一dma驱动。
因而,在后续会执行的步骤s系列中,该硬件辅助测速系统1通过该驱动40接收各个信息。
再者,为了进一步提升至能测速功能的上行性能,测速功能的实现可从应用层移植至驱动层,以避免报文在协议栈之间层层转发而造成效率低下的现象。
对此,可选地或优选地,该软件测试步骤集执行于一网络接口层的一驱动层。
图5显示本发明一实施例的硬件辅助测速系统1所执行的包括配合步骤集的多个步骤的流程图。
为了借助硬件实现报文组装的部分工作,还需要在报文交互的开始阶段,对硬件配置正确的信息,才可使硬件正确地工作。也即,软件与硬件之间需要先行配合。对此,本发明的硬件辅助测速系统1还组态成执行一配合步骤集(步骤q系列)。该配合步骤集执行于步骤p1、p3、p4、及p5后,因为在报文交互的开始阶段,尚未填写数据,故可略过步骤p2。
该配合步骤集包括下列多个步骤;这些步骤不必然全部执行,而可依照实际应用来执行这些步骤的一个或多个:
步骤q1:由该测速软件将该报文发送到该硬件辅助测速模块10;
步骤q2:由该硬件辅助测速模块10计算该报文的一校验值,并将该校验值写入该报文的一校验值位置;
步骤q3:判断该硬件辅助测速模块10是否设定有一个或多个配置信息;若尚未设定有任何配置信息,则将该报文送回该测速软件;其中,如图5所示,标记有“是”的另一路径通往步骤q5;
步骤q4:由该测速软件接收该硬件辅助测速模10块送回的该报文,填写一个或多个配置信息;其中,该一个或多个配置信息包括一mac头信息、一ppp信息、一vlan信息、一tcont信息、及一gemport信息;及
步骤q5:将该一个或多个配置信息配置于该硬件辅助测速模块10。
通过上述配合步骤集,硬件已经配置好正确的信息。其后,发送的报文通过软件测试步骤集发送到硬件,而硬件则通过硬件辅助测速步骤集完成报文的所有信息(s系列,只示意性地显示计算校验和),并直接发送出去;也即,进入硬件mac。
对此,如图5所示,在步骤q3处,标记有“是”的另一路径通往步骤q6:经过判断,若设定有正确的(也即预定的)一个或多个配置信息,则完成该报文的剩余信息,并将该报文发送出去;也即,进入硬件mac。
(本发明的一实施例的命令)
作为示例性而非限定性的例子,提供本发明的一部分的上行测速命令,以供参考,如下:
echo″reset″>/proc/tc3162/speed_test
其意义为初始化测速软件。
echo″ppp″>/proc/tc3162/speed_test
其意义为设定拨号方式为ppp拨号。
echo″wandev=ppp0″>/proc/tc3162/speed_test
其意义为设定拨号的设备名。
echo″gateway=192.168.50.1″>/proc/tc3162/speed_test
其意义为设定网关地址。
echo″mask=255.255.255.255″>/proc/tc3162/speed_test
其意义为设定子网掩码。
echo″destip=192.168.40.200″>/proc/tc3162/speed_test
其意义为设定服务器地址。
echo″destport=80″>/proc/tc3162/speed_test
其意义为设定目的端口号。
echo″host=192.168.40.200:80″>/proc/tc3162/speed_test
其意义为设定主机名称。
echo″action=post/100m192.168.40.2008010000000000″>/proc/tc3162/speed_test
其意义为设定上传测速。
cat/proc/tc3162/speed_test
其意义为读取测速结果。
利用本发明所得到的测速结果显示,在最大带宽可达到1000mbps的环境下,本发明所提供的硬件辅助测速效能的上传带宽可达到900mbps以上,特别是,930mbps以上,比起现有纯软件测速效能的带宽为250mbps,性能提升270%。由此可见,利用本发明所得到的测试结果业已满足国内运行商测试规范的要求。
尽管本发明已通过上述实施例加以说明,但可理解的是,在不悖离本发明精神及权利要求保护范围的情况下,可进行许多其他修饰及变化而实现其他实施例。