陳玉霞,程友清,劉 瓊,蘇 毅(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傳輸的可靠性及準確性。
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.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確認包,并發出去。
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模擬收發包截圖
文中基于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—),女,四川瀘州人,碩士研究生,軟件工程師。研究方向:數字通信。