NS4組織結構

1 examples

這裏包括兩個NS4使用案例,一個是p4-demo.cc,一個是p4-topo-test.cc

1.1 p4-demo.cc

p4-demo.cc 包含了一個簡單的網絡拓撲結構,主要用於測試P4程序編寫的正確性以及NS4是否可以正常運行

1.2 p4-topo-test.cc

p4-topo-test.cc 用於模擬大規模的P4驅動的網絡,可自動構造或手動定義網絡拓撲(如fattree),可自動構造或手動編寫流表項

2 model

這是NS4核心部分,主要包括P4網絡設備模塊、P4交換機接口模塊、P4控制器模塊、網絡拓撲讀取模塊、流表下發異常處理模塊等

2.1 P4網絡設備模塊

P4網絡設備是將ns3與bmv2連接的關鍵所在,包括p4-net-device.cc和p4-net-device.h,裏面主要有P4NetDevice和P4Model這兩個類,P4Model繼承於bmv2中的Switch,裏面的核心是對P4流水線的處理,包括解析、匹配行爲操作、逆解析等過程,P4NetDevice繼承於ns3中的NetDevice,以便連接ns3其餘模塊。

2.2 P4交換機接口模塊

P4交換機接口模塊是溝通P4Model與P4Controller的重要組件,由p4-switch-interface.h、p4-switch-interface.cc、switch-api.h、switch-api.cc組成,p4-switch-interface.h、p4-switch-interface.cc包含P4Model以及其餘相關元素,主要工作是爲P4Model下發流表,switch-api.h、switch-api.cc定義了操作流表項的接口以及類SwitchApi。

2.3 P4控制器模塊

P4控制器用於對網絡中P4Model進行管理,可對P4Model下發流表以及查詢P4Model流表信息。P4控制器包括p4-controller.cc、p4-controller.h,裏面實現了P4Controller這個類。
 

2.4 網絡拓撲讀取模塊

網絡拓撲讀取模塊是用於讀取網絡拓撲結構,包括p4-topology-reader.h、p4-topology-reader.cc、csma-topology-reader.h、 csma-topology-reader.cc。其中p4-topology-reader.h、p4-topology-reader.cc包括抽象類P4TopologyReader,其定義了網絡鏈路及節點數據結構;csma-topology-reader.h、 csma-topology-reader.cc定義了類CsmaTopologyReader,其繼承於P4TopologyReader,並實例化了其中的虛函數Read()。

2.5 流表下發異常處理模塊

這個模塊用於對下發流表操作進行異常處理,主要包括對調用函數名稱、參數個數及類型做驗證,便於快速定位具體出錯位置,方便運行及調試。這部分包括exception-handle.h、exception-handle.cc,裏面定義了P4Exception。

2.6 其餘部分

其餘部分主要是全局變量以及工具函數,包括global.h,global.cc,helper.h,helper.cc等

3 helper

這裏包括構建P4設備、讀取網絡拓撲、定義fattree拓撲、定義樹形拓撲、自動構建流表項的helper類

3.1 構建P4設備helper類

包括p4-helper.h,p4-helper.cc

3.2 讀取網絡拓撲helper類

包括p4-topology-reader-helper.h,p4-topology-reader-helper.cc

3.3 定義fattree拓撲

包括fattree-topo-helper.h,fattree-topo-helper.cc

3.4 定義樹形拓撲

包括binary-tree-topo-helper.h,binary-tree-topo-helper.cc

3.5 自動構建流表項

包括build-flowtable-helper.h,build-flowtable-helper.cc

4 test

這裏是用於測試的P4程序集合,包括router、silkroad、counter、meter、register等

5 topo

這裏用於存儲網絡拓撲結構定義

6 flowtable

這裏用於存儲P4交換機的流表項
 

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