基于PM3388和FPGA的網絡接口設計
本文根據十接口千兆以太網線路接口卡設計的功能需求和性能需求,按照數據處理流程劃分功能模塊,以PM3388作為鏈路層處理芯片和兩片高性能FPGA作為鏈路層處理芯片完成了系統(tǒng)設計,并給出了具體實現方案。對兩片FPGA控制功能的實現做了重點闡述,對實現難點做了深入的分析。
本文引用地址:http://m.butianyuan.cn/article/79444.htm1 前言
隨著網絡規(guī)模的持續(xù)膨脹和新型網絡應用需求的不斷增長,目前基于IPv4技術的因特網在可擴展性、IP地址空間、安全、服務質量控制、移動性、運營管理和盈利模式等諸多方面面臨著挑戰(zhàn),尤其是地址空間匱乏、可擴展性差等缺陷嚴重制約了因特網的發(fā)展,需要探索新的技術來解決這些問題。IPv6通過采用128位的地址空間替代IPv4的32位地址空間來擴充因特網的地址容量,使得IP地址在可以預見的時期內不再成為限制網絡規(guī)模的一個因素,同時在安全性、服務質量及移動性等方面有了較大的改進,使其成為構建下一代互聯(lián)網絡的最佳選擇。
以太網是當前最基本、最流行的局域網組網技術,為了適應各種新開展的業(yè)務如流視頻等,其速率也在不斷提高。千兆以太網是建立在以太網標準基礎之上的技術,具有高效、高速、高性能的特點,目前的企業(yè)局域網甚至城域網建設都會把千兆以太網技術作為首選的高速網絡技術。為了使支持多協(xié)議的高性能路由器既能連接到骨干、核心路由器,又能連接到本地主機,需要為路由器設計能夠與千兆以太網連接的接口。當前國內各公司推出的路由器和交換機等產品都提供千兆以太網線路接口卡,但端口密度都不高,大多數是單端口或雙端口,少數能夠提供四端口或八端口。為了適應T比特路上數據傳輸的需求,本文設計完成高密度的十接口千兆以太網線路接口卡。
2 網絡接口功能分析
千兆以太網原先是作為一種交換技術設計的,采用光纖作為上行鏈路,用于樓宇之間的連接,之后在服務器的連接和骨干網中,千兆以太網獲得了廣泛應用。目前,千兆以太網已經發(fā)展成為主流網絡技術,大型企業(yè)和中小型企業(yè)在建設企業(yè)局域網時都把千兆以太網技術作為首選的高速網絡技術。千兆以太網技術甚至正在取代ATM技術,逐漸應用到了城域網建設中。
基于千兆以太網的發(fā)展現狀和良好的應用前景,當前國內外研制各種核心路由器和高性能交換機的公司不再滿足于能夠提供低密度(單接口、雙接口等)千兆以太網線路接口卡模塊,紛紛推出或開始研制高密度(四接口、八接口等)的線路接口卡模塊,高密度千兆以太網線路接口卡的研究正在成為一個熱點。但各公司出于技術保密的考慮,公開的高密度千兆線路接口卡的文獻資料很少。經分析,十接口千兆以太網線路接口卡的設計主要存在以下三個難點:
1).多種數據包的分類處理:本文研究的十接口千兆線路接口卡兼容IPv4、IPv6雙協(xié)議棧,需要實現三種二層協(xié)議封裝格式的拆封與封裝處理、兩種三層協(xié)議的查表處理和一種MPLS協(xié)議的處理,在高速環(huán)境下實現多種協(xié)議的正確處理是一個難點;
2).幀重組合路加速功能的實現:需要實現以太網幀的重組、十接口數據合路調度與加速三種功能,這是千兆線路接口卡滿足線速處理功能的關鍵;
3). 十接口數據合路調度功能的實現:需要研究一種具有良好擴展性和時延性能的調度算法,實現高速環(huán)境下十接口數據合路調度的功能。
從功能角度來看, 以太網線路接口主要完成輸入處理、輸出處理和系統(tǒng)維護管理等三種功能。如圖1所示。輸入處理:從千兆以太網上接收編碼數據流,解碼恢復成為以太網幀,再經過地址過濾、完整性校驗、差錯控制、IP地址查表、MAC幀拆封、內部數據格式封裝等處理后送給轉發(fā)處理子系統(tǒng)或板級處理機處理(協(xié)議包)。輸出處理:從端口調度模塊或板級處理機模塊接收數據包或協(xié)議包,經過MAC幀封裝,經過數據編碼等處理后從正確的接口發(fā)送到千兆以太網上。系統(tǒng)維護管理:主要是接受板級處理機的控制命令,對輸入分類表項、ARP表項和鄰居發(fā)現表項進行維護,定時或按照板級處理機的命令將線路接口卡的性能統(tǒng)計信息向板級處理機報告。
圖1 千兆以太網線路接口卡功能示意圖
3 硬件設計與實現
經過對十接口千兆以太網線路接口卡功能和性能需求進行認真分析,按照功能清晰、接口簡單、實現容易的原則,設計了其實現方案,并按照設計方案對千兆以太網線路接口卡進行了子模塊劃分,共分為光電轉換子模塊、MAC層處理子模塊、輸入處理子模塊、輸出處理子模塊、輸入IP地址表子模塊、輸出IP地址表子模塊和協(xié)議報文緩存子模塊等七個子模塊。千兆線路接口卡各子模塊和外部接口關系如圖2所示。
圖 2 十接口千兆以太網線路接口卡模塊結構圖
其中MAC層處理子模塊是千兆線路接口卡設計的核心,選用PMC-Sierra公司的PM3388芯片為MAC層處理芯片, PM3388芯片是目前市場上唯一支持十接口的千兆以太網控制器,其功能特性如下:
十路千兆以太網控制器(同時完成PHY層和MAC層功能);
通過內部十個SERDES接口直接與光電轉換模塊相連。每個SERDES接口兼容IEEE 802.3-2000 PMA(PhysICal Medium Attachment)物理層規(guī)范;
從網絡上接收8B/10B格式碼流,完成數據及時鐘恢復;
每個接口提供多播地址過濾及8個單播地址過濾;
提供標準的IEEE 802.3 以太網幀格式完整性檢驗,并具有過濾功能;
內部提供224K字節(jié)接收FIFO和64K發(fā)送FIFO,可在十路接口上靈活配置;
提供SATURN標準的PL4(POS-PHY Level 4)標準16位LVDS總線接口,速率可達700Mbps;
提供標準IEEE 1149.1 JTAG測試端口;
提供微處理器接口;
提供線路側環(huán)回和系統(tǒng)側環(huán)回的系統(tǒng)級調試功能;
提供豐富的配置及統(tǒng)計寄存器。
PM3388工作流程包括接收處理和發(fā)送處理兩部分。1.接收通路:PM3388從光電轉換子模塊接收串行差分電信號,經過串/并轉換、8B/10B解碼后,進行以太網幀完整性檢驗和地址過濾,
如果該以太網幀無誤,則寫入為該接口分配的PL4模塊中的FIFO,否則丟棄。為了充分利用帶寬,PL4接口把MAC幀劃分為數據片(以64字節(jié)或MAC幀尾之前數據為一片)調度輸出,并采用帶內控制字的形式指示幀頭、數據、幀尾、線路接口號、填充字節(jié)數、空閑控制字等信息。接收通道還通過兩位的信號指示接收設備的緩存狀態(tài)(空、滿、半滿)。2.發(fā)送通路:發(fā)送通道的PL4接口與接收通道的工作模式相同,數據從PL4接口進入PM3388后,經過8B/10B編碼,并/串變換等處理步驟,以串行差分信號的形式輸出到光電轉換子模塊。
為了保證PL4接口達到十路1Gbps的速率,PM3388的參考時鐘引腳接160MHz時鐘晶振,輸入輸出接口的采樣時鐘通過將該時鐘倍頻獲得320MHz時鐘,輸入輸出數據分別在時鐘雙沿采樣,可以獲得640Mbps的數據數率,總帶寬達10.24Gbps,可以滿足0丟包率性能對帶寬的要求。
此外,輸入處理FPGA是千兆以太網線路接口卡模塊設計的重點之一,主要的功能是將各種標準的MAC幀數據格式轉換為網絡層統(tǒng)一的數據格式,為網絡層處理屏蔽掉底層物理接口。
輸入處理FPGA采用Altera公司Stratix GX系列的EP1SGX25F芯片,該芯片具有25660個邏輯單元,16個高速收發(fā)器通道,39個源同步IO和總數為1944576比特的RAM,可以滿足實現輸出處理功能對資源的要求。
輸入處理子模塊主要完成輸入處理和配置統(tǒng)計兩大功能:第一、接收MAC層處理子模塊發(fā)送過來的數據片,完成MAC幀重組和十路數據合路處理,再根據MAC幀封裝的三層協(xié)議類型實現數據包的分類處理,按照不同的處理要求把數據包分別送B接口、F接口或者同時送兩個接口。送往B口的數據包經過MAC幀格式拆封和B口格式封裝后輸出到轉發(fā)模塊,送往F口的數據經過數據寬度和時鐘頻率的變換后輸出到協(xié)議FIFO。第二、線路接口卡上電初始化時,輸入FPGA通過板級處理機獲取本線路接口卡所在的機架號和端口號等信息,并把這些信息插入到送往轉發(fā)處理模塊的數據包的B口格式字中。輸入處理FPGA還要實現大量的統(tǒng)計功能,統(tǒng)計項包括每個接口接收到的總幀數、錯誤幀數、丟棄幀數、IPv4單組播包數、IPv6單組播包數、MPLS單播包數、送往B口包數和送往協(xié)議FIFO包數等,并根據命令把統(tǒng)計信息送往板級處理機。
4 系統(tǒng)調試
FPGA的調試包括輸入FPGA和輸出FPGA兩部分,主要檢查FPGA的焊接、時鐘和程序下載等是否正確,調試方法是用VHDL編寫一個計數器的程序,用JTAG下載到FPGA中,利用SignalTap軟件和指示燈測試FPGA是否工作正常。實現系統(tǒng)輸入輸出處理功能的大規(guī)模VHDL程序的調試放在整個線路接口卡的調試中進行。
PM3388芯片是千兆線路接口卡完成MAC層控制功能的芯片,其調試是整個千兆線路接口卡調試的重點。PM3388芯片的調試需要板級處理機軟件、板級處理機、輸入輸出FPGA和網絡測試儀配合,調試內容依次為寄存器配置、PL4系統(tǒng)側環(huán)回、SERDES系統(tǒng)側環(huán)回、SERDES線路側環(huán)回、PL4線路側環(huán)回。
PM3388芯片寄存器配置的調試過程為:首先往一個可讀寫寄存器(選擇地址為0x6的寄存器)中寫入一個數,再讀出來比較是否正確,如果不正確,通過SignalTap軟件分別抓輸出FPGA與PM3388芯片的微處理機接口的讀寫控制信號,確定錯誤是發(fā)生在寫操作還是讀操作上,排除錯誤。單個寄存器的配置調試通過后,再進行多個寄存器的連續(xù)配置,調試方法是配置PM3388進入不同工作模式,通過檢查狀態(tài)寄存器的值判斷是否配置成功,如果不成功,檢查相鄰寄存器的配置是否發(fā)生了干擾,通過SIGNALTAP軟件查看邏輯和時序問題,再加以解決。
而PL4系統(tǒng)側環(huán)回主要是為了驗證輸出FPGA與PM3388的輸入PL4接口、輸入FPGA與PM3388的輸出PL4接口是否正常,調試方法是使用板級處理機向輸出處理FPGA發(fā)送協(xié)議包,輸出處理FPGA再把該數據包發(fā)送到PM3388的PL4接口的接收側,接收側把該數據包環(huán)回到PL4接口的發(fā)送側,從發(fā)送側發(fā)送到輸入處理FPGA,最后該數據包被板級處理機讀回來進行比較。調試中發(fā)生的錯誤可以通過PM3388內部的統(tǒng)計寄存器和SIGNALTAP軟件進行定位,再采取相應的措施排除錯誤;
5 總結
本文的創(chuàng)新點在于采用合理的設計方案和調試方案,完成了十接口千兆線路接口卡的設計與實現,研制的千兆線路接口卡完全滿足了T比特路由器項目對十接口千兆線路接口卡設計的功能與性能要求。采用FPGA設計并實現了十接口千兆以太網線路接口卡設計與實現中的幀重組與加速功能,能夠提供更高的帶寬,具有更好的加速性能。
評論