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交换机的流表项
 

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