可編程器件在以太網(wǎng)集線(xiàn)器中的應用
1 引言
隨著(zhù)以太網(wǎng)技術(shù)的發(fā)展和成熟,應用范圍日益廣泛。以太網(wǎng)的互聯(lián)技術(shù)也從早期采用專(zhuān)用同軸電纜的總線(xiàn)式網(wǎng)絡(luò )發(fā)展到現在的多層交換機方式。傳輸和交換的效率和可靠性大為提高。在普通的商用網(wǎng)絡(luò )中由于交換機性能高,擴展性強等優(yōu)勢,逐漸成為了以太網(wǎng)互聯(lián)的主流技術(shù),而集線(xiàn)器技術(shù)已經(jīng)基本不再使用,逐漸淡出市場(chǎng)。但是在某些特殊的應用場(chǎng)合需要使用一些特殊的技術(shù),比如網(wǎng)絡(luò )安全方面的數據監測、攻擊檢測、防范等。網(wǎng)絡(luò )系統往往需要將每一個(gè)網(wǎng)絡(luò )端口的數據進(jìn)行收集和分析,如果使用交換機來(lái)完成,需要交換機具有特殊的端口監視能力,勢必導致交換及設計復雜,使用成本高昂。如果使用集線(xiàn)器技術(shù),雖然傳輸交換的效率會(huì )低一些,但是要實(shí)現監測和數據收集將變得很容易。另外,集線(xiàn)器還有傳輸延時(shí)小、響應速度快等特點(diǎn),對于要求實(shí)時(shí)性能的系統而言也是一種優(yōu)勢。目前通用的集線(xiàn)器已基本停產(chǎn),元器件廠(chǎng)商也停止開(kāi)發(fā)有關(guān)元器件,因此有必要采用其它方式來(lái)實(shí)現集線(xiàn)器的功能。本文介紹一種用可編程器件FPGA實(shí)現集線(xiàn)器的原理和方法。
2 集線(xiàn)器工作原理
集線(xiàn)器(Hub)工作于IS0(國際標準化組織)的OSI(開(kāi)放系統互聯(lián))七層模型中的物理層,其實(shí)質(zhì)是一個(gè)多端口的中繼器。主要功能是對接收到的信號進(jìn)行再生放大.以擴大網(wǎng)絡(luò )的傳輸距離。因為以太網(wǎng)遵循"先聽(tīng)后說(shuō)"的CSMA/CD協(xié)議,所以計算機在發(fā)送數據前首先進(jìn)行載波偵聽(tīng)。只有當判定網(wǎng)絡(luò )空閑時(shí),才發(fā)送數據。早期的總線(xiàn)方式就是所有網(wǎng)絡(luò )中的計算機通過(guò)一條有T型分支的同軸電纜互聯(lián)起來(lái),計算機的網(wǎng)絡(luò )接口利用同軸電纜這個(gè)共享的介質(zhì)完成載波偵聽(tīng)和沖突檢測,從而進(jìn)行有效的數據包傳遞。而現在普遍使用的交換機則不需要檢測載波,也不存在共享介質(zhì)沖突等情況。集線(xiàn)器正是利用了以太網(wǎng)共享介質(zhì)這個(gè)特性,實(shí)現數據包的廣播傳遞方式,從而實(shí)現監測、數據收集等功能。雖然集線(xiàn)器可以提供獨立的網(wǎng)絡(luò )接口和通道與計算機連接,但在集線(xiàn)器內部,仍然采用單獨的內部總線(xiàn)作為共享介質(zhì)。當來(lái)至多個(gè)端口數據包同時(shí)出現時(shí)必然產(chǎn)生碰撞和沖突現象。根據沖突檢測的原理,這時(shí)發(fā)生碰撞和沖突的數據包會(huì )丟失,因此,集線(xiàn)器會(huì )強化沖突,使得所有連接在該集線(xiàn)器上的計算機網(wǎng)絡(luò )接口都能正確判斷數據包的沖突,網(wǎng)絡(luò )接口就可以根據一定的規則重發(fā)該數據幀。也是因為如此,集線(xiàn)器的規模一般不能太大,而且網(wǎng)絡(luò )上數據包有效傳輸負載率也不能太高,否則發(fā)生沖突的概率會(huì )大大增加,造成數據多次重發(fā),甚至丟包,影響網(wǎng)絡(luò )的傳輸可靠性。系統設計時(shí)必須要考慮集線(xiàn)器的這些特性。
3 集線(xiàn)器的實(shí)現
3.1 實(shí)現方法
以太網(wǎng)物理層的幀結構包含前導碼、定界符和物理層凈荷,集線(xiàn)器根據前導碼和定界符識別出數據包進(jìn)行處理。目前通用的以太網(wǎng)物理層收發(fā)器技術(shù)已經(jīng)非常成熟。以100M以太網(wǎng)物理層接口器件為例,可以提供MII以及RMII等接口與數據包處理電路相連。因此,本文以RMII接口為例對集線(xiàn)器實(shí)現原理進(jìn)行闡述。集線(xiàn)器要實(shí)現的功能主要有數據接收、沖突檢測、沖突加強、數據廣播。
數據接收功能主要實(shí)現從各端口接收到的CRS_DV和RXD中提取出有效的數據包,如圖1所示,提取的依據是在接收到的CRS_DV有效并且RXD未發(fā)生載波錯誤的前提下,前導碼和SFD(定界符)以后的數據為有效的凈荷數據。由于集線(xiàn)器對接收的數據不作改變,直接再生后轉發(fā),所以數據存儲只需幾個(gè)時(shí)鐘周期,便于后續處理電路判斷和轉發(fā)。
沖突檢測是根據各端口的數據包是否同時(shí)到達作為判定依據的,若兩個(gè)或兩個(gè)以上的端口有數據包同時(shí)到達,則被認為發(fā)生了數據包沖突,集線(xiàn)器對沖突的反應是加強沖突,亦即在檢測到?jīng)_突期間向所有端口發(fā)送強化沖突包,若沖突依然存在,則間隔960ns后繼續加強沖突,直到?jīng)_突消失。在發(fā)送加強的沖突信號期間應保證其完整性,即使沖突加強期間,檢測到?jīng)_突消失,也要把加強的沖突信號發(fā)送完畢。
數據廣播是將某個(gè)端口收到的數據向其它的所有端口發(fā)送,這是集線(xiàn)器的基本功能,也是集線(xiàn)器在各個(gè)端口之間轉發(fā)數據包的唯一工作方式。如圖2所示,TX_EN是發(fā)送使能,TXD是發(fā)送數據。發(fā)出的數據包含前導碼、定界符和凈荷數據。
另外,如果FPGA規模允許,設計上還可以在可編程芯片中實(shí)現物理層功能,由FPGA處理信號電平變換、時(shí)鐘提取、數據編解碼等功能,進(jìn)一步提高系統的集成度和可靠性。
3.2 仿真波形
本文中設計的集線(xiàn)器是多端口的,可編程器件實(shí)現完成后進(jìn)行了模擬仿真,圖3是無(wú)沖突的情況的仿真波形,集線(xiàn)器將收到的端口1的數據轉發(fā)給所有端口,圖中rx_dv_in是端口的載波偵聽(tīng)/數據有效標志,rxd rmii0是端口0的接收數據,tx en 0ut是端口的發(fā)送使能,txd_mii0、txd_rmii2、txd_rmii3是其中3個(gè)端口的發(fā)送數據。此時(shí)沒(méi)有沖突,數據包正常廣播出去。
圖4中集線(xiàn)器同時(shí)收到端口0和端口1的數據的仿真波形圖,數據包發(fā)生沖突,因此沖突檢測標志collision detect置高電平,然后集線(xiàn)器加強沖突collision enhance置高電平.期間向所有端口發(fā)送強化沖突信息、并且接收到的所有數據丟棄,以使端口重新發(fā)送數據。

4 結論
本文中討論的集線(xiàn)器其功能和性能完全滿(mǎn)足系統要求,同時(shí)由于采用了新型的可編程芯片,集線(xiàn)器的體積功耗也大為減少。用可編程芯片實(shí)現集線(xiàn)器,還可以不受傳統專(zhuān)用器件的局限,任意增減端口數量,配置端口類(lèi)型(電纜或者光纖),提高系統集成度,在要求較高的特殊場(chǎng)合有著(zhù)一定的應用價(jià)值。
評論