思博倫OpenFlow性能測試白皮書上篇

目錄

1 摘要
2 爲什麼OpenFlow性能測試是必需的
3 本文參數
4 OpenFlow性能測試目標與挑戰
5 OpenFlow性能測試注意事項

  • 5.1 表容量測試
  • 5.2 Flow-Mod性能
  • 5.3 Packet In/Out性能
  • 5.4 Table-miss流表項性能
  • 5.5 流量統計測試
  • 5.6 OpenFlow定時器測試
  • 5.7 管道處理性能

6 開始OpenFlow的性能測試

1 摘要

測試一個交換機的過程就是驗證它是否符合開放式網絡基金會(ONF)的OpenFlow規範的過程,這點很容易理解,也已經被標準化了。在裝備適當的實驗室裏有一套交換機,運行一套標準的一致性測試,並假定它已經通過ONF組織正式認可的OpenFlow協議。

OpenFlow的性能測試目前依然處於起步階段,雖然有少數的開源工具用於測試OpenFlow性能,並且這些工具也開始出現在商用測試產品中,但是比較OpenFlow產品的性能還沒有一個標準。然而構建SDN產品的網絡供應商和部署的企業需要知道一個標準,不僅要達到OpenFlow規範,也要能按照期望來執行。本文闡述了OpenFlow的性能測試的重要性,並介紹了測試方法,企業可以用來做他們自身的OpenFlow性能測試。

2 爲什麼OpenFlow性能測試是必需的

OpenFlow是一個標準,ONF針對交換機提出了符合規範的嚴格要求,但並沒有考慮到現實環境中的性能。OpenFlow控制器和交換機在性能方面會有許多差異,假如在部署中選擇了錯誤的產品可能會造成災難性的後果。唯一避免這種情況的可靠辦法就是通過全面的性能測試。

3 本文參數

OpenFlow解決方案中包括一個或多個控制器、交換機,對終端用戶來說,系統的整體性能是最重要的,這就需要系統製造商和集成商單獨評估每個部件的性能來選擇最佳的部件。

本文參數

本文重點介紹以太網交換機的測試(以後篇幅中將繼續討論控制器和整個系統測試)。本文描述的例子將集中於硬件交換機,這比測試軟件交換機性能更加複雜和有趣。不同於軟件交換機在標準服務器上運行,硬件交換機使用加速吞吐量的集成電路ASIC。儘管如此,這裏所描述的方法同樣可以應用到軟件交換機。

最後,雖然有多個版本的OpenFlow協議,本文將着重於OpenFlow1.3.0,因爲它包含多表管道處理和組表,它是一種常用的版本,它提供了用於測試的核心概念,這個概念可以更新和應用在OpenFlow1.4.0及更高版本。

4 OpenFlow性能測試目標與挑戰

OpenFlow的性能測試不同於傳統交換機測試,它不完全集中在數據包轉發性能。OpenFlow性能測試體現在交換機處理flow-mod消息的速度,以及通過OpenFlow管道的正交分組包的處理。flow-mod是一種短暫握手的OpenFlow消息,它由控制器發送到交換機來添加、修改、刪除交換機轉發表中的規則。一旦OpenFlow的“規則”被寫入交換機的硬件轉發表中,數據包以一定的線速進行轉發,這個線速度可以用來檢驗交換機的性能。OpenFlow管道是指在OpenFlow 1.1.0引入的報文轉發平面的多個流表。數據包現在可以處理多個匹配,並執行多種操作,如數據包的修改並轉發到目標端口。

一個交換機的性能可能會因爲部署方案的不同而不同。例如,控制器如何快速的添加新流到交換機的轉發表是OpenFlow性能度量的關鍵。使用OpenFlow實現一個以太網交換節點可能每秒只需要一些OpenFlow新流,而想利用OpenFlow實現動態IP路由,可能需要每秒數百個新流。

因此,測量控制器每秒可以發送並安裝到交換機轉發表的flow-mod數量是很重要的。這條管線的瓶頸通常發生在交換機內部,交換機的CPU和存儲該轉發表中的專用集成電路ASIC之間。不同的交換機之間的性能測試結果可以相差很大,從每秒幾條flow-mod到每秒幾百條flow-mod,甚至在同一個交換機中固件升級前後的差距也是很大的。

5 OpenFlow性能測試注意事項

我們已經確定了六個測試指標來衡量以太網交換機的OpenFlow性能。他們是:

  • 表容量測試
  • Flow-mod性能
  • Packet in/out性能
  • Table-miss流表項性能
  • 流量統計測試
  • 管道處理性能

對於每一個測試,用於測試的設備必須要能仿真OpenFlow控制器的行爲,而且它也應該能連接到交換機數據平面上的端口。在這種方式中,測試設備可以向交換機發送數據包,以驗證由模擬控制器下發的轉發規則是否正確安裝並實施。

Testing Device

5.1表容量測試

OpenFlow1.3.0被設計爲採用TCAM實現一個或多個表的規則(流),TCAM是一種存儲器,被幾乎所有的交換機使用,它首先搜索內存中的內容而不是存儲中的內容。不同的交換機具有不同的TCAM大小,TCAM的使用量由不同供應商的優化技術和插入的流規則決定。

爲了避免混淆,當討論OpenFlow表容量時,指的是“全部12元組匹配”,也就是OpenFlow規則相匹配的所有12個報頭域。一些交換機廠商也支持掩蓋表容量的優化法,如將只匹配二層報頭字段的OpenFlow規則放到二層內存而不是TCAM。

從廣義上講,表容量測試需要驗證流的安裝、確定一個表何時用滿,計算出全表中有多少流,並在每個表中重複測試該過程。

更具體地說,測試每一個以太網交換機OpenFlow表容量時,你需要考慮以下幾點:

  • 對於不同的表容量的測試—一定要對不同匹配域進行滿負載測試,如除了完整12元組匹配外的2層和3層匹配,以此檢查是否有任何的優化。
  • 驗證多個表的規模—確定交換機支持的表的數目(例如255),給每個表發送flow mod,然後在不同的匹配域中再次運行滿負載測試。
  • 驗證流是否已安裝—提供以下3個驗證選項增加準確性。

選項1:發送flow-mod消息並只需等待TCP確認,以確認該交換機接收到該消息。

選項2:在flow-mod消息後發送barrier request消息。如果交換機發送barrier replay,這意味着交換機已經完全處理此flow-mod消息。

選項3:發送flow-mod並增加數據平面的驗證。這種方法能確認流安裝的準確時間,也能驗證在軟件或硬件中流是否被轉發。供應商使用軟件轉發來增加表的大小和容量,但是它可以顯著影響數據包的吞吐量。使用測試方法,如用IETF RFC-2544驗證數據包匹配每個流的轉發性能。

  • 確定流表是否已滿—在每個表安裝流,直到交換機發出錯誤碼(ofp_error_msg with OFPET_FLOW_MOD_FAILED, ALL_TABLES_FULL, or OVERLAP)指明表滿的原因,一定要設置足夠大的數據流的超時時間,以保證在測試過程中流不會超時並被交換機刪除。
  • 統計成功安裝流的數目—檢查測試控制器的計數,並給交換機發送一個流狀態請求(flow stats request),來驗證每個表中安裝了多少流。確認交換機和測試模塊數量是否相同。
  • 確認流表已滿之前決定每次插入流的數量—使用較小的步長可以提高準確性但花費的時間也長。最好的做法是在開始的時候使用大的步長找到表的大體容量範圍,然後用小的步長,以確定更準確的計數。

OpenFlow的組表需要額外的特殊考慮。組表是和流表分開的,並單獨存儲在存儲器中。其中流表傾向於測量匹配規則,每個組表對應一個“組標識符”。組表除了可以測量bucket中的單個action,還可以測量與單一“組標識符”相關聯的“buckets”,或測量“組標識符”相關聯的action列表。

組類型“indirect”將很多進來的數據包與一個單一的action進行匹配,例如一個默認的路由條目。對於這種組類型,可以用前面列出的幾個注意事項進行組表規模測試。對於組類型“all”,它包含多種action集合,在流驗證方法下選項3是首選的方法,該方法能夠確認所有的action是否都按照給定的action集合被執行。在這種設定下,這種組類型會爲集合中的每個action複製一個數據包,所以組表的規模和能採取的action數量直接相關,不僅僅是“group identifier”在流表中有匹配的流表項 。

 
 
 

譯自:http://www.spirent.cn/White-Papers/Broadband/PAB/OpenFlow_Performance_Testing_WhitePaper

本文轉自: SDNLAB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章