ryu+mininet实现移动目标防御(一)

写在前面

总为自己挖一个又一个的新坑啊,不过在大模型出来以后,快速学习好像就成了一个比较重要的能力了,聊借笔记,加深自己学习的印象吧。第一部分主要为配置mininet环境,以及使用mininet搭建简单的拓扑网络。

mininet简介

Mininet是一个开源的网络仿真工具,用于创建虚拟SDN网络环境。它可以模拟交换机、主机和链路,并提供一个可编程的网络拓扑,用于测试和验证SDN应用程序。

mininet环境搭建

参考链接: 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

使用mininet搭建一个简单的拓扑网络

查看帮助列表

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

可以查看到该线形拓扑结构的基本信息。

猜你喜欢

转载自blog.csdn.net/eliforsharon/article/details/131426780
ryu