了解路由器關鍵指標包轉發性能 YuS

  Routers配置     |      2023-03-22 14:31

包轉發性能(Throughput)也可以稱為吞吐量,這里吞吐量,我不討論三層交換機的交換容量和背板吞吐量,因為三層交換機是交換芯片來處理數據,能實現線速轉發,我這里討論的包轉發(吞吐量)是指網絡數據從一個以太網口到另一以太網口由CPU處理的轉發性能,這代表了路由器CPU和內存的性能(基于x86處理器的軟路由也可作為參考)。

MikroTik官方從1518Byte、512Byte和64Byte給出了詳細的吞吐量測試數據,在這方面MikroTik路由器和交換機的數據是非常真實的,比很其他一些廠商數據含糊不清要良心許多!這些數據,包括橋接和路由的性能轉發測試,還有添加25條策略的轉發測試等,但不含nat,因為nat轉發和會話數量有很大關系。

通常數據包處理都要經過CPU(路由器或三層交換機也支持由交換芯片處理,這里不做討論),如當前RB、CCR和CRS等設備采用的是MIPS、PowerPC、Tile和ARM等構架的CPU,基于x86平臺的就是大家熟知的Intel和AMD。CPU的處理能力直接決定數據包轉發性能,處理數據包就像流水線一樣,對每個包進行拆包、重新封裝和轉發。

數據包的大小決定了處理速度和吞吐量,例如我們在上網時,發送聊天信息、網頁瀏覽、播放視頻和下載數據,封裝的數據包大小是不一樣的。假如一個數據包封裝了網頁圖片是512Byte,CPU每秒能處理10000個,并不能做到比512Byte小一半的256 Byte包每秒就能處理20000個,對于CPU處理數據包有點類似計件式的工作,當然實際情況不是這樣,只是做一個類比。下圖是一臺CCR2004-16G-2S+的吞吐量數據:

了解路由器關鍵指標包轉發性能 YuS

一共分了3組數據1518Byte、512Byte和64Byte,每組數據又分為Mbps和Kpps,Mbps大家比較好理解是每秒多少Mbit,Kpps(packet per second)則是,每秒處理多少K的數據包。官方測試包含了bridge橋接轉發和Routing路由轉發兩種,bridge轉發下增加了配置25條橋接過濾規則轉發,routing路由轉發也增加了25條流控規則和25條防火墻過濾規則的轉發性能,這樣的轉發數據更接近用戶實際使用的環境。

我們以第一項Bridging none(fast path)為例:每個數據包封裝1518Byte,CCR2004能處理31.47Gbps,每秒能轉發2591.6k的數據包,如果將數據封裝大小調整為64Byte,每秒能處理5.27Gbps,每秒轉發9697.9k的數據包,數據包封裝越小,轉發的數量就越多,對CPU性能要求越高。

舉一個例子,假設一個在流水線檢驗員,檢查每個產品的包裝是否合格,第一天,產品包裝是大箱子,里面有8個小包裝,但他只需檢查大包裝是否合格,無需檢查里面的小包裝,他一分鐘能檢查20個大箱包裝,出貨的數量也多。

了解路由器關鍵指標包轉發性能 YuS

第二天,流水線不再用大包裝了,都是小包裝,那請問他的每分鐘的檢查數量是否會提高8倍?估計提升2倍都很不錯了。

了解路由器關鍵指標包轉發性能 YuS

這和我們的路由器處理大包和小包的道理是一樣,CPU處理大數據包很輕松,而處理小數據包就很吃力,大包裝的數據多,一次就可以轉發很多數據,而小包數據少,數量又多,很考驗CPU的性能。我們衡量路由器CPU性能一個重要指標是看64byte的小包轉發能力,三種封裝有不通的衡量:

64byte包吞吐量反應了CPU的性能

512byte包反應了CPU和內存整體綜合性能

1518byte包吞吐量反應了內存性能

吞吐量的標準單位是pps(packet per second),在MikroTik給出的Mbps和Kpps數據是可以相互轉換的,例如1518Byte的31472Mbps約等于2591.6kpps*1000*1518*8

MikroTik所有吞吐量測試是通過以下方式完成:

通過路由器轉發測試路由轉發

精簡RouterBOARD設置,僅安裝system功能包

通過Agilent N2X設備測試

下面圖則是近年來,RB、CRS和CCR等產品的對比,注意單位是kpps,每秒轉發包

了解路由器關鍵指標包轉發性能 YuS

上圖可以看到CCR系列的吞吐量性能和RB系列有明顯的差距。