总为自己挖一个又一个的新坑啊,不过在大模型出来以后,快速学习好像就成了一个比较重要的能力了,聊借笔记,加深自己学习的印象吧。第一部分主要为配置mininet环境,以及使用mininet搭建简单的拓扑网络。
Mininet是一个开源的网络仿真工具,用于创建虚拟SDN网络环境。它可以模拟交换机、主机和链路,并提供一个可编程的网络拓扑,用于测试和验证SDN应用程序。
参考链接: http://mininet.org/download/#option-2-native-installation-from-source
这里选择在ubuntu上通过git clone源码进行安装
git clone https://github.com/mininet/mininet
这里选择了全部安装,即安装Mininet中包含的所有内容,包括Open vSwitch等依赖项,以及附加组件,如OpenFlow Wireshark解析器和POX等。这些工具安装在你的主目录下创建的目录中。更多安装可选项通过-h指令进行查看。
mininet/util/install.sh -a
安装结束
Enjoy Mininet!
随后测试是否安装成功
sudo mn --switch ovsbr --test pingall
注意,如果是wsl2下的ubuntu,因为内核配置原因会报如下错误
../libkmod/libkmod-module.c:1941 kmod_module_get_holders() could not open '/sys/module/bridge/holders': No such file or directory
在测试时则会一直打不开switch
sudo mn
*** No default OpenFlow controller found for default switch!
*** Falling back to OVS Bridge
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
*** Starting 1 switches
s1 ...
查询后发现官方推荐采用vm虚拟机进行安装,如果硬要用wsl2的ubuntu,可以尝试去重新编译一下它内核的一些模块。
果断放弃然后采用云服务器的ubuntu。最后测试成功。
sudo mn --switch ovsbr --test pingall
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Waiting for switches to connect
s1
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
*** Stopping 1 controllers
c0
*** Stopping 2 links
..
*** Stopping 1 switches
s1
*** Stopping 2 hosts
h1 h2
*** Done
completed in 0.387 seconds
查看帮助列表
sudo mn -h
我们可以发现拓扑网络中分为多种不同的网络,其不同含义如下表所示。
拓扑网络 | 含义 |
---|---|
linear | 线形拓扑,交换机呈线性排列,每个交换机连接主机只有一个 |
minimal | 最小拓扑网络,一个交换机,两个主机 |
reversed | 反相拓扑,网络中有且只有一个交换机,主机的最小编号与交换机的端口的最大编号连接 |
single | 单一拓扑类型,网络中有且只有一个交换机 |
torus | 环形拓扑,每个交换机都连接两个主机,并且最后一个交换机连接到第一个交换机,闭合了环路。 |
tree | 树形拓扑,有一个根交换机和多个分支。每个分支都可以有自己的子交换机和主机,这种拓扑类型常用于构建较大规模的网络 |
其中构建拓扑网络的命令如下所示,其中k表示交换机的个数,n表示每个交换机连接的主机的个数。
sudo mn --topo=linear,k=x,n=x
sudo mn --topo=linear,k,n
这里搭建一个有四个节点的线性拓扑网络
sudo mn --topo=linear,4
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4
*** Adding switches:
s1 s2 s3 s4
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (s2, s1) (s3, s2) (s4, s3)
*** Configuring hosts
h1 h2 h3 h4
*** Starting controller
c0
*** Starting 4 switches
s1 s2 s3 s4 ...
*** Starting CLI:
mininet>
在控制台中输入输入net
查看网络信息,nodes
查看节点信息。
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s2-eth1
h3 h3-eth0:s3-eth1
h4 h4-eth0:s4-eth1
s1 lo: s1-eth1:h1-eth0 s1-eth2:s2-eth2
s2 lo: s2-eth1:h2-eth0 s2-eth2:s1-eth2 s2-eth3:s3-eth2
s3 lo: s3-eth1:h3-eth0 s3-eth2:s2-eth3 s3-eth3:s4-eth2
s4 lo: s4-eth1:h4-eth0 s4-eth2:s3-eth3
c0
mininet> nodes
available nodes are:
c0 h1 h2 h3 h4 s1 s2 s3 s4
可以查看到该线形拓扑结构的基本信息。