提升網路效能,只有增加頻寬是不夠的
馬路加寬,車子也要跑得快

雖然帳面上從Fast Ethernet升級至Gigabit Ethernet就可以提升10倍的理論頻寬,但是實際上並非如此。為了要讓既有的投資發揮到最大的效益,自然也就需要諸多層面的配合,畢竟整個企業網路並不是只有那些網路設備而已。

Andrew Tanenbaum曾在Computer Networks一書中分析影響網路效能的諸多因素,其中第一條就是「網路的效能最後都靠處理器去支撐」。不過,處理器畢竟只是影響電腦效能的一部分,所以我們可以將其延伸至整個電腦包含軟硬體的組織架構。電腦的效能越好,就越有機會把網路頻寬發揮到最大。因為影響電腦效能的因素頗多,我們僅列舉數點重要性較高者。不過,作業系統以及通訊協定往往都容易被人所忽略。提升匯流排規格
降低處理器效能不足所造成的限制
減少框包數目
慎選作業系統及驅動程式

從Fast Ethernet提升至Gigabit Ethernet,首當其衝的就是目前以PCI為主的區域匯流排頻寬。首先,Gigabit Ethernet的理論頻寬相當於125MB/s,幾乎相當於32位元/33MHz PCI的132MB/s理論值。但是,由於PCI是一個多個裝置共用、位址/資料線共用多工(Address/Data Multiplexing)的匯流排,實際上的有效頻寬絕對沒有這麼高。據估計,就算僅有一張PCI網路卡、沒有其他PCI周邊的情況,可以跑到80MB/s就該偷笑了,尤其伺服器往往還會安裝SCSI RAID控制卡之類大量消耗頻寬的裝置。所以,換成64位元的PCI-X乃勢在必行。

根據我們的測試,在相同的平臺下,PCI-X介面的Gigabit網路卡可以跑到960Mbps,而PCI僅有600Mbps。在未來,頻寬更大的PCI Express將逐漸取代現有的PCI,屆時效能瓶頸自然迎刃而解。

不過,很多比較老舊的伺服器並未支援PCI-X,這時候企業就必須認真評估更換伺服器的可能性。另外,對於一般的個人電腦,從865之後的英特爾桌上型平臺晶片組均支援CSA(Communication Streaming Architecture),這是PCI Express之前的過度方案。從CSA是一套專屬匯流排,能連接晶片組上的記憶體控制器hub,讓傳輸作業不需經過I/O控制器hub上的PCI匯流排,將這部分的傳輸頻寬留給其它I/O作業使用,而CSA連線提供2Gbps的雙向理論頻寬。這對提升Gigabit網路的傳輸效能有著相當的助益。

歷史的教訓證明,作業系統以及通訊協定所帶來的額外負擔,往往是網路效能最大的瓶頸,這些都是透過軟體實作。換言之,網路傳輸的瓶頸往往在軟體、而非硬體上。如果要建立一個高速網路環境,強化處理器的速度絕對是不可或缺的。

不過,處理器效能不足可以分為兩個方向:處理器效能真的不足,以及提升處理器效能卻無法得到明顯成長。畢竟電腦組織架構中存在著不少效能上的瓶頸,例如疊床架屋的匯流排架構、受到頻寬不足及高延遲所苦的記憶體系統等等,這些都會限制處理器實際上所能發揮的效能。

就理論上而言,網路晶片應該越靠近處理器越好,而且盡量該讓處理器做更多的工作。很遺憾的,這在目前幾乎是做不到的,所以也就催生TOE(TCP Off-load Engine),將處理器所執行的部分TCP/IP通訊協定轉交由網路晶片組所處理,降低處理器的壓力。目前不僅限於高階伺服器網路卡,不少低價網路晶片也都有提供部分TOE功能,例如IP Checksum等。

值得注意的是,減少封包數目,也可以降低軟體以及作業系統Context Switch所造成的額外負擔,尤其後者造成的效能傷害更為重要。一般而言,每個封包都會造成數次Context Switch,尤其當執行多種網路應用程式時(例如同時執行網路監控軟體),這意味著更多的中斷以及執行指令數。

減少框包(Frame)數目,對於提升Ethernet效能有著立竿見影的效果,因為這減少了個別框包所造成的額外負擔,我們可以從各種框包長度下最高的理論傳輸率看出明顯的差距。在一個完全點對點、交換式的全雙工Ethernet中,一般而言,框包都會以最大的長度進行傳輸。不過,如果是半雙工、共享傳輸通道的CSMA/CD環境,這就需要額外的設定和調整。

作業系統對於網路效能亦有著決定性的影響,尤其盡量減少封包資料複製(Copy)的次數。往往封包資料從網路介面卡的緩衝區一路送至處理器,需要多次的資料複製工作,這會加長電腦處理封包資料的時間,尤其對於即時性的資料處理相當的不利。

所以,近年來的新型伺服器及網路作業系統均往零複製(Zero-Copy)的方向走,盡量讓封包直接送到主記憶體,例如Sun Solaris 10。不過,作業系統整體I/O效能也是必須考慮的重點,我們這次測試的過程中,就發現FreeBSD 5.0以後版本I/O效能遠不及之前的4.×版。

另外,值得注意的是網路介面卡的驅動程式品質,在相同的硬體,不同作業系統的驅動程式就會導致截然不同的效能表現。以Intel 8255×系列網路晶片為例,有相當長的一段時間在Linux上有著遠較Windows NT家族為佳的效能。網路基本架構建置的考量
考量不同層級通訊協定之間的搭配性
完全放棄集線器
功能強大不代表一定比較好
注意線路品質

從既有的100BASE-TX升級至1000BASE-T,最大的好處就在於可以沿用既有的基礎布線架構。雖然如此,在更換交換器後,依然有眾多值得考量之處。

企業如果在不同網路層級執行不同的QoS,例如部分L2交換器執行Priority Switching和VLAN、部分L3/L4交換器執行RSVP或針對不同的TCP Port進行政策性管理,這時候就要考慮同時執行數層QoS所造成的效能影響,並進行審慎的觀察及評估。如果整個企業內所有的交換器都是相同的產品,自然就不會有這樣的問題(一般而言,交換器廠商會針對多種QoS進行優先權的效能最佳化),但是這種狀況發生的機率實在是太低了,因為很少有企業會通通採用昂貴的L3/L4交換器。就算有,也不見得都是同一個廠牌的產品。

也許並非所有的電腦都需要高速網路,不過在過去所遺留下的集線器(Hub)最好通通以交換器取而代之,因為這些集線器往往都不會支援Gigabit Uplink以及全雙工模式。基於效能及管理的考量,盡量簡化架構是必然的做法。

對於不少中小企業而言,它們頂多需要低價高效能的L2交換器,不需要L3 IP路由,甚至連VLAN都不見得需要,所以L3/L4交換器對它們是根本不必要的。另外,往往基於不同的設計需求,L3/L4交換器往往在L2 Forwarding效能上表現較差。既然沒有這種需求,企業也就沒必要多花更多不必要的錢。

雖然1000BASE-T延續100BASE-TX的布線,但這並不代表兩者對於線路品質有著相同的要求。由於1000BASE-T會用上UTP內的四對線路,而非100BASE-TX的兩對,加上更高的傳輸率,自然線路品質不佳所造成的效能影響會更大。值得注意的是,1000BASE-T允許在部分線路損毀(例如四對線路損壞一對)的情況下維持正常傳輸,所以使用者不見得會注意到線路已經損毀、網路效能大幅降低的事實。這時候,某些交換器所提供的線路品質檢查功能,對於管理上就有很大的助益。只有對症下藥,方能藥到病除

影響網路效能的因素千頭萬緒,並非僅限於網路設備及布線,很多不起眼的小地方都會對效能造成重大的影響。網路管理者必須先找出效能的瓶頸,才能規畫出最佳效能的企業網路架構。Jumbo frame,Jumbo frame,Jumbo all the way…

因為Gigabit Ethernet的MAC層將過去的512位元SlotTime加長至512位元組,所以在傳輸小框包的時候效率會比較差。以傳輸64位元組的資料為例,為了滿足512位元組SlotTime,必須另外加上438位元組的載波延伸,然後又必須加上12位元組的InterFrameGap。所以,實際上的傳輸率僅有64/(512 + 12)=12%,也就是122Mbps,這只比100Mbps好一點點。

802.3z規格定義了「Burst Mode」,允許連續傳輸多個小框包至8192位元組以提升傳輸效能。不過,很可惜的,Burst Mode是針對半雙工、CSMA/CD環境而制定的,在交換式、全雙工環境並無用武之地。為此,目前有部分廠商提供Jumbo Frame功能,將既有的最大框包長度從1518加長至9000位元組之譜,這樣就可以大幅降低傳輸中的額外負擔。不過,Jumbo Frame並沒有一個業界共通的規範,不同廠商所實作的Jumbo Frame不見得完全相同,交換器產品更不見得彼此相容。這是網路建置上所必須注意的地方。文⊙劉人豪

熱門新聞

Advertisement