Chapter 0 Configuration of Experimental Environment¶
Aim
- 使用 Mininet 的Python API搭建 k=4 的 fat tree 拓扑;
- 使用 pingall 查看各主机之间的连通情况;
- 若主机之间未连通,分析原因并解决(使用 wireshark 抓包分析)
- 若主机连通,分析数据包的路径(ovs-appctl fdb/show 查看MAC表)
- 不可以使用controller
Reference - Mininet - OpenVSwitch - WireShark
Part 1 实验环境搭建¶
方式1: - 使用 virtual box 镜像搭建 虚拟机软件 virtual box ,可在官网查询 - 本实验提供 virtual box 虚拟机的镜像文件( sdn_exp_2023.ova )已配置 Mininet 和 Ryu - 环境搭建步骤如下: 安装 virtual box 导入镜像文件 sdn_exp_2023.ova ( root 账户密码并未设置,需要的同学可以参考 sudo passwd root 指令)
方式2: - 使用 VMWare 镜像搭建 虚拟机软件 VMWare ,可在官网自行下载 - 本实验也提供 VMWare 虚拟机镜像文件( sdn_exp_2023_vmware ),已配置 Mininet 和 Ryu 。 - 环境搭建步骤如下: - 安装 VMWare - 导入镜像文件 sdn_exp_2023_vmware (密码 sdn )
方式3: 源码安装
Bash | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
说明: 针对 Apple Silicon - 本质上安装任一Linux虚拟机都可以使用 - VMware - VirtualBox - Parallels Desktop - ... - 但是Orbstack不行! - 它轻量化,既可以开docker也可以开vm - 它的linux虚拟机内核没有支持openvswitch - 除非你手动编译内核 : ) - 具体问题详见笔者在mininet-github中提出的issue
Part 2 实验工具介绍¶
2.1 三板斧¶
- mininet:用来在单台计算机上创建一个包含多台网络设备的虚拟网络
- Open vSwitch : Mininet 中使用的虚拟交换机
- WireShark : 抓包工具
2.2 Mininet¶
- 启动
Bash | |
---|---|
1 2 3 4 |
|
- 常用命令
Bash | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
2.3 创建拓扑¶
CLI 创建¶
原始版,详见Lecture 4内容
Bash | |
---|---|
1 |
|
- --mac 指定mac地址从1开始递增,而不是无序的mac,方便观察
- --topo 指定拓扑参数,可选用single和linear等参数
自建拓扑 - Method1¶
- 用 Mininet Python API 创建自定义拓扑
- 通过命令行运行 pwd = 'mininet/custom/topo-2sw-2host.py'
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
运行
Bash | |
---|---|
1 2 |
|
自建拓扑 - Method2¶
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
运行
Bash | |
---|---|
1 |
|
2.4 OpenVSwitch (OVS)¶
查看交换机基本信息¶
Bash | |
---|---|
1 2 3 |
|
ovs-vsctl
命令允许查看、修改和管理 OVS 的配置,包括网桥、端口、控制器、流表等
- show
参数指示该命令显示当前 OVS 的配置信息
- vsctl 的全称是 "Virtual Switch Control"
生成树协议¶
Bash | |
---|---|
1 2 3 |
|
查看mac表¶
- 启动mininet,记得要禁用控制器,否则MAC表可能学习不到内容
- 对每个Switch执行
ovs-vsctl del-fail-mode Node_Name
,否则MAC表仍可能学不到内容 pingall
令所有主机发送数据包,防止“沉默主机”现象ovs-appctl fdb/show Node_Name
查看每个节点的MAC表
del-fail-mode XXX:
该选项表示“删除先前设置的故障模式”,以允许交换机重新恢复到默认行为或者进行新的配置
ovs-appctl fdb/show XXX:
显示指定网桥的转发数据库(FDB)内容 - XXX: 网桥的名称or标识符 - FDB:是一个表,存放的是 MAC地址和与之关联的端口 信息
2.5 WireShark¶
- 抓交换机的packet
sudo wireshark
,并选择相应的端口
- 抓主机的packet
- 在mininet CLI中执行
xterm h1
,打开host1的终端
- 在mininet CLI中执行
- 在h1终端里运行wireshark