首页 > 其他分享 >实验二

实验二

时间:2022-11-06 18:13:25浏览次数:41  
标签:info s2 s1 vlan 实验 net OpenFlow13

1.基础要求
a) /home/用户名/学号/lab2/目录下执行ovs-vsctl show命令截图

p0和p1连通性测试的执行结果截图

b) /home/用户名/学号/lab2/目录下开启Mininet CLI并执行pingall命令的截图

上述目录下查看OVS流表的命令结果截图

wireshark抓包截图

2.进阶要求

!/usr/bin/python

from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
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 myNet():

net = Mininet( topo=None,
               build=False,
               ipBase='10.0.0.0/8')

info( '*** Adding controller\n' )
c0=net.addController(name='c0',
                  controller=Controller,
                  ip='127.0.0.1',
                  protocol='OpenFlow13',
                  port=6653)

info( '*** Add hosts\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)
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 switches\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

info( '*** Add links\n')
net.addLink(h1, s1, 1, 1)
net.addLink(h2, s1, 1, 2)
net.addLink(h3, s2, 1, 1)
net.addLink(h4, s2, 1, 2)
net.addLink(s1, s2, 3, 3)

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')
s1.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
s1.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
s1.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1')
s1.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2')

s2.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:3')
s2.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:3')
s2.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:1')
s2.cmd('sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:2')

info( "*** Running test\n" )
h1.cmdPrint( 'ping -c 3 ' + h4.IP() )
h1.cmdPrint( 'ping -c 3 ' + h3.IP() )
h2.cmdPrint( 'ping -c 3 ' + h4.IP() )
h2.cmdPrint( 'ping -c 3 ' + h3.IP() )
h3.cmdPrint( 'ping -c 3 ' + h2.IP() )
h3.cmdPrint( 'ping -c 3 ' + h1.IP() )
h4.cmdPrint( 'ping -c 3 ' + h2.IP() )
h4.cmdPrint( 'ping -c 3 ' + h1.IP() )

CLI(net)
net.stop()

if name == 'main':
setLogLevel( 'info' )
info( '*** Scratch network demo (kernel datapath)\n' )
Mininet.init()
myNet()





3.个人总结
本次实验基础部分难度较低,跟着ppt一步一步坐下来,没有出现什么问题。通过实验掌握了对 Open vSwitch 的基本操作,并且能够通过命令行终端用OVS 命令操作Open vSwitch交换机以及管理下发流表。在进阶要求部分,对参考资料的python代码进行了初步理解,学会了直接在python脚本中去验证实验的结果。

标签:info,s2,s1,vlan,实验,net,OpenFlow13
From: https://www.cnblogs.com/crrcrr/p/16863239.html

相关文章

  • 实验1:SDN拓扑实践
    实验1:SDN拓扑实践一、实验目的能够使用源码安装Mininet;能够使用Mininet的可视化工具生成拓扑;能够使用Mininet的命令行生成特定拓扑;能够使用Mininet交互界面管理SDN拓......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验二:逻辑回归算法实验
    实验二:逻辑回归算法实验 【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损失函数;针对特定应用场景及数据,能应用逻......
  • 软工实验课
    (1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢计算机这个专业吗? 答:是的你现在后悔选择了这个专业吗?答:不后悔你认为你现在最喜欢的领域是什么(可以是计......
  • 实验3
    1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN806voidprint_text(intline,intcol,chartext[]);......
  • 实验三
    task1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces......
  • 实验3
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明void......
  • 实验二
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open......
  • 实验6:开源控制器实践——RYU
    一、实验目的1、能够独立部署RYU控制器;2、能够理解RYU控制器实现软件定义的集线器原理;3、能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktop......
  • 实验3
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces......