步骤
参考文章:建议先看明白这个
https://zhuanlan.zhihu.com/p/267140054 NS3与物理网络连接 直接翻译的官方文档哈哈 https://www.nsnam.org/wiki/HOWTO_Use_Linux_Containers_to_set_up_virtual_networks
1. 创建docker bridge
docker network create --driver bridge --subnet 10.1.1.0/24 --gateway 10.1.1.1 ns3net
解析:
--driver bridge 表示使用桥接模式
--subnet 10.1.1.0/24 表示子网ip 可以分配 110.1.1.2 到 10.1.1.255
--gateway 10.1.1.1 表示网关
ns3net 表示网络名
创建网桥后在Linux系统中查看
docker network ls
结果如下; brctl show查看网桥
发现名字不一样,docker管理下名字为ns3net ,而在Linux中 名称更换。即这两个网桥为同一个只是名字不同。
使用useBridege模式连接物理网络。
2.创建tap设备添加到网桥ns3net中
配置的ns3 tap设备需要安装到Linux命名下的网桥中,即上图中的 br-62d09f…,否则程序会发现找不到tap设备。
tunctl -t tap02
ifconfig tap02 hw 00:00:00:00:00:10
ifconfig mytap 0.0.0.0 up
brctl addif ns3net tap02
3. 修改ns3源码
路径:ns-3.33/src/tap-bridge/examples/tap-csma.cc 修改模式 即ConfigureLocal —>>>UseBridge 保证网络号与网桥的一样
4.创建容器
自己创建的镜像添加了 ping ifconfig 包 ubu18-net
docker run --name test02 --net ns3net --ip 10.1.1.5 ubu18-net
docker run --name test03 --net ns3net --ip 10.1.1.6 ubu18-net
运行ns3代码
./waf --run tap-csma&
测试连接性
docker exec -it test02 ping 10.1.1.2
docker exec -it test03 ping 10.1.1.3
|