?

一種基于FPGA的地址學習功能的設計

2016-12-05 03:48王輝
光通信技術 2016年5期
關鍵詞:表項以太網數據包

王輝

(中國電子科技集團公司 第三十四研究所,廣西 桂林541004)

一種基于FPGA的地址學習功能的設計

王輝

(中國電子科技集團公司 第三十四研究所,廣西 桂林541004)

當前的綜合傳輸設備中,大多都提供了高速的以太網業務接口,能夠直接實現以太網業務的傳輸。但是,這些傳輸設備無法實現以太網數據包的地址學習功能,給傳輸設備和交換設備的組網帶來了一定的影響。文章中提出了一種基于FPG A的地址學習功能的設計,以解決對數據包的源m ac地址進行學習和管理。給出了電路原理,詳細介紹了硬件接口模塊和地址學習模塊中的各模塊功能,并進行了應用驗證。

FPG A;M A C地址;老化

0 引言

當前,傳輸設備的地址學習功能大多出現在交換設備上。交換設備能夠自動學習到達設備端口的以太網數據包的源MAC地址,有利于對數據包的快速轉發[1,2]。傳輸設備一般只提供物理接口,只對數據進行透明傳輸,不提供源MAC地址的學習功能。當傳輸設備和交換設備組網時,需要傳輸設備實時學習和記錄接入到傳輸設備的終端設備(如PC)的MAC地址,并能夠適時發送免費的ARP學習包,使得交換設備能夠及時更新其與傳輸設備相連的端口上的MAC地址表。為了實現上述功能,本文在傳統傳輸設備的基礎上,采用FPGA[3]的方式,實現了傳輸設備對接入終端設備的源MAC地址的學習和管理功能[4]。

1 電路原理

設計時,我們在傳輸設備以太網板的物理層芯片和映射芯片之間增加了一塊FPGA芯片,用來處理收到的數據包,對數據包中的MAC地址進行學習和管理。電路原理如圖1所示。FPGA芯片提供了1個CPU接口和2個GMII接口。CPU接口用于連接CPU芯片,2個GMII接口分別用于連接以太網物理層芯片和以太網映射芯片。

圖1 電路原理示意圖

一方面,FPGA截獲從端口1收到的所有的數據包,并獲取數據包的源MAC地址,建立端口1的MAC表項(包含MAC地址、IP地址);另一方面,FPGA還能夠接收CPU的指令,適時的從端口2發出以端口1的MAC表項構成的免費的ARP包以利于其他設備快速更新其MAC表項。

2 硬件接口模塊功能

2.1CPU接口模塊

FPGA提供的CPU接口外部采用地址/數據并行總線接口形式,內部設置了一系列的寄存器。CPU芯片可以通過CPU接口對FPGA提供的內部寄存器進行讀寫,實現CPU對FPGA的功能模塊的控制管理。CPU芯片對FPGA的主要控制功能有:MAC地址學習功能的開啟和關閉;MAC地址老化時間的設置;MAC地址學習包代理轉發功能(傳輸設備代替接入端口1的終端設備向端口2轉發免費的ARP學習包)的開啟和關閉;免費的ARP包的發包頻率的設置。

2.2GMII接口功能

FPGA的端口1和端口2都是GMII接口,只支持1000Mb/s的速率。FPGA將端口1的GMII信號和端口2的GMII信號通過FIFO轉換時鐘域,實現物理層和以太網映射芯片之間業務的透傳功能。

3 地址學習內部模塊功能

3.1以太網數據包地址學習功能

以太網數據包地址學習功能是指FPGA學習從端口1進來IPv4包(非WLAN)的源MAC地址和源IP地址,然后將MAC地址和IP地址送入以太網地址管理器進行比較和保存。

以太網數據包地址學習功能的FPGA邏輯流程圖如圖2所示。當端口有數據包到達時,FPGA對數據包的字節進行計數。首先,存下數據包的源MAC地址 (第15到第20字節)。然后,存下以太網包類型(第21和22字節)并判斷是否為IP包。如果是IP包,則存下IP包的源IP地址(第35到第38字節);如果不是IP包,則結束本次存入過程,等待下一個數據包。最后把源MAC和IP地址送入地址管理器進行比較和保存。

圖2 以太網數據包地址學習邏輯流程圖

3.2以太網地址管理功能

圖3為地址管理器示意圖。FPGA提供了以太網地址管理功能,包括一個128個地址的雙端口RAM、一個內容地址查找表(Contend Address Memory,CAM)、一個RAM和CAM寫入模塊、一個RAM存入接口模塊、一個RAM讀取接口模塊和一個RAM地址狀態管理模塊。

圖3 地址管理器示意圖

各個模塊的功能如下:

⑴一個128個地址的雙端口RAM。用來存儲學習到的源MAC地址表項。

⑵一個CAM。用于比較以太網包的源地址表項是否已經存在于CAM內。

⑶RAM、CAM寫入模塊。用于將RAM存入接口保存的以太網地址寫入RAM和CAM。

⑷RAM存入接口模塊。邏輯流程圖如圖4所示。首先,地址學習模塊獲取數據包的源地址并將這些地址送入RAM存入接口模塊;然后,RAM存入接口模塊緩存這些以太網地址,同時將該地址送入CAM中;最后,CAM查找CAM內部是否有相同的MAC地址。如果CAM內部已經存在相同的MAC地址,則終止本次存入,并產生MAC地址更新信號通知RAM地址狀態管理模塊更新此MAC地址表項。如果CAM內沒有此MAC地址,RAM存入接口模塊查詢RAM地址狀態管理模塊是否有未使用的RAM地址。如果沒有空閑RAM地址,地址管理器將丟棄該以太網地址;如果有空閑RAM地址,則RAM、CAM寫入模塊將該MAC地址表項寫入RAM內空閑地址中數值最小的地址內,并告訴RAM地址管理模塊該RAM地址被使用,結束本次存入。

⑸RAM讀取接口模塊邏輯流程圖如圖5所示。RAM讀取接口模塊內部設計了一個狀態機,可以將RAM中的存儲的MAC表項按照RAM地址從小到大的順序依次讀取出來。狀態機持續地檢查RAM地址狀態管理模塊給出的RAM地址使用狀態,從RAM中已經使用的地址中最小的地址開始預讀取一個MAC表項。當代理轉發模塊請求MAC表項時,RAM讀取接口模塊直接將預讀取的MAC表項發送給代理轉發模塊,接著馬上去讀取RAM中下一個的MAC地址表項,直至不再收到代理轉發模塊的請求。

圖4 RAM存入接口模塊邏輯流程圖

⑹RAM地址狀態管理模塊,由128個RAM地址老化管理模塊組成,用于管理128個RAM地址的使用及老化狀態。邏輯流程圖如圖6所示。系統剛上電時RAM地址的使用狀態默認設置為未使用 (數值為‘0’),老化計數器清零。當RAM的地址狀態為“0”時,老化計數器為零且處于不計時狀態;當RAM的地址狀態為“1”時,老化計數器處于計時狀態(時間遞增)。有2種情況會使對應的RAM地址的老化計數器清零,并開始計時。第一種情況,有新的MAC表項被寫入到RAM中;第二種情況,RAM中原本存在的MAC表項進行了更新。當老化計數器遞增到設定的值(默老化時間300s)時,地址保護模塊會從源端口發出一個以該MAC表項為目的地址的ARP請求包,詢問該MAC地址所在的主機是否存在。如果不存在,則通知RAM地址狀態管理器將該RAM地址設置為未使用(即,清除此MAC表項),并清零老化計數器;如果存在,則將該地址老化計數器重新開始計時。

圖5 RAM讀取接口模塊邏輯流程圖

圖6 RAM地址使用及老化狀態管理模塊邏輯流程圖

3.3MAC地址學習包代理轉發功能說明

MAC地址學習包代理轉發功能開啟后,SDH設備主動模擬接入SDH設備的主機發送免費的arp包,從而更新后端網絡設備的MAC表項。此功能使得傳輸設備與其它設備MAC表項的更新狀態保持一致,提高了整個網絡的穩定性。

4 應用驗證

實際應用中網絡如圖7所示,網絡由前端交換網絡、后端交換網絡和SDH傳輸網絡組成。前后端的交換網絡通過SDH傳輸網絡實現前后端的數據交換。SDH網絡可以根據與交換網絡的鏈路情況選擇一條傳輸路徑連接交換網絡。傳輸網絡中SDHA-SDHD為SDH傳輸設備,后端交換網絡SW1和SW2為三層交換機。正常情況下前后端交換網絡通過路徑①③進行數據交換。當鏈路③故障時,傳輸路徑自動切換為①④。后端網絡SW1和SW2互為主備熱備方式。PC2為雙網卡終端,能夠實現主備網卡的切換。此網絡拓撲設計為能夠實現網絡故障的快速保護。

圖7 實際應用網絡圖

正常通信時,PC1能夠收到PC2的單向數據包(此時PC1無任何數據包發出)。但是當鏈路③故障時,PC1長達幾分鐘的時間收不到PC2發送的數據包。此情況不符合此冗余網絡能夠快速保護業務的初衷。排查原因發現:鏈路③故障時,SW2沒有及時更新PC1的MAC地址導致了此情況的發生。正常通信時(路徑①③),PC1發送ARP學習包,則SW2的端口4學習到了PC1的MAC地址。當鏈路③故障時,SDH網絡切換到路徑①④。由于沒有從PC1到PC2的包,因此SW2的端口2上沒有PC1的MAC地址。當PC2到PC1的單向包被發送到SW2時,SW2發現PC1和PC2的MAC地址都在端口4上,因此,數據不可能從端口2轉發出去,PC1無法收到PC2的數據,直到SW2的端口2上學習到PC1的MAC地址,通信才能恢復。主要取決于端口2上學習到PC1的MAC地址。

如果SDH網絡具有地址學習功能,則當SDH網絡由路徑①③切換到路徑①④時,SDH設備同時開啟了MAC保護功能,代替PC1向后端網絡發送學習包,此時SW2能夠通過路徑①④迅速學習到PC1的MAC地址,實現交換通道的快速建立,從而實現整個網絡的快速切換。因此,增加了地址學習功能的SDH設備能夠很好地和交換網絡互聯,實現網絡的快速切換。

5 結束語

以上,我們采用FPGA的方式,實現了傳輸設備對接入終端設備的源MAC地址的學習和管理功能。通過實際的網絡驗證可知,增加了地址學習功能的SDH傳輸網絡能夠很好地與交換網絡互相配合,共同實現整個網絡的功能。因此,此功能行之有效,能夠很好地解決SDH網絡和交換網絡互聯時引入的地址學習的問題。

[1]程明坤,趙翠華,江云霞.淺釋交換機的MAC地址學習的過程及應用[J].數字技術與應用,2012(7):218-218

[2]蔣友,羅惠瓊.二層交換機中MAC地址的學習、查找和老化方法[J].軟件導刊,2005(20):40-42.

[3]云創工作室.Verilog HDL程序設計與實踐[M].北京:人民郵電出版社,2005.

[4]于翔,鄭力明,黃紅斌.基于FPGA的MAC層地址表設計與仿真[J].計算機工程與設計,2013(1):121-125.

Address learning function design based on FPGA

WANG Hui
(The 34th Research Institute of CETC,Guilin Guangxi 541004,China)

Current integrated transmission equipments mostly provide high-speed Ethernet interface and realize Ethernet business transmission directly.These transmission equipments,however,could not realize the function of address learning for Ethernet packets,which brings a certain influence to the group network of transmission equipment and switching equipment.In the paper,a design of address learning function based on FPGA is proposed to solve the problem of learning and managing the source MAC address of the data packets. The principle of the circuit is given,the function of each module in the hardware interface module and the address learning module is introduced in detail,and the application verification is carried out.

FPGA,MAC address,aging

TN914.332

A

1002-5561(2016)05-0032-04

10.13921/j.cnki.issn1002-5561.2016.05.010

2016-01-11。

王輝(1981-),男,碩士,工程師,主要從事光通信和網絡交換方面的工作。

猜你喜歡
表項以太網數據包
一種改進的TCAM路由表項管理算法及實現
二維隱蔽時間信道構建的研究*
民用飛機飛行模擬機數據包試飛任務優化結合方法研究
基于1500以太網養豬場的智能飼喂控制系統的設計與實現
基于ARMA模型預測的交換機流表更新算法
SmartSniff
SDN數據中心網絡基于流表項轉換的流表調度優化
談實時以太網EtherCAT技術在變電站自動化中的應用
淺談EPON與工業以太網在貴遵高速公路中的應用
萬兆以太網在連徐高速公路通信系統改造中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合