網路處理器從去年開始吸引整個網路界的目光,許多新創公司紛紛提出新穎的設計來解決網路的問題,如T.Sqware、C-Port、Sitera、Agere等,無不卯足了勁利用各種會展推銷理念,介紹自己。已佔先機的大廠如Intel、IBM等對推波助瀾的效果更大,而老牌的網路晶片公司如MMC Networks等則不忘提醒大眾他們纔是此道的先驅者。
今年以來則購併的風潮也絡繹不絕,各大廠競相網羅網路處理器的公司,唯恐來不及取得技術就被時代浪潮所淘汰。Motorola取得C-Port、Lucent取得Agere、Vitesse取得Sitera,幾乎沾上邊的都網羅殆盡。究竟網路處理器是甚麼?何時需要利用它?它對網路通訊產業有何影響?本文會嘗試提供一點答案。
網路處理器的定義
何謂網路處理器?簡單的說法是一個可程式化的網路晶片,用來做為網路設備的核心。講得詳細一點,網路處理器本身包含一個或多個高效能的微處理器,有些是標準的精簡指令處理器(RISC),有些則專門設計處理特殊功能的處理器,主要的特點就是網路處理的功能是由程式控制,因而具有完全的彈性,可以適應市場的變化及網路功能日新月異的更新。網路處理器必然具有一些專為網路處理的特殊架構或介面,如高速互連的匯流排(Bus)及標準的網路介面等,內部各功能單位的設計也完全為高速網路交換設計。
為何網路處理器受到如此重視?這自然與近年網際網路的高速成長、應用範圍急速擴張有關,但要充份了解網路處理器的意義,就要對網路交換設備的基本架構及其發展歷史有完整的了解,纔能明瞭。
網路交換設備
構成資料網路(Data Network)主體的設備,可以稱為封包交換器(Packet Switch),如IP網路的路由器(Router)、區域網路的橋接器(Bridge)、屬電信交換設備的X.25交換器、Frame Relay交換器、ATM交換器等均屬之。
封包為一段方便處理的資料,加上傳輸所需要的表頭(Header),可為固定長度及不定長度。封包交換器的作用如(圖一),由一個網路介面收取封包,檢驗其表頭,根據其中的其中的資訊,如目的位址,查對內部的表格,決定封包的去向,然後由相對的網路介面送出。資料網路由眾多的封包交換器互相連接構成,一個封包由其來源節點送出,由中介的封包交換器一站站轉送,到目的節點為止。典型的封包交換器可以用網際網路的路由器為代表。
最初的路由器設計很簡單,與個人電腦差不多,由一個微處理器連接單一匯流排,控制幾個網路的實體層(Physical Layer)或資料鍊層(Data Link Layer)電路,如(圖二)所示。事實上最早期的網際網路本來就是由一些電腦互相連結所構成,位於樞紐地位的電腦就順便有程式模組執行封包轉送的服務,後來網際網路的流量大增,改由專屬的路由器負責網路封包轉送,仍延用原有的架構。
這種架構的好處是簡單,所有轉送的判斷及執行都由軟體執行,可以巨細靡遺的實作所有應有的網路協定,一但有錯可以立即更改,而新的功能可以隨時增加。但一般性的微處理器系統在處理高速網路封包交換有效能上的瓶頸。例如一個慢速10Mbps的乙太網路介面每秒最多有14880個封包,即每一個封包的處理時間僅有67x10-6秒,這對一般的嵌入式處理器已是不小的負擔了。更何況100Mbps、1Gbps的高速埠,而網路交換設備必須具有多量的交換埠,對效能的需求更是倍增。造成這個現象的原因是一般的微處理器系統的設計並不是為有效率的高速輸出入設計,而是偏重高速運算,並不太適合直接用作高速網路交換工作。
乙太網路交換器
為解決高速交換的問題,利用特殊的硬體來辨識及處理封包,是行之有年的方法。隨著特殊用途積體電路(ASIC)技術的成熟,利用ASIC設計的產品不但效能理想,成本更大大降低,使高速網路設備得以普及化,最好的例子是乙太網路交換器。早期的乙太網路橋接器都是用微處理器系統建構,1990年Kalpana公司公開硬體架構的乙太網路交換器,各廠家紛紛跟進,從此交換器成為乙太網路的主流產品。
所謂乙太網路交換器,即為硬體的橋接器。乙太網路交換器經多年的發展,不但完全取代原有的橋接器,甚至逐漸取代集線器(Hub),成為建構區域網路的基礎設備。這種硬體的交換設備,以專門設計來解讀及轉送封包的ASIC為主角(圖三),很容易就達成高速交換的效率要求,而系統中的微處理器則擔任網路管理及用戶介面的角色,也用來處理速度較慢的通訊協定。
路由器也有類似的發展,在廣域網路以ATM技術為主,區域網路則為乙太網路,均有所謂IP交換器(IP Switch)或多層次交換器(Multilayer Switch)。由於路由動作的複雜性,硬體路由器的發展不如橋接器普遍,技術上要解決的問題也較多。
ASIC的角色扮演
以ASIC為主體的交換系統較適合的是固定的資料處理動作,這是ASIC產品的特性使然,因為ASIC的設計週期很長,一般而言需18個月,而一但完成後修改不容易。大部份的功能在設計時已固定,無法隨新的需要更改。乙太網路橋接器的大部份動作早已標準化,所以容易用ASIC執行,但路由器的工作較複雜,雖然基本的路由工作是固定的,但隨著網際網路的蓬勃發展,對新功能的需求日漸增加,使ASIC為主體的路由器面臨的問題更多。
因應不斷增加的應用層面,新的通訊協定及功能經常增加,原有標準的修訂也持續在進行,路由器的設計者往往必須在新功能未定案前就加入,而日後再以昇級的方式修正,這些功能如果牽涉到ASIC,就不容易修正了。另外ASIC設計需要特殊的技術,需投入大量成本,成敗所負的風險極高。欲了解此問題的複雜性,試看路由器的可能的封包處理動作:
1.封包的接收與發送。
2.封包分解與重組(Segmentation and Reassembly),即ATM介面上的SAR功能。
3.通訊協定表頭的解讀與封包的分類。
4.查表與表的建立及更新。辨識欄位內容及決定處理結果需要比對相對的資料表,如位址、路徑、埠(Port)等,有些表如位址表、路徑表等可能成長到成千上萬個列數,有效率的比對需要高度技術。
5.表頭的修改,配合通訊協定的運作,封包表頭在轉送間需要更動,如扣除壽命值(Time-to-Live)、置換MAC位址、重算檢驗和(Checksum)等。
6.流量管理(Flow Management),如限定各類型資訊輸入的頻寬。
7.佇列管理(Queue Management),在封包擁擠時按資訊性質置入不同的佇列中,並分配一定的輸出頻寬給各佇列。
8.服務品質保證(Quality of Service),提供對某類型資訊的一定量的服務品質,如頻寬、延遲量、遺失率等。
9.群播(Multicast),將封包送給一群對象。
10防火牆,如限制某類型資訊的出入。
11.保密,如將資料加密處理。
這份表可以一直列下去,由此可以檢討前面兩種實作方式所遇到的問題。利用軟體方式很快會遇到效能的問題,因為每一個封包分配到的處理時間已經極有限,但又有這麼多工作要完成。利用ASIC的設計固然可以儘量將各種功能涵蓋,但許多網際網路的標準還在發展,新的功能還會發明,但一個ASIC完成的時候就限定了它的功能,不可能再增加。
網路交換器之所以能異軍突起,在於這類晶片一方面提供媲美ASIC的高效能資料通道與處理能力,另一方面又擁有類似一般微處理器的程式能力,不用擔心所設計的功能以後無法更新,也不必為一種應用負擔設計一個ASIC的成本及風險,解決了網路設備設計上的兩難問題。另外市場即時性的因素也很重要,設計ASIC曠日費時,網路處理器則可以立刻派上用場,縮短產品上市的時程,而在一些經濟規模不允許的狀況,網路處理器可能是唯一的選擇。
網路處理器架構
網路處理器的架構都有不同,大多為多處理器的設計,藉由強大的運算能力來達成所需的高效能。我們知道多處理器的設計中連結的架構至為緊要,各處理器間必須有暢通的合作模式,方能發揮效果,否則可能互相抵消。網路處理器大致上師法多處理器系統的架構,分為幾個類型:
(圖四)是英代爾IPX-1200的內部架構,是由一個StrongARM的主處理器與6個較小的微引擎(Microengine)構成。所有的處理器接在同一個SRAM,及輸出入的IX Bus上,是一種平行處理的設計,IX Bus的效能為64bit x 66MHz,亦即約有4Gbps的頻寬,每秒可以處理3百萬個乙太網路封包。
(圖五)是C-Port的C-5處理器,由16個通道處理器CP(Channel Processor)與幾個特殊的處理器XP(Executive Processor)、FP(Fabric Processor)、TLU(Table Lookup Unit)、QMU(Queue Management Unit)、BMU(Buffer Management Unit)等構成,整體架構大致採取分工合作、各司其職的方式,必要的時候,CP可以平行連接擴充埠的頻寬,或順序連接,以裝配線(Pipeline)的方式設計。
軟體搭配是致勝利器
由於網路處理器內建微處理器,開發軟體成為運用網路處理器的重要環節,在這個方面,各家的分歧很大,因為軟體與硬體的配合是網路處理器的致勝利器,正是發揮系統特色的重要層面,自然不能期待各家在此有任何共識,倒是各家廠商也盡力制定一些共同的功能介面,稱為「CPIX」。但支援軟體開發的工具,還是各顯神通。原則上,各家都盡量提供完整的軟體開發環境,有的強調標準的C/C++語言,有些則需要微碼(Microcode)的程式,或為特殊的處理器設計特殊的指令。軟體開發的功夫往往是被低估的成本,網路處理器這種需要大量軟體配合的系統尤其應該注意。
如此說來,網路處理器是解決所有問題的萬靈丹了嗎?也不盡然,它是一個很好的工具,但也有其局限性:
1.網路處理器雖然可以程式控制,但是不見得能做任何想做的事,因為它本身仍是一個特定架構的晶片,一定有其架構上的特色與限制,程式則須考慮程式碼允許佔用的空間大小等因素。
2.同樣的網路處理器的效能也有設計的限制,尤其要求軟體能在固定的短時間內完成封包處理,就必須考慮軟體的執行效能,是否能達成要求,不是可以無限制地加入新的功能。
3.網路處理器的系統雖然具有昇級的能力,但是將來產品可能日新月異,使昇級失去價值。
4.網路處理器目前的價位都還較高,不太適合低階的量產產品,而比較適合較少量的高功能產品。如果成本考量較大,ASIC可能是較好的選擇。
結語
網路處理器的高效能及彈性為許多新類型的網路設備提供了解決方案,就路由器而言,目前太多新的網路功能及介面正在發展,網路處理器提供廠商及用戶持續發展的平台,而如防火牆、負載平衡器(Load Balancer)、甚至網路語音(VoIP)、網路視訊等,更是這些新工具一展長才的機會。
至於將來網路處理器會如何發展?目前CPU的技術已由過去少數高科技廠擁有、高不可攀的秘密武器,變成普及化的智慧商品,任何ASIC設計者只要有需要,都可以用合理的代價取得高效率的精簡指令處理器(RISC),嵌入所設計的特殊功能晶片中。可以說所有的硬體設計都可擁有更多的智慧及彈性,網路處理器只是其中的先驅者。未來各種網路晶片的加入比率會愈來愈高,而網路處理器可能成為常態,而不是特例了。