使用NS4进行网络模拟实验

这里讲的是如何使用NS4进行你自己的网络模拟实验,具体包括需要编写哪些程序,需要进行哪些操作。

1 定义网络拓扑结构

需要根据实际应用场景定义网络拓扑结构,关于网络拓扑格式可参考网络拓扑定义
定义好的网络拓扑文件需保存在topo目录下

2 编写P4程序

  • 需要根据应用场景需要编写P4程序,这里可进入test目录下,运行脚本(假设将P4程序命名为demo)
 $bash creat_nf.sh demo

进入demo.p4编写相应的处理逻辑,并采用p4c-bmv2将demo.p4编译成demo.json
编写mtype .txt

  • 需要将该P4程序的相关信息添加到全局变量中,具体需要进行

进入model/global.h中添加该P4程序功能无符号整数值

unsigned const int DEMO = 1000;

进入model/global.cc 添加路径信息以及P4功能名字与无符号整数值的对应关系
在void P4GlobalVar::SetP4MatchTypeJsonPath()函数中,添加

      if(P4GlobalVar::g_networkFunc==DEMO)
       {
          P4GlobalVar::g_p4JsonPath=P4GlobalVar::g_nfDir+"demo/demo.json";
          P4GlobalVar::g_p4MatchTypePath=P4GlobalVar::g_nfDir + "demo/mtype.txt";
       }

在void P4GlobalVar::InitNfStrUintMap()函数中,添加

P4GlobalVar::g_nfStrUintMap["DEMO"]=DEMO;

3 构建流表项

需要对每个P4交换机构建其需要的流表项,将构建的流表项文件保存在flowtable目录下,流表项文件命名为对应交换机的编号

4 编写example程序

可参考examples/p4-demo.cc和examples/p4-topo-test.cc编写需要的example程序
然后修改examples/wscript,使得obj0.source等于新定义的example程序,例如新定义example程序名为p4-my-example.cc,则可按照下面方式更改:

obj0.source = ['p4-my-example.cc']

5 运行example程序

启动下列命令编译运行

#./waf --run "src/ns4/examples/p4-example"

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值