首页 > 其他分享 >SDN第三章实验

SDN第三章实验

时间:2024-10-18 23:00:34浏览次数:1  
标签:ovs 第三章 vsctl sudo br0 实验 br 网桥 SDN

实验一:Open vSwitch的安装和配置

由于安装mininet时就已经安装好Open vSwitch了,所以这里略过。

# 查看ovs版本
ovs-vsctl --version

image-20241015212707142

实验二:Open vSwitch的网桥管理

1、实验环境检查

执行sudo ovs-vsctl show命令查看网桥。如果有网桥,则将网桥删除。

# 查看网桥
sudo ovs-vsctl show
# 删除网桥br0
sudo ovs-vsctl del-br br0

image-20241015215303605

2、添加网桥和端口

# 添加名称为br0的网桥
sudo ovs-vsctl add-br br0
# 列出所有网桥
sudo ovs-vsctl list-br
# 将物理网卡eth0挂接到网桥br0上
sudo ovs-vsctl add-port br0 eth0
# 列出挂接到网桥br0上的所有网卡
sudo ovs-vsctl list-ports br0
# 列出挂接到eth0上的所有网桥
sudo ovs-vsctl port-to-br eth0
# 查看Open vSwitch的网络状态
sudo ovs-vsctl show

image-20241015215802953

3、删除网桥和端口

# 删除挂接到网桥br0上的网卡eth0
sudo ovs-vsctl del-port br0 eth0
# 查看网络状态
sudo ovs-vsctl show
# 删除网桥br0
sudo ovs-vsctl del-br br0
# 再次查看网络状态
sudo ovs-vsctl show

image-20241015220709053

如果不删除eth0而直接删除br0,则br0及挂接到br0上的端口也会被一并删除。

实验三:Open vSwitch的流表管理

1、实验环境检查

# 查看网桥
sudo ovs-vsctl show
# 删除网桥br0
sudo ovs-vsctl del-br br0

没有网桥则不需要删除。

2、流表管理

(1)添加网桥并查看虚拟交换机的基本信息。

sudo ovs-vsctl add-br br0
sudo ovs-ofctl show br0

image-20241015221926370

  • 数据路径标识符 (dpid): 0000ea5a25ce3741。这是桥接器的唯一标识符。
  • 表数量 (n_tables): 254。表示该桥接器支持的最大流表数量为254个。
  • 缓冲区数量 (n_buffers): 256。这表明桥接器可以同时处理的最大数据包缓存数量是256个。
  • 功能 (capabilities): 包括流统计信息、表统计信息、端口统计信息和队列统计信息。这些功能允许收集关于网络流量的详细统计数据。
  • 支持的动作 (actions): 列出了桥接器能够执行的一系列操作,例如设置VLAN标签、修改数据包头部字段等。
  • LOCAL(br0): 表示这是一个本地接口,其MAC地址为 ea:5a:25:ce:37:41。configstate 字段都为0,意味着此接口没有特定的配置或状态标志被设置。
  • 速度: 当前和最大速度均为0 Mbps,这可能是因为这个接口是一个虚拟接口,并不直接对应于物理网卡的速度。
  • 配置 (OFPT_GET_CONFIG_REPLY): 这部分信息显示了交换机的配置,如数据包碎片处理方式(frags=normal)和当流表未命中时发送给控制器的数据包长度(miss_send_len=0)。

(2)查看交换机的初始流表信息。

sudo ovs-ofctl dump-flows br0

image-20241015222206772

(3)添加一条流表项。

设置流表生命周期为1000s,优先级为17,入端口为3,动作是output:2。

sudo ovs-ofctl add-flow br0 idle_timeout=1000,priority=17,in_port=3,actions=output:2

image-20241015222531482

(4)查看交换机的所有流表信息。

sudo ovs-ofctl dump-flows br0

image-20241015222656855

(5)删除端口为3的流表项,再次查看流表信息。

sudo ovs-ofctl del-flows br0 in_port=3
sudo ovs-ofctl dump-flows br0

image-20241015222923698

实验四:Open vSwitch的QoS设置及端口映射

场景一 QoS设置

(1)实验环境检查

查看并删除交换机S1中的网桥。

ovs-vsctl show
ovs-vsctl del-br br0
# 注:如果是普通用户,需要加上sudo,之后的命令也是一样。

image-20241015224204572

分别在交换机S1和主机1中使用ifconfig命令查看IP地址信息。

image-20241015224702707

在我的环境中,主机1与S1的IP分别为192.168.66.51和192.168.66.52。(请保证主机1与S1在同一网段,否则后续实验将无法进行)。

后续涉及到IP地址的命令需要根据自己的情况来调整。

测试主机与交换机的连通性

# 用主机1去ping交换机S1
ping your_S1_IP
# 我的环境下:
ping 192.168.66.52

image-20241015224902855

(2)测试主机间的吞吐量

在交换机S1上查看OVS进程。

ps -ef | grep ovs

image-20241015225315268

创建网桥br0,并将eth0网卡挂接到br0。

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0

image-20241015225528172

注:将eth0挂接到br0上后,虚拟机的网络将变得不可用(不可访问外网、物理机、哪怕是同一网段的虚拟机也无法访问。

如果是使用远程方式登录的虚拟机,接下来的命令请转到虚拟机内部执行。

将eth0的IP地址赋给br0。

# 将 eth0 的 IP 地址设置为 0.0.0.0,实际上就是移除了它的 IP 圴址,并保持接口处于活动状态。
ifconfig eth0 0 up
# 为 br0 配置 IP 地址并激活(执行完下面这条命令后,就可以继续使用远程连接登录了)
ifconfig br0 192.168.66.52/24 up
# 查看网卡信息
ifconfig

image-20241015232356578

下面这部分内容与本实验无关。

注意:此时的网络连接并没有完全恢复正常,虚拟机依然无法访问外网。外部(物理机,以及其他虚拟机)可以访问该虚拟机,但是改虚拟机无法主动访问外部网络。

原因可能是因为我们移除了eth的地址,并将eth原先的地址赋给了br0,希望通过br0来通信。但是,查看路由表发现,默认网关仍然是指向eth0的,所以造成了虚拟机无法访问外部网络。

image-20241015234054734

解决方法是,删除接口为eth0的默认网关,并添加新的接口为br0的默认网关:

# 删除旧的默认网关
sudo route del default gw 192.168.66.254 eth0
# 添加新的默认网关,接口为br0
sudo route add default gw 192.168.66.254 br0

image-20241015234403078

将Open vSwitch主机作为Netperf的服务器:

netserver -p 9991

image-20241018110002841

服务启动后,默认程序在后台运行,可以使用ps -ef | grep netserver命令查看进程

将主机1作为Netperf的客户端,测量主机1与服务器之间的吞吐量。

# 在主机1上执行该命令
netperf -t UDP_STREAM -H [交换机S1的IP] -p 9991
# 例如:
netperf -t UDP_STREAM -H 192.168.66.52 -p 9991

image-20241018110919726

可以看到,上面的测试中发送了两组测试数据,吞吐量都是900*10**6bps,即900Mbps左右(1bps就是1bit/s)。

(3)设置QoS参数

现在,回到交换机S1上,将eth0的吞吐量设置为(100±50)Mbit/s。

# 设置入方向流量速率限制(设置限制最大速率)
ovs-vsctl set interface eth0 ingress_policing_rate=100000
# 设置入方向流量突发限制(设置最大浮动速率)
ovs-vsctl set interface eth0 ingress_policing_burst=50000
# ingress_policing_rate 的默认单位都是Kbps, ingress_policing_burst 的默认单位是Kb。

ingress_policing_rate:应允许此 VM 发送的最大速率(以 Kbps 为单位)

ingress_policing_burst:管制算法的参数,用于指示最大数据量 (以 Kb) 为单位),此接口可以发送的超出管制速率。

image-20241018112228697

设置好后,回到主机1,再次测试吞吐量:

# 在主机1上执行该命令
netperf -t UDP_STREAM -H [交换机S1的IP] -p 9991
# 例如:
netperf -t UDP_STREAM -H 192.168.66.52 -p 9991

image-20241018112435761

由运行结果可知,吞吐量确实被限制了。

场景二 端口映射

(1)实验环境准备

由于当前环境中没有虚拟交换机,所以就新建一个。

# 创建网桥br-sw
root@UbuntuDesktop:~# ovs-vsctl add-br br-sw
# 添加端口
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth1
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth2
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth3
# 查看网桥信息
root@UbuntuDesktop:~# ovs-vsctl show

image-20241018125614189

(2)设置端口映射

查看端口序号uuid。

ovs-vsctl list port | more

eth1的uuid是d7a1718e-f2b2-4010-a854-17ec3cbf09b9

image-20241018130006596

eth2的uuid是13efc493-6153-4dd1-a11f-445595ec353a

image-20241018130100267

eth3的uuid是389d148a-5117-4d67-8402-ecc9e53a4937

image-20241018130132144

进行端口映射,将发往eth1端口和从eth2端口发出的数据包全部定向到eth3。

ovs-vsctl \
-- set bridge br-sw mirrors=@m \
-- --id=@m create mirror name=mymirror \
   select-dst-port=eth1的uuid \
   select-src-port=eth2的uuid \
   output-port=eth3的uuid

# 验证配置是否成功
ovs-vsctl list mirror

image-20241018131158446

练习

第8题

假设某网吧使用 OVS 进行总机数据交换,该 OVS现有网桥及端口信息如图 3-56 所示,假设端口 eth1 和eth4 的速率需求为 1000 kbit/s。现要求用 eth8 对上述两个端口进行监控,同时为3个端口提供 QoS 保障。试根据实验所学内容,写出 OVS 的关键配置步骤。

(1)实验环境准备

根据题目要求创建网桥及对应端口。

root@UbuntuDesktop:~# ovs-vsctl add-br br-sw
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth1
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth4
root@UbuntuDesktop:~# ovs-vsctl add-port br-sw eth8
root@UbuntuDesktop:~# ovs-vsctl show

image-20241018224336905

(2)设置QoS参数

等老师讲了再做。

其他

关于ingress_policing_rate 和 ingress_policing_burst 的默认单位的问题。

书上说两者都是kbit/s。但我在一片博客中看到"ingress_policing_burst:策略算法的一个参数,用于指示接口可发送的超过配置的策略速率的最大数据量(以KB为单位)。",问AI,AI的回答是bit/s。

于是我查阅了ovs官方文档,看到下面这样一段。但这也只能证明rate的默认单位是kbit/s。

image-20241018120450597

后来继续找,终于让我找到了,书上说的是对的。

官方文档QoS配置链接:服务质量 (QoS) 速率限制 — Open vSwitch 3.4.90 文档

虽然我的Open vSwitch版本是2.0.2但是,根据实验结果分析,默认单位确实是kbit/s。

image-20241018121409470

标签:ovs,第三章,vsctl,sudo,br0,实验,br,网桥,SDN
From: https://www.cnblogs.com/chuangblog/p/18475192

相关文章

  • 20222306 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.1实践目标(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程(2)使用socat获取主机操作Shell,任务计划启动(3)使用MSFmeterpreter(或其他软件)生成可执行文件,利用ncat或socat传......
  • 20222406 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    202224062024-2025-1《网络与系统攻防技术》实验二实验报告1.实验内容1.1实验目标使用netcat获取主机操作Shell,cron启动某项任务(任务自定)使用socat获取主机操作Shell,任务计划启动使用MSFmeterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主......
  • 基于SSM+微信小程序的实验室设备故障报修管理系统2
    ......
  • 20222424 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    202224242024-2025-1《网络与系统攻防技术》实验二实验报告1.实验内容使用netcat获取主机操作Shell,cron启动某项任务使用socat获取主机操作Shell,任务计划启动使用MSFmeterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell使用MSFmete......
  • 20222408 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.1本周学习内容本次实验中,学习的重点是后门的实现与启动方式,学习内容还有后门的定义、原理以及可能影响,netcat、socat、MSFmeterpreter软件的应用。1.2实验内容简述使用netcat获取主机操作Shell,利用cron启动一项任务使用socat获取主机操作Shell,利用创建任务计......
  • pth转onnx转tflite并固定输入(附代码和实验结果)
    文章目录前言一、pth2onnx二、onnx2tf2.1安装依赖包2.2转换代码2.3命令解释三、转换测试3.1onnx输入输出:tflite_float32输入输出:3.3tflite_in8输入输出:3.4大小比较3.5超分测试原图:3.5.1onnx:3.5.2tflite_float32:3.5.2tflite_int8:总结前言最近工程上在做基......
  • 20222427 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.1本周学习内容更加深入地学习了缓冲区溢出的相关知识。学习了关于ncat,socat等工具的原理,并尝试使用。初步学习了关于后门的基础知识。1.2实践目标(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)PS:cron是linux下用来周期性的执行某种任务或......
  • 惯性导航基础实验
    前言:这是山科测院的某次实验设计,由于当时种种原因导致最后的捷联解算误差很大,故打算利用这次博客进行复盘,也可供日后学弟参考,叠甲(本人水平有限,可能错误很多,欢迎一起探讨!)这部分实验课主要参考严恭敏老师的《捷联惯导算法与组合导航原理》,严老师的网站为:https://www.psins.org......
  • 20222410 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程通过组合应用各种技术实现恶意代码免杀如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软......
  • 20222411 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容1.1实践目标(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程(2)使用socat获取主机操作Shell,任务计划启动(3)使用MSFmeterpreter(或其他软件)生成可执行文件(后门),利用ncat或soca......