实验1:SDN拓扑实践
基础要求
a) mininet运行结果图
b)2的执行结果截图
2.a)3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。
2.b)3台主机,每个主机都连接到同1台交换机上。
c)3修改过的”学号.py”代码、Mininet运行结果
#!/usr/bin/env python
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
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\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
info( '*** Add hosts\n')
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None, cpu=0.5)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
info( '*** Add links\n')
net.addLink(s1, s2)
net.addLink(h1, s1, bw=10, delay='5ms', max_queue_size=1000, loss=50, use_htb=True)
net.addLink(h2, s1)
net.addLink(s2, h4)
net.addLink(h3, s2)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches\n')
net.get('s1').start([c0])
net.get('s2').start([c0])
info( '*** Post configure switches and hosts\n')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
执行结果
进阶要求
代码
#!/usr/bin/python
创建网络拓扑
"""Custom topology example
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
"""
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController, CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
class MyTopo(Topo):
"Simple topology example."
def __init__(self):
"Create custom topo."
# Initialize topology
Topo.__init__(self)
L1 = 2
L2 = L1 * 2
L3 = L2 * 2
c = []
a = []
e = []
# add core ovs 第一层交换机 下标 1,2
for i in range(L1):
sw = self.addSwitch('s{}'.format(i + 1))
c.append(sw)
# add aggregation ovs 第二层交换机 下标3~6
for i in range(L2):
sw = self.addSwitch('s{}'.format(L1 + i + 1))
a.append(sw)
# add edge ovs 第三层交换机 下标7~14
for i in range(L3):
sw = self.addSwitch('s{}'.format(L1 + L2 + i + 1))
e.append(sw)
# add links between core and aggregation ovs
for i in range( L1 ):
sw1 = c[i]
for sw2 in a:
self.addLink( sw1, sw2 )
# add links between aggregation and edge ovs
for i in range( L2 ):
temp=i
sw1=a[i]
if (i%2)!=0:
temp=temp-1
temp=temp*2
for sw2 in e[temp:temp+4]:
self.addLink( sw1, sw2 )
#add hosts and its links with edge ovs
count = 1
for sw1 in e:
for i in range(2):
host = self.addHost( 'h{}'.format( count ) )
self.addLink( sw1, host )
count += 1
topos = {'mytopo': (lambda: MyTopo())}
进阶要求执行结果
总结
本次实验是我对mininet的第一次实验,在操作有很多不熟练,还有一些比如pyhton语法遗忘的问题,所以又去翻以前的博客复习了一下。在运行进阶要求代码时,发现了默认是用python2版本,除号是//,还有比如出现缩进同时用空格和tab导致报错,还有一些其他问题,这些问题都是通过搜索引擎找到了解决方案。以上的经历使我对基础的mininet拓扑结构建立和操作有一定的了解,并且进一步培养了我发现问题,解决问题的能力。总体来说,本次实验难度不大,在有参考资料和指导手册的情况下,再辅以搜索引擎,就能解决绝大部分问题并完成实验。
Original: https://www.cnblogs.com/wojiuyishui/p/16687155.html
Author: 我就一水
Title: 实验1:SDN拓扑实践
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578648/
转载文章受原作者版权保护。转载请注明原作者出处!