1 前言 高速以太網可以滿足新的容量需求,解決了低帶寬接入、高帶寬傳輸的瓶頸問題,擴大了應用范圍,并與以前的所有以太網兼容。全雙工的以太網協議并無傳輸距離的限制,只是在實際應用中,物理層技術限制了最大的傳輸距離。不過可以通過使用高性能的收發器或鏈路擴展器來延長以太網鏈路的長度。但是面向流量高達數十G的高速以太網中,如何快速、可靠地實現數據的轉發與鏈路延伸并不是一件很容易的事情。尤其是高速以太網中,對設備時延非常敏感,因此要求數據中繼設備處理速度有足夠的快、同時還能夠對轉發的數據進行簡單分析與處理,才能實現高速、可靠的數據轉發功能。另一方面,在10G以太網標準出臺之前,就已經有多家廠商推出了基于10G以太網標準草案的10G以太網設備。國外廠商如Foundry、Cisco、Enterasys、Extreme、Forcel0、Nortel、A1catel、Juniper、Avaya、HP、Riverstone等公司紛紛推出了10G以太網設備,國內幾家著名的通信設備制造商,像華為、港灣也研發出具有自主知識產權的10G以太網產品。不同公司的產品、設備在對協議實現的一致性、互操作性、穩定性、成熟性等方面都有所不同,因此要設計并實現一個可靠、高速數據中繼器必須深入研究高速以太網標準,并充分考慮其設計的靈活性,因此本文提出了一個基于FPGA的高速數據中繼器設計方案。 2 高速數據中繼器功能分析 高速數據中繼器主要需完成以下功能是對外部光纖鏈路發送過來的高速、大量數據處理,主要包括有: 10G以太網的物理層處理。包括將10Gbps光信號轉換為電信號和將10Gbps高速串行數據轉換為低速率的并行數據,便于上層處理;10G以太網的鏈路層處理。包括對10Gbps數據進行PCS解碼和MAC控制的鏈路層處理,最后輸出完整的MAC幀;對MAC幀格式進行判斷來識別其中封裝的上層數據是協議報文還是數據報文;對IP數據報文進行查表處理,看是否有發往本機的IP報文;將需要上交到轉發進行深層次IP層處理的數據報文封裝成內部數據報文格式并上交;將需要上交到板極處理機的協議報文和發往本路由器的IP報文封裝成內部協議報文格式并上交。 數據中繼器對需要轉發出去的數據需要完成如下處理:對交換發送過來的數據報文進行內部格式判斷,決定是否進行查表處理;對不需要進行查表的IP報文直接從內部頭中提取目的MAC地址;對需要查表的IP報文進行查表處理,若查表命中則返回目的MAC地址,若不命中則將該數據報文上交到板極處理機;對得到目的MAC地址的報文進行以太網格式封裝;對板極處理機下發的協議報文和封裝好的以太網幀進行合路處理;10G以太網的鏈路層處理。包括對MAC幀進行MAC控制鏈路層處理和PCS編碼;10G以太網的物理層處理。包括并/串轉換和電/光轉換。其處理流程如圖一所示 圖 一:高速數據中繼器數據處理流程 3 方案的選取與實現 從以上輸入處理和輸出處理流程來看,物理層和鏈路層的功能可以通過選擇相應的商用器件來實現,實現起來并不復雜;但圖1中虛線框內的處理功能是在10Gbps的高速率下進行的,實現起來比較困難。目前在高速數據處理中,能完成這部分功能的處理器件可分為固定功能器件和可編程器件兩種,其中固定功能器件主要指ASIC(Application Specific Integrated Circuit),可編程器件又有FPGA(Field Programmable Gate Array)和NP(Network Processor)兩種,下面對這三種器件進行比較。 首先能夠同時提供極高轉發性能和較低成本的只有ASIC芯片了。ASIC的硬件資源最為豐富,處理能力是NP不能比擬,萬兆核心層設備采用ASIC是對于性能的一種保障。但是它的先天不足也是無法回避的,由于ASIC的固定特性一直無法解決路由器對多業務支持的需求,ASIC芯片一旦產出后,其原有的功能無法添加,也可以把業內目前需要的功能都做在ASIC里面,但是現在主流的很多技術如MPLS、QoS等都是只停留在草案階段,還未標準化,所以現在就做死在ASIC里面顯然是有很大風險的。由此可看出,ASIC可為任何固定功能提供高性能,但卻幾乎沒有靈活性和可擴展性。第二種NP,目前網絡處理器(NP)技術是業內非常受歡迎的技術之一,NP技術本身就是通過廠家自己編寫微碼的方式對網絡協議處理進行優化,通過內置微引擎的方式實現加速處理,性能是CPU無法比擬的。這樣的結構注定了NP就比ASIC擁有更多的靈活性,對新增業務的支持能力永遠都比ASIC強。但是NP也有其自身不能克服的缺點,NP的硬件資源對比ASIC肯定還是有很大差距的,所以其在處理海量多業務時轉發性能下降很快,不能達到線速。 第三種是FPGA,FPGA對任何高速并行數據處理都非常理想,具有可編程的能力和較高的靈活性,便于實現多業務支持,同時,由于其可編程性是通過硬件實現的,因此可以提供較高的高速數據處理性能。考慮到硬件的可編程性沒有軟件靈活,所以最新的FPGA上可以加上一個微處理器的核心(core),加上了微處理器核心的FPGA,在可編程性上變得“軟硬兼備”。 除了加上微處理器的核心,FPGA芯片公司還花大力開發芯片的高速I/O,通過網絡友好的功能,該類型FPGA可提供高性能數據和網絡控制處理功能。這使他們成為WAN/MAN/LAN網絡中專用高速數據處理的理想候選器件,并將在靈活性/性能間進行折衷的控制權交到用戶手中。此外,FPGA對任何高速數據的并行處理都比較理想,而且具有非常的靈活性和擴展性,且開發周期短,能夠形成具有自主知識產權的內核,最終還可以形成自己的ASIC,因此在本文設計中選擇了FPGA作為高速數據處理的核心部件。 根據高速數據中繼器的功能需求,并考慮高速數據中繼與轉發中路由器的實際性能指標,確定了該高速數據中繼器需要達到以下技術指標:具有10Gbit/s線速度處理40字節長IP包的能力;支持100MSPS的查表速度;可提供64K條本機地址表項。 從上述三點性能指標來看,第一點通過選擇性能指標高的FPGA即可實現,而第二點和第三點則無法由FPGA單獨完成。從這兩點性能指標來看,都是關于路由查表方面的,一個是表項容量方面的指標,一個是查表速度方面的指標。目前流行的查表方案是采用CAM(Content Addressable Memory)來實現,因此本文總體設計中也采用CAM來實現查表處理。由此得出的高速數據中繼器總體設計結構如圖二所示。 圖 二:基于FPGA的數據中繼器設計結構 在該設計結構中,輸入處理和輸出處理使用FPGA來實現,由于這些處理功能都是在10Gbps的高速下完成的,占用的FPGA資源較多,加之輸入輸出處理時都有查表模塊,占用的FPGA I/O資源也較多,要在一片FPGA內完成這些處理功能是很困難的。為降低設計難度和為以后功能擴展預留一些FPGA資源,對輸入處理采用一片FPGA來完成,對輸出處理同樣采用一片FPGA來完成。對于其他功能部分,控制管理平面(板極處理機)采用Power PC來實現,輸入查表和輸出查表使用CAM來實現。在10G以太網鏈路層處理上選用商用ASIC芯片S19205來實現,S19205可以兼容IEEE802.3ae標準,能工作在10G-LAN、10G-WAN和10G-POS(Packet Over SDH)三種模式;在10G以太網的PMA和PMD子層的功能實現上選用了Gtran公司的GT10來實現,它是一個Transponder,在內部即實現了光電轉換,又實現了串并轉換,通過提供不同的時鐘網絡配合S19205就可以實現這三種10G接入方式。對于10G-LAN接入和10G-WAN接入而言,FPGA程序的處理流程是相同的,這樣,S19205在GT10的配合下,可以將10G-LAN和10G-WAN的差別屏蔽在FPGA功能處理之外,使得該設計結構既可工作在10G-LAN模式,也可工作在10G-WAN模式,達到設計復用的目的。 4 測試與分析 高速數據中繼器設計制板完成后,還要將其置于整個路由器環境中進行性能測試,其測試結構如圖三所示,最下面四個模塊組成了高速數據中繼器。 圖 三:測試結構圖 從圖中可以看出,測試時需要兩個10GbE接口,一個用于接收測試儀的數據報文,另外一個則是對經過轉發處理和端口交換后的數據報進行處理后返回給測試儀進行分析。下面給出衡量系統性能的關鍵參數的測試情況。 測試中選用的數據包長是46、60、64、65、128、256、512、1024、1280、1508,測試時間是1分鐘,測試結果如下: 圖 四:系統時延測試曲線圖 由于我們的中繼器設計時的性能指標是可以達到10Gbps速率下40字節IP包的處理能力,在測試儀的吞吐量下不應該丟包,實際測試結構在上述10種包長的情況下,IPv4和IPv6的單播、組播包的丟包率均為0。系統時延測試結果如圖四所示。從測試結果可以看出,高速數據中繼器應用在高速路由器中后完全滿足高速路由器對數據中繼要求的各項性能指標。 5創新點總結 本文的創新點是提出了一種基于FPGA的高速數據中繼器設計方案,并綜合分析了ASIC和NP等方法設計的高速網絡中繼器設計方法,在設計的功能和靈活性兩方面做了很好的權衡。從測試結果可以看出,本文設計很好地滿足了網絡處理的基本功能以及高速數據中繼的性能指標要求。 |