SDN第二次上机作业
SDN第二次上机作业
(一)基础
任务一
任务二
任务三
任务四
(二)进阶
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost, RemoteController, Controller
from mininet.node import OVSKernelSwitch, UserSwitch, Node, Host
from mininet.log import setLogLevel
from mininet.link import TCLink
from mininet.cli import CLI
import os
class MyTopo(Topo):
def __init__(self):
Topo.__init__(self)
s1 = self.addSwitch('s1', cls=OVSKernelSwitch)
s2 = self.addSwitch('s2', cls=OVSKernelSwitch)
h1 = self.addHost('h1', cls=Host, ip='192.168.123.1')
h2 = self.addHost('h2', cls=Host, ip='192.168.123.2')
h3 = self.addHost('h3', cls=Host, ip='192.168.123.3')
h4 = self.addHost('h4', cls=Host, ip='192.168.123.4')
self.addLink(s1,h1)
self.addLink(s1,h2)
self.addLink(s2,h3)
self.addLink(s2,h4)
self.addLink(s1,s2)
os.system('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
os.system('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
os.system('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
os.system('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
os.system('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1')
os.system('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:1')
os.system('ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2')
os.system('ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:2')
os.system('ovs-vsctl show')
def simpleTest():
topo=MyTopo()
net = Mininet(topo,host=CPULimitedHost,link=TCLink)
net.start()
CLI(net)
net.stop()
if __name__=='__main__':
setLogLevel('info')
Mininet.init()
simpleTest()
个人总结:
这次实验我个人感觉难度明显增高了,上课听得一知半解,到实验的时候非常的头疼,无从下手,各种问题无法解决,还好在热心同学的帮助下完成了这一次任务。
这次实验遇到的主要问题如下:
1.要用带-O OpenFlow13的代码需要在拓扑->edit->勾选1.0-1.3的Openflow版本,否则会报错
2.划分vlan要现在概念上理解要怎么做,然后实际操作非常的困难(因为不同于界面化的拓扑图,概念上的难以理解和分析),多次测试修改之后才达到了试验需求的效果
3.进阶部分参考了其他同学的代码,但是没有实现最终目的,我的实验结果与预期结果不相符合(但是这份代码在其他的电脑上可以得到正常的实验结果,应该是我虚拟机的问题),希望在之后的学习中能找到解决问题的方法,还有自身也要加强python代码的训练,以完成之后的任务。