基于Mininet测量路径的损耗率
控制器采用POX,基于OVS仿真
Mininet脚本
- 创建Node mininet.node Node
- 创建链路连接 mininet.link TCLink
- 设置intf link.intf1 link.intf2
- node.intf1.setMAC()
- 配置HOST
- node.setIP()
- 配置vswitch
- bridge node.cmd(“ovs-vsctl addr-br dp0”)
- 设置controller
contrller -v ptcp: &
- 绑定端口与对应的网桥
- vswitch上的端口号 switch.intfs.values()
ovs-vsctl add-port br0 %s
% intf
- 设置控制器
ovs-vsctl set-controller dp0:127.0.0.1:6653
- 检测是否连接成功,’is_connected’ not in quietRun(‘ovs-vsctl show’)
- ping测试
- 停止网络
- controller.cmd(“kill %” + cname)
- 删除网桥
- 删除端口
概念补充
- network space
在专业的网络世界中,经常使用到Virtual Routing and Forwarding(VRF),比如Cisco,Alcatel-Lucent, Juniper 等。对于L2 switch,自从上世纪90年代就开始使用VLAN,一个物理交换机上可以使用多个广播域,如今大多数交换机都支持4K vlan。
这个概念被引入到L3,如今很多网络设备支持VRF。这意味着,单个物理设备上可运行多个虚拟路由(L3 转发实例)。
在linux中,VRF被叫做“network namespace”,当然了linux中还包括其他namespace,不过本文不讨论。
每个network namespace拥有其对应的路由表(routing table)& 其对应的iptables,并且运行程序运行其中。 为什么有人使用它?比如一个运行在linux上的 Firewall,将firewall的所有服务端口分配给一个network namespace,这样,默认的network namespace 和 Firewall network namespace就运行着