20210419 期中週
課堂資料
MIniedit
課堂練習
MiniEdit 01
cd mininet-wifi/
cd examples/
python miniedit.py
cd ..
cd ..
cd test-miniedit/
gedit 1.pypython 1.pyh1 ping h2 -c 5
1.py
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import Host, OVSKernelSwitch
from mininet.cli import CLI
from mininet.link import TCLink, Intf
from mininet.log import setLogLevel, info
from subprocess import call
def myNetwork():
net = Mininet(topo=None,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
info( '*** Add switches/APs\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch, failMode='standalone')
info( '*** Add hosts/stations\n')
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
info( '*** Add links\n')
net.addLink(h1, s1)
net.addLink(h2, s1)
net.addLink(h3, s1)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches/APs\n')
net.get('s1').start([])
info( '*** Post configure nodes\n')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()cd ..MiniEdit 02
cd mininet-wifi/
cd examples/
python miniedit.py



cd ..
cd ..
cd test-miniedit/
gedit 2.pypython 2.pypingall -c 52.py
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import Host, Node, OVSKernelSwitch
from mininet.cli import CLI
from mininet.link import TCLink, Intf
from mininet.log import setLogLevel, info
from subprocess import call
def myNetwork():
net = Mininet(topo=None, build=False, ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
info( '*** Add switches/APs\n')
r1 = net.addHost('r1', ip='0.0.0.0')
r1.cmd('sysctl -w net.ipv4.ip_forward=1')
s3 = net.addSwitch('s3', cls=OVSKernelSwitch, failMode='standalone')
r2 = net.addHost('r2', ip='0.0.0.0')
r2.cmd('sysctl -w net.ipv4.ip_forward=1')
info( '*** Add hosts/stations\n')
h3 = net.addHost('h3', cls=Host, ip='192.168.20.2/24', defaultRoute='via 192.168.20.254')
h1 = net.addHost('h1', cls=Host, ip='192.168.10.1/24', defaultRoute='via 192.168.10.254')
h2 = net.addHost('h2', cls=Host, ip='192.168.20.1/24', defaultRoute='via 192.168.20.254')
info( '*** Add links\n')
net.addLink(s3, h3)
net.addLink(h1, r1)
net.addLink(r1, r2)
net.addLink(r2, s3)
net.addLink(h2, s3)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches/APs\n')
net.get('s3').start([])
info( '*** Post configure nodes\n')
r1.cmd("ifconfig r1-eth0 0")
r1.cmd("ifconfig r1-eth1 0")
r1.cmd("ifconfig r1-eth0 192.168.10.254/24")
r1.cmd("ifconfig r1-eth1 10.0.0.1/24")
r1.cmd("ip route add 192.168.20.0/24 via 10.0.0.2")
r2.cmd("ifconfig r2-eth0 0")
r2.cmd("ifconfig r2-eth1 0")
r2.cmd("ifconfig r2-eth0 10.0.0.2/24")
r2.cmd("ifconfig r2-eth1 192.168.20.254/24")
r2.cmd("ip route add 192.168.10.0/24 via 10.0.0.1")
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()cd ..MiniEdit 03
cd mininet-wifi/
cd examples/
python miniedit.py

cd ..
cd ..
cd test-miniedit/
gedit 3.pypython 3.pyh1 ping h2 -c 5
3.py
!/usr/bin/python
from mininet.net import Mininet from mininet.node import Controller, OVSKernelSwitch, Host from mininet.cli import CLI from mininet.link import TCLink, Intf from mininet.log import setLogLevel, info from subprocess import call
def myNetwork():
net = Mininet(topo=None,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
c0 = net.addController(name='c0',
controller=Controller,
protocol='tcp',
port=6633)
info( '*** Add switches/APs\n')
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
info( '*** Add hosts/stations\n')
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
info( '*** Add links\n')
net.addLink(s2, h2)
net.addLink(s1, h1)
net.addLink(s1, s2)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches/APs\n')
net.get('s2').start([c0])
net.get('s1').start([c0])
info( '*** Post configure nodes\n')
CLI(net)
net.stop()
if name == 'main': setLogLevel( 'info' ) myNetwork()
h1 ping h2 -c 5之前
ovs-ofctl dump-flows s1ovs-ofctl dump-flows s2
h1 ping h2 -c 5之後
ovs-ofctl dump-flows s1ovs-ofctl dump-flows s2
cd ..MiniEdit 03-1
cd mininet-wifi/
cd examples/
python miniedit.py

cd ..
cd ..
cd test-miniedit/
gedit 3-1.pypython 3-1.pyh1 ping h2 -c 5
載入模組後重新
h1 ping h2
h1 ping h2 -c 5
3-1.py
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import RemoteController, OVSKernelSwitch, Host
from mininet.cli import CLI
from mininet.link import TCLink, Intf
from mininet.log import setLogLevel, info
from subprocess import call
def myNetwork():
net = Mininet(topo=None,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
c0 = net.addController(name='c0',
controller=RemoteController,
ip='127.0.0.1',
protocol='tcp',
port=6633)
info( '*** Add switches/APs\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
info( '*** Add hosts/stations\n')
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
info( '*** Add links\n')
net.addLink(s2, s1)
net.addLink(s1, h1)
net.addLink(s2, h2)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches/APs\n')
net.get('s1').start([c0])
net.get('s2').start([c0])
info( '*** Post configure nodes\n')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
h1 ping h2會失敗,因為是 remote controller, 切換到/home/user/ryu/ryu/app下,將提供的模組載入,再重新h1 ping h2
cd ryu/ryu/appryu-manager simple_switch.py
重新
h1 ping h2之後
ovs-ofctl dump-flows s1ovs-ofctl dump-flows s2
期中題目
mkdir examcd exam
gedit switch.pyLast updated
Was this helpful?