EVB技术中ECP协议的实现及改进
2016-09-26陈玉霞程友清武汉邮电科学研究院湖北武汉430074武汉烽火网络有限责任公司湖北武汉430074
陈玉霞,程友清,刘 琼,苏 毅(1.武汉邮电科学研究院 湖北 武汉 430074;.武汉烽火网络有限责任公司 湖北 武汉 430074)
EVB技术中ECP协议的实现及改进
陈玉霞1,2,程友清2,刘 琼2,苏 毅2
(1.武汉邮电科学研究院 湖北 武汉 430074;2.武汉烽火网络有限责任公司 湖北 武汉430074)
为了实现ECP(边缘控制协议)在数据中心EVB(边缘虚拟桥接)技术中对VDP等发现协议的承载功能,本文分析该协议并给出了一种实现方案,能够满足ECP在虚拟终端和实体网桥之间的可靠数据传输,并针对ECP自身在可靠性方面的的不足,采用增加校验位的方法对其进行改进,最后在Linux上进行模拟,能够满足改进需求,可有效提高ECP传输数据的可靠性。
ECP协议;可靠性;传输;校验
为了解决网络边缘虚拟化的问题,将服务器从复杂的网络交换工作中脱离出来,回归到原先的服务应用功能上,转由网络设备本身去实现,提出了一种实现虚拟机网络通讯的方法[1],这就是IEEE802.1Qbg标准所要说明的内容,它指定了一种EVB技术。实现EVB需要一系列协议,其中首先需要能够支持发现和配置VSI(虚拟服务接口),即VDP协议。而ECP是为上层协议报文提供一种带确认机制的可靠传输协议,为服务器和交换机之间传送VDP协议的TLV,所以ECP协议的实现是关系到整个系统顺利建立的基础。为此,文中基于IEEE802.1Qbg标准给出了一种实现方案,并采用增加校验位的方法对ECP的报文进行改进,有效的保证ECP传输的可靠性及准确性。
1 ECP协议介绍
ECP协议类似于IP协议中的TCP协议,是使用缓存重传机制实现可靠传输的一个承载协议,它可以承载其上的任何二层协议ULP,在EVB中,我们以VDP为例。
1.1ECP运作流程
VDP要发送报文时,VDP的报文以TLV形递交给ECP,ECP执行发送过程,直到发送成功或者超过最大重传次数后删除为止,如图1所示。实现过程有以下几步:
图1 ECP协议执行过程图
1)VDP向ECP发起传输请求处理,向ECP传输要发送的数据单元。这些数据单元由一系列的TLV组成。
2)ECP将这一系列的TLV封装到自己的报文格式中,添加上序列号并发送出去,且为该报文启动一个低级响应定时器L-ACK等待回应,同时ECP存储本次发送缓存。
3)接收端ECP收到报文后,存于缓存中,处理还原成原来的TLV,然后交由VDP处理,上层VDP处理完成后确认才将接收缓存清除。
4)接收缓存清除后,接收端向发送端发送一个L-ACK应答。
5)发送端在定时器超时之前收到指定序列号的ACK报文确认,那么清除发送缓存。若发送端等待超时还未收到该ACK确认,那么查看最大重传次数。未超过最大重传次数,那么将重新发送缓存中的报文;若超过最大重传次数,那么清空发送缓存。
1.2ECP报文格式
1)ECP的目的地址使用LLDP协议地址,当在S-Channel上运行时目的地址则使用01-80-C2-00-00-00,源MAC地址为发送端MAC地址。
2)ECP的EtherType在协议中暂未确定,待定。
3)ECP版本号Version取0x01[2]。
4)操作类型(Operation Type)在取值为0x00时表示数据报文发送(ECP request),在取值为0x01时表示ECP的ACK (ECP acknowledgement)。
5)子类型(Subtype)在取值为0x0001时表示VDP协议[3]。在ACK报文中可以忽略。
6)序列号(Sequence Number)对报文进行标识,在初始发送时为一随机数,以后每次发送后加一。
7)ULPDU即ECP承载的上层报文内容,本文中用VDP表示。
图2 ECP报文格式
2 ECP的实现方案
2.1实现设计方案
程序设计分为发送端和接收端。发送端上层触发,递交VDP-TLVs给ECP,ECP收到后将VDP-TLVs封装到自己的报文中成为ECPDU并发送出去;然后等待接收ACK确认。如果ACK超时定时器超时都没有收到对端的收包ACK确认,则查看重发计数器;如果计数器没有超过最大重传次数(retries<maxRetries),则将发包缓存中的发送报文重发,并重启ACK超时定时器。如果已经达到最大重传次数 (retries= maxRetries),则发包状态机将记录重发ECPDU报文的总次数,最后清空发包缓存,回到等待状态。
接收端接收ECPDU报文,并解析包。首先根据报文字段中的Sequence Number判断是否与上次接收的报文相同,如果相同则为重发报文,给发送端回应一个ACK确认包;如果不相同,那么说明是新的ECPDU并交给上层处理,然后发送ACK确认给发送端。流程图如图3所示。
2.2实现数据及函数
实现本协议用到的一些数据如下(未全列出)。
maxRetries:发送端可重发的最大次数,默认值为3。
seqSendECPDU:当前发送ECP请求报文的序号。
图3 ECP发送端和接收端流程图
seqRecvECPDU:最近一次收到的ECP请求报文的序号。
lastRecvSeq:用于记录前一个收到的ECPDU报文的序号。
retries:当前ECPDU报文重传次数。
requestReceived:上层协议发送报文时设置为TRUE;发包请求处理完毕后设置为FALSE。
ackTimerout:ECP的ACK定时器默认超出时间。
ackTimflg:ACK超时标志,超时ackTimflg=TRUE;未超时ackTimflg=FALSE。
ackReceived:收到ACK报文时置为TRUE;ACK报文处理完毕后由发包状态机置为FALSE。
ecpduReceived:是否收到了 ECPDU报文;收到请求ECPDU时置为TRUE;ECPDU处理完毕并回复ACK报文后由收包状态机置为FALSE。
发送端发送程序如下:
ecpSend_Initialize()函数,收端进行一系列的初始化动作,包括初始化状态,发送次数,最大传送次数等变量。
ecpSend_Pkt()函数,将上层数据封装到ECP报文中并发送出去。
ecpSend_AckTimer()函数,定时器设置。
ecpSend_RecvProcess()函数,收到ACK包处理。
ecpSend_Cache()函数,保存缓存。
接收端程序如下:
ecpRecv_PktProcess()函数,收到包并进行处理并判断是否为新ECPDU。
ecpRecv_Bind()函数,回调函数,即交由上层处理数据动作。
ecpRecv_AckSend()函数,组ACK确认包,并发出去。
3 对ECP的改进方案
ECP协议是实现VDP等发现协议的一个基础协议,它承载上层协议如VDP,为VDP提供可靠传输的,采用发送缓存重传机制实现。ECP类似于TCP,与TCP不同的是,它是一个二层协议,且缓存重传机制比较简单,没有TCP那么高要求的可靠性。
虽说ECP可以重传,且尽量保证送到,但是准确性却完全未知,因为它没有校验字段,不能检验报文正确性。虽然ECP不需要像TCP那么高的准确性,但是送到接收端是可能出错的,将错误的信息交由上层VDP处理,VDP根据包信息处理一些错误的数据,并用错误的信息工作,从而导致资源浪费及整个边缘交换机工作效率的降低。例如当有外来攻击时,交换机端收到连续不断的连接请求,事实上服务器端并未发包,因为没有一个检验的判断,判断是否收到正确的报文,交换机端会不停的处理这一系列的恶意包,从而使系统崩溃,导致严重的后果。
图4 改进的ECP报文格式
如图4所示,在填充VDP数据之前,加上一个校验字段。发送时封装为这种带校验字的包,收到后也在接收端进行校验的,用来检验包发送的完整性[4],准确性。若收到错误包,则清除收到缓存,不做处理;正确时再进行进一步的处理。
具体过程如下,首先在发端把校验和字段置为0。然后,对ECP首部中每个16bit进行二进制反码求和 (整个首部看成是由一串16bit的字组成),结果存在检验和字段中。收端收到包后,同样对首部中每个16bit进行二进制反码的求和[5]。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的应该为全1。如果结果不是全1,即校验和发生错误[6],那么丢弃收到的包。
实现方面只需要加上校验和算法就好。本文采用原始套接字,自定义协议类型进行组包,并在linux下进行测试,最后可以成功发包;对于接收端,采用同样的方式解析包,可以成功接收并获得信息,如图5是模拟一个ECP带校验字的收发包。
图5 ECP模拟收发包截图
4 结束语
文中基于IEEE802.1Qbg实现了ECP协议的传输,针对其不足采用增添校验和的方式提高ECP传送数据时的可靠性,让收端可以判断收到包的正确性,可避免上层因为使用错误包而造成资源的浪费,本研究可用于数据中心EVB交换机的研究与生产中。
[1]锐捷网络.数据中心边缘虚拟交换IEEE 802.1Qbg技术白皮书[EB/OL].(2011-11-21)http://www.ruijie.com.cn/fw/wd/ 2552.
[2]P802.1Qbg/D2.2-2012,IEEE Standard for Local and metropolitan area networks--Media Access Control(MAC)Bridges andVirtual BridgedLocal AreaNetworks--Amendment 21:Edge Virtual Bridging[S].
[3]H3C.新一代数据中心技术专题[EB/OL].(2013-10-11)http: //wenku.baidu.com/view/f9e3cc256c85ec3a87c2c5fe.
[4]徐进.USB3.0数据链路层的设计与验证[D].杭州:杭州电子科技大学,2011.
[5]莫云鹏.DSP系统网络接入技术的研究与实现[D].沈阳:沈阳工业大学,2007.
[6]王国明,吴保奎,栾彦利.基于TCP/IP协议的嵌入式网络打印服务器的实现[J].电子技术应用,2005(4):36-38.
Implementation and improvement of edge control protocol in EVB technology
CHEN Yu-xia1,2,CHENG You-qing2,LIU Qiong2,SU Yi2
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430074,China;2.Wuhan FiberHome Networks Co.,Ltd.,Wuhan 430074,China)
In order to achieve the support function of ECP(Edge Control Protocol)for protocols like VDP(VSI discovery and configuration protocol)in EVB(Edge Virtual Bridging)technology in data center,the paper analyzes the protocol and gives an implementation scheme to meet the reliable data transmission between the virtual terminal and the real bridge,then as for the insufficient reliability of the ECP itself,adopts an method by increasing the check digit to improve and simulates it on Linux,which can meet the demand of improvement and can effectively improve the reliability of ECP to transmit data.
ECP;reliability;transmission;ckeck
TP302
A
1674-6236(2016)11-0081-03
2015-06-29稿件编号:201506241
陈玉霞(1990—),女,四川泸州人,硕士研究生,软件工程师。研究方向:数字通信。