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

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

时间:2022-09-22 19:22:46浏览次数:35  
标签:info ovs s2 s1 vlan 交换机 vSwitch net Open

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

一、实验目的

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

二、实验环境

Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求

ovs-vsctl基础操作实践:创建OVS交换机,以ovs-xxxxxxxxx命名,其中xxxxxxxxx为本人学号。在创建的交换机上增加端口p0和p1,设置p0的端口号为100,p1的端口号为101,类型均为internal;为了避免网络接口上的地址和本机已有网络地址冲突,需要创建虚拟网络空间(参考命令netns)ns0和ns1,分别将p0和p1移入,并分别配置p0和p1端口的ip地址为190.168.0.100、192.168.0.101,子网掩码为255.255.255.0;最后测试p0和p1的连通性。

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

执行ovs-vsctl show命令截图
请添加图片描述
p0和p1连通性测试的截图
请添加图片描述

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

开启Mininet CLI并执行pingall命令的截图
请添加图片描述
符合h1与h3互通,h2与h4互通,其余主机不互通。

上述目录下查看OVS流表的命令结果截图
s1:
请添加图片描述
s2:请添加图片描述

运行验证结果截图:

mininet CLI中pingall

在这里插入图片描述
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.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()

执行结果
在这里插入图片描述
在这里插入图片描述

四、心得体会

在实验难度方面,本次实验,SDN实验的基本实验难度不大,对照着老师给的PDF挨着完成就可以了,但是在进阶的方面,因为之前我并没有python基础,所以需要去学习相应的内容,花费了一定的时间和精力。
在收获方面,在本次实验中,我复习到了计算机网络课程中的VLAN相关知识,学习了如何使用ovs指令给交换机打上VLAN标签,并进行流表下发。
还学习到了如何用wireshark进行抓包。在进阶要求中,学到了如何通过直接运行python程序建立完成对VLAN的划分与流表的下发。
通过本次实验,我对VLAN的概念有了更深刻的理解,通过划分VLAN,可以分割广播域,避免广播风暴对其他主机带来不好的影响。 实验过程也锻炼了我解决问题的能力。同时我在做这个实验过程中,也遇到了很多小问题,但通过上网查找解决方法以及询问同学,解决了这些问题,毋庸置疑,他们给予了我很多帮助,同时也表明,我解决问题的能力还有待加强。
实验反思方面:实验中有涉及到一部分python的内容,我对这一块还不是很熟悉,而且python现在应用面越来越广泛,需要花时间去多了解学习,同时要增强自己解决问题的能力

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

相关文章

  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的......
  • sysbench: error while loading shared libraries: libpq.so.5: cannot open shared o
    背景我的环境有MySQL、PostgreSQL数据库,为了压测方便我安装了sysbench[root]#gitclonehttps://github.com/akopytov/sysbench.git[root]#cdsysbench[root]#shau......
  • 如何贡献OpenHarmony开发样例
    单丝不成线,独木不成林,一个社区想要健康蓬勃发展离不开社区参与者的持续贡献。而社区贡献点有很多种,本文以贡献OpenAtomOpenHarmony(以下简称“OpenHarmony”)开发样例为例,围......
  • OpenPLC
    官网地址https://openplcproject.com/简介支持Windows、Linux、MAC符合IEC61131-3标准要求(可编程序控制器第3部分:编程语言),国标为GB/T15969.3。三个组成部分:编辑......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的O......
  • OpenSSH安全漏洞 (CVE-2021-41617)漏洞修复
    事件说明:OpenSSH(OpenBSDSecureShell)是Openbsd计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连......
  • 实验2:Open vSwitch虚拟交换机实践
    a)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令,以及p0和p1连通性测试的执行结果截图;b)/home/用户名/学号/lab2/目录下开启MininetCLI,执行pingall命令的截......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的1.能够对OpenvSwitch进行基本操作;2.能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;3.能够通过Mininet的......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......