实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令

=》》实验结果速览《《=

一、实验准备

1.实验环境

  • 安装了 Ubuntu 18.04.5 Desktop amd64 的虚拟机;
  • Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解调用控制的方法。
  • 参考资料:
    Open vSwitch使用案例扩展实验
    基于OVS命令的VLAN实现

2.实验任务

  • 使用 Mininet 基于 Python 的脚本,调用“ovs-vsctl”命令直接控制Open vSwitch。
  • 使用默认的交换机泛洪规则,设置更高的优先级规则进行预先定义 IP 报文的转发。
    参考脚本:ovsSingleBr.py
  • 在多个交换机中通过设置不同 TOS 值的数据包将通过不同的方式到达目的地址,验证主机间的连通性及到达目的地址的时间。
    参考脚本:ovsMultiBr.py
  • 学习 ovsSingleBr.py 和 ovsMultiBr.py,在下图拓扑中实现一个 VLAN。

3.实验分析

  • 由于拓扑没有控制器,并且初始化时删除了交换机中的所有流表,因此除非下发流表,否则主机之间网络无法连通。
  • 利用 ovs 命令直接下发 VLAN 设置的流表项,最终测试 h0 和 h2 互通,h1 和 h3 互通,其余主机均不通。

二、实验开启

1.编写脚本

cd lancl
sudo nano ovsVLAN.py

参考脚本:ovsVLAN.py

2.运行验证

cd lancl
sudo python ovsVLAN.py

3.结果分析

三、实验收获

1.遇到的问题

(1)报错

Exception: Error creating interface pair (s0-eth2,s1-eth2): RTNETLINK answers: File exists
  • 原因在于mininet退出时,未将之前定义的拓扑文件清除干净,导致出现重复的拓扑。
  • 解决方法 使用命令 mn -c 清除即可
IndentationError: unexpected indent
  • 这是一个缩进错误,检查python代码的缩进问题

(2)疑问1——有办法打印输出给h0/1/2/3设置的IP地址吗?

  • h0.IP()
  • 注意!小写ip()不行。python严格区分大小写?

(3)疑问2——表示空格字符串的输出

  • \x20 - ' '
  • '空格'直接字符串拼接,转义字符用于有歧义/二义的字符

(4)疑问3——ping -Q
通过ping操作,测试验证主机间的连通性,并通过-Q 参数设置不通的 tos 值查看主机间的连通性。通过验证发现,tos 值设置越大,时间使用越少。

  • 最高?0xFFDC?
  • ping对方的包,最大只能发送65500byte(字节)。Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能宕机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小
  • Linux 常用ping命令详解

(5)为什么ping得那么慢?

  • 是因为设置了什么参数吗?
  • 还是和本机得性能相关

2.认知拓展

(1)ping

  • 作为一个生活在网络上的管理员或者黑客来说,ping命令是一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。
  • PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho(ICMP回声应答)。

(2)linkopts

linkopts0=dict(bw=100, delay='1ms', loss=0)
linkopts1=dict(bw=1, delay='100ms', loss=0)

linkopts:这是一个字典,用来设置一些链路的可选参数,比如带宽,延迟等等
Mininet初探数据中心网络

posted @ 2020-09-25 18:05  兰小路  阅读(20)  评论(0编辑  收藏