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

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

时间:2022-09-24 00:33:07浏览次数:46  
标签:ovs sudo s2 s1 vlan 交换机 vSwitch net Open

一、实验目的
1、能够对Open vSwitch进行基本操作;
2、能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表;
3、能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open vSwitch交换机
二、实验环境
Ubuntu 20.04 Desktop amd64

三、实验要求
(一)基本要求
a) /home/用户名/学号/lab2/目录下执行ovs-vsctl show命令、以及p0和p1连通性测试的执行结果截图。


b) /home/用户名/学号/lab2/目录下开启Mininet CLI并执行pingall命令的截图、上述目录下查看OVS流表的命令结果截图,wireshark抓包截图,其余文字请勿赘述,否则扣分

开启Mininet CLI并执行pingall命令

查看OVS流表的命令结果

wireshark抓包

(二)进阶要求
阅读SDNLAB实验使用Mininet,编写Python代码,生成(一)中的SDN拓扑,并在代码中直接使用OVS命令,做到可以直接运行Python程序完成和(一)相同的VLAN划分。

#!/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/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, h4,2,1)
    net.addLink(s2, h3,1,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()


187.png)
(三)、个人总结
a)实验感想
本次实验难度并不大,按照老师给的文件可以基本完成。实验中但是在进阶的方面,因为之前我并没有python基础,所以需要去学习相应的内容,花费了一定的时间和精力。在收获方面,在本次实验中,通过实验掌握了对 Open vSwitch 的基本操作,并且能够通过命令行终端用OVS 命令操作Open vSwitch交换机以及管理下发流表。还学习了如何使用ovs指令给交换机打上VLAN标签,并进行流表下发。总的来说对于python代码了解不够多,还是需要去多注意细节问题。
b)实验过程中问题及解决办法
一开始在ovs交换机创建端口的时候,发现创建在家目录下,后面需要将其删除要用ovs-vsctl del-prot 交换机名 端口号,将之前的端口删除在到想要的文件目录下创建ovs交换机端口。
在进行抓包是,使用sudo wireshark进入界面选择端口,需要在打开一个终端打开mininet CLI并且执行pingall就可以看到发包信息,有特殊标记的就是我们选择的端口接受和发送的包
不能创建新的网络
解决方法:用sudo mn -c来清除网络

标签:ovs,sudo,s2,s1,vlan,交换机,vSwitch,net,Open
From: https://www.cnblogs.com/2811747202gzh/p/16724762.html

相关文章

  • 实验2:Open vSwitch虚拟交换机实践
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201/homework/1270......
  • OpenGL+VS2022环境配置
    OpenGL+VS2022环境配置网上博客写的都什么玩意儿,配了半天终于配出来了。。。简单的很!新建文件夹新建一个文件夹,你可以命名为OpenGL,当然你也可以选你喜欢的名字。我这里......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的1、能够对OpenvSwitch进行基本操作;2、能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;3、能够通过Minine......
  • 实验2:Open vSwitch虚拟交换机实践
    基本要求1.a)1.b)进阶要求个人总结本次实验难度比之前大些,需要理解更多知识点以及相关程序的使用本次实验熟悉了OVS命令,学习了如何在命令行下使用以及在pyth......
  • ROS_open3d—点云叠帧可视化
    点云可视化pip3installopen3d-python定位和pose连续多帧显示点云,需要点云文件和定位信息(IMU惯导信息)时间对齐空间对齐时间对齐:就是说我们哪一个时......
  • 22.OpenFeign调用第三方服务 (重要!)
    摘自 https://blog.csdn.net/qq_16549251/article/details/125453830 1.在pom.xml文件中添加OpenFeign的依赖.OpenFeign中集成了ribbion实现负载均衡<!--OpenFeign-......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的​ 1.能够对OpenvSwitch进行基本操作;​ 2.能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;​ 3.能够......
  • 实验2:Open vSwitch虚拟交换机实践
    1./home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图;ovs-vsctlshow命令ovs-ofctlshowovs命令p0,p1连通性2./home/用户......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......