首页 > 其他分享 >Open vSwitch虚拟交换机实践

Open vSwitch虚拟交换机实践

时间:2022-09-24 23:11:45浏览次数:50  
标签:info ovs s2 s1 vlan 交换机 vSwitch net Open

a) /home/用户名/学号/lab2/目录下执行ovs-vsctl show命令、以及p0和p1连通性测试的执行结果截图;

b) /home/用户名/学号/lab2/目录下开启Mininet CLI并执行pingall命令的截图、上述目录下查看OVS流表的命令结果截图,wireshark抓包截图



进阶要求:




点击查看代码
#!/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()

个人总结:
本次实验有用到上一次构建拓扑的的方法,主要先构建一个拓扑结构,然后使用了新的ovs交换机,将原本全通的链路进行阻断,这其中在一开始顺序搞错了,创建好全通的拓扑以后没有添加流表就继续pingall了以为出错,又重新检查代码,在添加好流表以后,成功阻断,实现了实验要求的h1和h3,h2和h4的连通。然后下载没用过的抓包软件还是比较顺利,要注意的是,将wireshark软件打开后,需要重回mininet,pingall一下,这时wireshark将会对选择的s1进行抓包。在进阶实验中,根据参考实验写好代码以后需要将之前构建的拓扑结构删除,不然端口会一直被占用,使用sudo mn -c进行删除

标签:info,ovs,s2,s1,vlan,交换机,vSwitch,net,Open
From: https://www.cnblogs.com/ririgriffin/p/16726929.html

相关文章

  • 实验2:Open vSwitch虚拟交换机实践
    (一)基本要求执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果开启MininetCLI并执行pingall命令查看OVS流表的命令结果wireshark抓包(二)进阶要求#!/usr......
  • Python cv2(Opencv) 图像运算
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • Python cv2(OpenCV) 图像处理
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • openstack题
    1、修改主机名控制节点:hostnamectlset-hostnamecontrollerhostnamectl 进行查看计算节点:hostnamectlset-hostnamecomputehostnamectl 进行查看2、修改hosts......
  • 实验二ovs交换机
    1.请用Markdown排版;2.基础要求提交a)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图;b)/home/用户名/学号/lab2/目录下......
  • Mac安装graphviz报错Error: No such file or directory @ rb_sysopen
    一、背景在学习使用golang性能分析工具proof时,安装可视化工具graphviz的时候报错Error:Nosuchfileordirectory@rb_sysopen。二、异常Error:Nosuchfileordi......
  • 实验2:Open vSwitch虚拟交换机实践
    基本要求1.ovs-vsctl基础操作实践:创建OVS交换机,以ovs-xxxxxxxxx命名,其中xxxxxxxxx为本人学号。在创建的交换机上增加端口p0和p1,设置p0的端口号为100,p1的端口号为101,类型均......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的1.能够对OpenvSwitch进行基本操作;2.能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;3.能够通过Mininet的......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、基本要求:a)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图;b)/home/用户名/学号......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的O......