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

实验2:Open vSwitch虚拟交换机实践

时间:2022-09-20 23:56:01浏览次数:58  
标签:info s2 s1 vlan 交换机 import vSwitch net Open

实验目的

  1. 能够对Open vSwitch进行基本操作;
  2. 能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表;
  3. 能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open vSwitch交换机

(一)基本要求

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

image

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

image

image

image

    (二)进阶要求

    python代码

    点击查看代码
    #!/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.1/24')
    
        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/24', defaultRoute=None)
        h2 = net.addHost('h2', cls=Host, ip='10.0.0.2/24', defaultRoute=None)
        h3 = net.addHost('h3', cls=Host, ip='10.0.0.3/24', defaultRoute=None)
        h4 = net.addHost('h4', cls=Host, ip='10.0.0.4/24', defaultRoute=None)
    
        info( '*** Add links\n')
        net.addLink(h1, s1, 1, 1)
        net.addLink(s1, h2, 2, 1)
        net.addLink(s1, s2, 3, 3)
        net.addLink(s2, h3, 1, 1)
        net.addLink(s2, h4, 2, 1)
    
        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')
    
        CLI(net)
        net.stop()
    
    if __name__ == '__main__':
        setLogLevel( 'info' )
        myNetwork()
    
    

    image

    image

    image

    个人总结:

    遇到的困难:

    1.忘记上次实验还遗留了拓扑结构,打开运行的时候出错了,才发现要用sudo mn -c命令进行配置删除。
    2.贴指导文件的代码时,代码中间有换行,结果没贴完直接运行出错了,然后pingall发现结果不对,只能重新来过。做这个实验必须谨慎一点!!
    心得:了解了openswitch的使用和配置方法,学会了在命令行下流表的下发,抓包。观察到VLAN的应用。一定程度提升了自学能力,但是还有很多要学的。

标签:info,s2,s1,vlan,交换机,import,vSwitch,net,Open
From: https://www.cnblogs.com/cyd051701128/p/16714129.html

相关文章

  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的......
  • 实验2_Open vSwitch虚拟交换机实践
    一、基础要求a)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令截图:p0和p1连通性测试的执行结果截图:b)/home/用户名/学号/lab2/目录下开启MininetCLI并执行......
  • 实验2:Open vSwitch虚拟交换机实践
    实验目的1.能够对OpenvSwitch进行基本操作;2.能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;3.能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中......
  • 实验2:Open vSwitch虚拟交换机实践
    (一)基本要求(1)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图(2)/home/用户名/学号/lab2/目录下开启MininetCLI并执行......
  • opencv videocapture
    importtimeimportcv2importnumpyasnpfromosimportpathimportpickle'''关于cameraid此处需要稍微说几句。一般我们测试时,可能会通过USB使用多个摄像头,......
  • 实验2:Open vSwitch虚拟交换机实践
    一.基本要求/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图;2.使用Mininet搭建SDN拓扑添加流表s1添加流表22测试......
  • opencv colors
    """在利用python进行画图时,我们可能常常用的颜色就是'k'黑色,'r'红色,'b'蓝色,'g'绿色等,这些颜色分别代表常见的几种颜色。但是当我们画图比较多时,颜色如何分配呢?可以参......
  • 实验2:Open vSwitch虚拟交换机实践
    目录一、基础要求提交a1)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令a2)p0和p1连通性测试的执行结果截图b1)/home/用户名/学号/lab2/目录下开启MininetCLI并执行......
  • 实验2:Open vSwitch虚拟交换机实践
    实验内容(一)基本要求1.ovs-vsctl基础操作实践:创建OVS交换机,以ovs-xxxxxxxxx命名,其中xxxxxxxxx为本人学号。在创建的交换机上增加端口p0和p1,设置p0的端口号为100,p1的端口号......