mininet-mptcp-topo1.py 解析,iperf命令

勘误:h1-th0:ip:10.0.1.2/24应该是h1-th1
addlink()
self.addLink(node1, node2, bw=10, delay='5ms', max_queue_size=1000, loss=10, use_htb=True)
上述表示添加双向链路、延迟和丢包率等特性,参数:
bw: 表示带宽的数值,单位Mbps
delay: 表示延迟,如'5ms' '100us'
loss: 表示丢包率,0-100
简单用法:
linkopts = dict(bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)
# (or you can use brace syntax: linkopts = {'bw':10, 'delay':'5ms', ... } )
self.addLink(node1, node2, **linkopts)
#表示运用上面规则
可以设置此参数,修改链路的延迟和丢包
注释版:mptcp-topo1.py
#!/usr/bin/env python
from mininet.net import Mininet
from mininet.cli import CLI
from mininet.link import Link, TCLink,Intf
from subprocess import Popen, PIPE
from mininet.log import setLogLevel
if '__main__' == __name__:
setLogLevel('info')
#创建对象net
net = Mininet(link=TCLink)
key = "net.mptcp.mptcp_enabled"
#value数值表示是否开启mptcp
#1表示开启,0表示不开启,详见笔记02
value = 1
#执行命令
p = Popen("sysctl -w %s=%s" % (key, value), shell=True, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
print "stdout=",stdout,"stderr=", stderr
#增加主机
h1 = net.addHost('h1')
h2 = net.addHost('h2')
r1 = net.addHost('r1')
#设置链路参数10Mbps,当然也可以添加其他选项
linkopt={'bw':10}
#增加一个双向链接,详细参数见下方详解
net.addLink(r1,h1,cls=TCLink, **linkopt)
net.addLink(r1,h1,cls=TCLink, **linkopt)
net.addLink(r1,h2,cls=TCLink, **linkopt)
net.addLink(r1,h2,cls=TCLink, **linkopt)
net.build()
#配置网络设备 此时只是声明
r1.cmd("ifconfig r1-eth0 0")
r1.cmd("ifconfig r1-eth1 0")
r1.cmd("ifconfig r1-eth2 0")
r1.cmd("ifconfig r1-eth3 0")
h1.cmd("ifconfig h1-eth0 0")
h1.cmd("ifconfig h1-eth1 0")
h2.cmd("ifconfig h2-eth0 0")
h2.cmd("ifconfig h2-eth1 0")
"""
/proc/sys/net/ipv4/ip_forward
该文件表示是否打开IP转发。
0,禁止
1,转发
基本用途:如VPN、路由产品的利用;
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。
配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能
less /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。
可使用命令echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件内容,重启网络服务或主机后效果消失。若要其自动执行,可将命令echo "1" > /proc/sys/net/ipv4/ip_forward 写入脚本/etc/rc.d/rc.local 或者 在/etc/sysconfig/network脚本中添加 FORWARD_IPV4="YES"
"""
r1.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")
#临时为网卡配置ip地址和掩码
r1.cmd("ifconfig r1-eth0 10.0.0.1 netmask 255.255.255.0")
r1.cmd("ifconfig r1-eth1 10.0.1.1 netmask 255.255.255.0")
r1.cmd("ifconfig r1-eth2 10.0.2.1 netmask 255.255.255.0")
r1.cmd("ifconfig r1-eth3 10.0.3.1 netmask 255.255.255.0")
h1.cmd("ifconfig h1-eth0 10.0.0.2 netmask 255.255.255.0")
h1.cmd("ifconfig h1-eth1 10.0.1.2 netmask 255.255.255.0")
h2.cmd("ifconfig h2-eth0 10.0.2.2 netmask 255.255.255.0")
h2.cmd("ifconfig h2-eth1 10.0.3.2 netmask 255.255.255.0")
#路由规则的添加
"""
进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
ip rule show 显示路由规则路由规则的添加
ip rule add from 192.168.1.10/32 table 1 pref 100
如果pref值不指定,则将在已有规则最小序号前插入注:
创建完路由规则若需立即生效须执行#ip route flush cache;刷新路由缓冲
可参数解析如下:
From -- 源地址
To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos -- IP包头的TOS(type of sevice)域Linux高级路由-
Dev -- 物理接口
Fwmark -- iptables标签
"""
h1.cmd("ip rule add from 10.0.0.2 table 1")
h1.cmd("ip rule add from 10.0.1.2 table 2")
#更改默认路由表
#在表一中10.0.0.0/24 通过网卡h1-th0转发
h1.cmd("ip route add 10.0.0.0/24 dev h1-eth0 scope link table 1")
#在一号表中添加默认路由为10.0.0.1
h1.cmd("ip route add default via 10.0.0.1 dev h1-eth0 table 1")
h1.cmd("ip route add 10.0.1.0/24 dev h1-eth1 scope link table 2")
h1.cmd("ip route add default via 10.0.1.1 dev h1-eth1 table 2")
#增加一条默认的全局路由记录。欲到达的目标网络XX.XX.XX.XX(nexthop via XX.XX.XX.XX), 经由网关(以太网卡 eth0)
h1.cmd("ip route add default scope global nexthop via 10.0.0.1 dev h1-eth0")
h2.cmd("ip rule add from 10.0.2.2 table 1")
h2.cmd("ip rule add from 10.0.3.2 table 2")
h2.cmd("ip route add 10.0.2.0/24 dev h2-eth0 scope link table 1")
h2.cmd("ip route add default via 10.0.2.1 dev h2-eth0 table 1")
h2.cmd("ip route add 10.0.3.0/24 dev h2-eth1 scope link table 2")
h2.cmd("ip route add default via 10.0.3.1 dev h2-eth1 table 2")
h2.cmd("ip route add default scope global nexthop via 10.0.2.1 dev h2-eth0")
CLI(net)
net.stop()
run the script:
In home sudo python mptcp-topo1.py
相关链接:
https://blog.csdn.net/asddasads/article/details/110678750
https://github.com/mininet/mininet/wiki/Introduction-to-Mininet
https://www.cnblogs.com/mmx8861/p/9277108.html
https://blog.csdn.net/weixin_34208283/article/details/85659274
https://blog.csdn.net/li_101357/article/details/78415461
路由表操作:
https://www.cnblogs.com/yldf/p/1e19442f0dcd926c50ded4c667199b26.html
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

浙公网安备 33010602011771号