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

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

时间:2022-09-22 16:45:40浏览次数:40  
标签:info s2 s1 vlan 交换机 import vSwitch net Open

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

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



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

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



(二)进阶要求
代码:
`#! /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/8')

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', 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 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')#写入s1,s2的命令

CLI(net)
net.stop()

if name == 'main':
setLogLevel( 'info' )
myNetwork()`
执行结果:


个人总结:
本次实验总体来说难度不大,中间一些细节的地方容易出错。通过本次实验,我学习了Open vSwitch虚拟交换机,流表转发,编写Python代码生成SDN拓扑等相关知识。但是除了知识本身,我还学会了要有耐心和细心地处理每一件事情。就如同实验中模仿s0对s1流表进行操作时,需要将那几个操作中的s0都换成s1,分配的虚拟空间也不能是和s0一样的ns0,要改成ns1,一不小心就会出现错误。通过实验,我还学会了使用wireshark进行抓包,刚开始没有注意选择的端口,导致一直抓不到想要的包,在询问同学后,才发现没有选择合适的端口进行抓包。总体来说,通过本次实验,我学到了很多东西,同时也意识到自己存在的很多问题和不足之处,仍然需要不断的学习、进步。

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

相关文章

  • 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......
  • 实验2:Open vSwitch虚拟交换机实践 实验要求
    (一)基本要求提交1.a)/home/用户名/学号/lab2/目录下执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图;b)/home/用户名/学号/lab2/目录下开启MininetCLI并......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的O......
  • getSessionFactory().openSession()导致druid连接池中的连接都占用满但无法回收
    该问题产生的现象页面刷新几次后,就卡住,线上就得需要重新部署(还好是测试环境,不是真正生产环境)过程及原因查看日志线程池满了Causedby:org.springframework.jdbc.Can......
  • openEuler离线安装mysql5.7.24
    1.官网下载程序包https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz2.上传至/usr/local/src目录下,解压3.将解压包移动到/us......
  • nxopen ug8.5 vb.net 定位块底面打孔工具
    OptionStrictOffImportsSystemImportsNXOpenImportsNXOpen.BlockStylerImportsNXOpen.UFImportsSystem.Collections.Generic'----------------------------......