Ubuntu20.04中搭建SDN环境(超详细)

前言

最近在做SDN这方面的实验,在这里记录一下自己的学习过程和踩过的坑。
具体环境:
VMware-workstation
Ubuntu20.04
Mininet
RYU
Wireshark

一、 安装VMware workstation

链接:https://pan.baidu.com/s/186D9k3byAqB0LhGUZwPkuw
提取码:25my
按照提示一步一步完成即可。

二、安装Ubuntn

镜像文件:
链接:https://pan.baidu.com/s/1dXzMLk0LmjItbvj4e7zKtw
提取码:eaqd
1、打开虚拟机,依次点击“文件”——“新建虚拟机”,选择经典模式(在自定义模式下,很多选项都需要自行设置,不建议新手使用)
在这里插入图片描述
点击“浏览”,选择已经下载好的iso文件
在这里插入图片描述
按照要求设置名字和密码
在这里插入图片描述
设置虚拟机的名称和位置
在这里插入图片描述
分配磁盘大小,建议为40GB
在这里插入图片描述
点击“自定义硬件”,将内存设为4096MB,处理器内核数量设为2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成后,点击“完成”开始Ubuntu系统的安装
在这里插入图片描述
耐心等待安装,可能会需要很长时间
在这里插入图片描述
安装完成后,输入密码进行登录
在这里插入图片描述
修改时间。将时区设置为shanghai。在这里插入图片描述创建root用户。打开终端(右键或ctrl+alt+T),输入sudo passwd root命令创建root用户。创建成功后,可以通过su root命令登录root用户。
需要注意的是,root用户对系统具有最高的权限,在root用户下操作风险较大,需要慎重登录root用户进行操作。
在这里插入图片描述
修改源。如果Ubuntn版本较低,默认的官方源是美国的服务器,安装软件速度较慢,容易造成系统出错,在进行环境配置前需要修改为国内的源。点击屏幕左下角找到Software&Update,修改内容如图示(这里选择的是阿里云,当然也可以选择其他的),然后点击choose server →close→reload。
在这里插入图片描述
在这里插入图片描述
至此,Ubuntn的安装已经完成,可以与本地主机互相ping通,能够上网。
此时可以利用VMware的快照功能拍摄虚拟机快照,后续出现问题可以回到快照拍摄时的状态。
在这里插入图片描述
界面左下角有进度提示,建议等状态完全保存后再进行其他操作,否则可能造成状态保存不完整。
在这里插入图片描述

三、安装Mininet

Mininet 是由一些虚拟的终端节点 (end-hosts) 、交换机、路由器连接而成的一个网络仿真器,是一个轻量级软件定义网络和测试平台,支持 OpenFlow、OpenvSwith 等各种协议,并提供python API。它的安装可以大致分为以下几个步骤:
步骤一:安装git
配置SDN的实验环境之前,需要进入/home/shy目录,通过sudo apt-get install git命令安装git。
在这里插入图片描述
输入git命令,查看是否安装成功。可以看到git已经安装成功。
在这里插入图片描述
步骤二:下载mininet源代码
使用sudo git clone https://github.com/mininet/mininet.git命令将mininet源代码下载到本地。
在这里插入图片描述
可以看到,已经将miniet下载到/home/shy目录下。
在这里插入图片描述
步骤三:安装mininet
下载完成后,在/home/shy/mininet目录下,找到安装mininet的脚本文件util,执行sudo ./install.sh命令进行mininet的安装。
在这里插入图片描述
如果使用以上命令安装OpenVswitch不成功,可以尝试依次输入以下命令:
sudo apt-get install openvswitch-switch
sudo ovs-vsctl show
在这里插入图片描述
在这里插入图片描述

步骤四:测试安装是否成功
输入sudo mn命令,创建最小网络拓扑。可以看到新建了两台主机,1个Open (V)switch交换机,增加了两条链路,创建了一台控制器。
在这里插入图片描述
执行links命令查看链路状态;执行nodes命令查看节点状态;执行pingall命令检查网络的连通性,可以看到h1到h2可以ping通,h2到h1也可以ping通,丢包率为0,证明mininet已经安装完成。
在这里插入图片描述

四、安装RYU

RYU是一款开源SDN控制器,基于python语言编写,支持OpenFlow协议。它的安装大致可以分为以下几个步骤:
步骤一:安装pip。
首先在/home/shy目录下,通过sudo wget https://bootstrap.pypa.io/get-pip.py命令下载pip文件。
在这里插入图片描述
下载完成后,输入ls命令查看。可以看到,pip文件已经下载到home目录下。
在这里插入图片描述
接着使用sudo python3 get-pip.py命令安装pip。
在这里插入图片描述
可以看到已经成功安装了pip,版本为23.3.1。
需要注意的是,如果之前下载过pip,那么系统中保存的文件名称可能不是get-pip.py。比如,可能是get-pip.py.1,此时执行sudo python3 get-pip.py.1命令安装pip。也可以执行rm -f 目录名命令删除之前下载的文件,重新下载pip文件。
步骤二:下载RYU源代码
在/home/shy目录下,通过sudo git clone https://github.com/osrg/ryu.git命令将RYU源码下载到本地。(如果报错,可以多尝试几次或者试试sudo git clone http://github.com/osrg/ryu.git)
在这里插入图片描述
下载完成后,进入/ryu目录并查看该目录下的所有文件。
在这里插入图片描述
步骤三:安装RYU依赖包
通过sudo pip install -r tools/pip-requires命令安装RYU的依赖。由于要安装的依赖较多,如果报错,可以多尝试几次。
在这里插入图片描述
可以看到,RYU的依赖已经安装成功。
在这里插入图片描述
步骤四:安装RYU
RYU的依赖安装完成后,通过执行sudo python3 setup.py install命令安装RYU。
在这里插入图片描述
提示安装完成。
在这里插入图片描述
步骤五:验证RYU是否安装成功。
首先在/home/shy/ryu/ryu/app目录下,执行ryu-manager simple_switch.py命令启动控制器,然后在另一个终端打开mininet,输入sudo mn --controller=remote创建默认拓扑,并使用远端控制器RYU。
在这里插入图片描述
可以看到控制器显示正常,说明RYU已经安装成功。
在这里插入图片描述

五、安装WireShark

Ubuntn20.04自带WireShark软件。如果Ubuntn版本较低,需要通过sudo apt-get install wireshark命令进行Wireshark的安装。
在这里插入图片描述
左右键选中 Yes
在这里插入图片描述
安装完成后输入sudo wireshark命令即可打开Wireshark软件。
在这里插入图片描述

六、在Mininet中启动可视化界面并创建网络拓扑

在/home/shy/mininet/mininet/examples目录下,执行sudo python3 mininedit.py命令或sudo ./miniedit.py命令打开可视化界面创建网络拓扑。
在这里插入图片描述
可视化界面如图示:
在这里插入图片描述
构建网络拓扑之前首先进行全局配置【edit】→【preferences】
IP Base:默认为10.0.0.0/8,用来指定网络拓扑中的网络设备所使用的IP地址所属网段
Start CLI:允许通过交互界面输入命令修改拓扑
Open vSwitch:支持的OpenFlow协议版本
在这里插入图片描述
在mininedit中创建拓扑
在这里插入图片描述
对控制器进行配置:
在这里插入图片描述
对交换机s1进行配置(s2同理):
在这里插入图片描述
对主机进行配置(其他主机同理):
在这里插入图片描述
此外,还可以对链路具体参数(带宽、时延等)进行配置:
在这里插入图片描述
所有的设置在Mininet的终端都有显示。
在这里插入图片描述
接下来运行网络拓扑,运行之前,需要在另一个终端打开控制器,然后点击miniedit界面左下角的Run按钮运行网络拓扑。这里使用Ryu控制器。
在这里插入图片描述
可以看到,此时控制器已经监控到了信息,网络连通性也没有问题。
在这里插入图片描述

七、常见问题总结

1、Ubuntu系统安装好后显示屏幕太小。这是由于缺少VMware Tools,依次输入图中命令后重启虚拟机,问题得以解决。
在这里插入图片描述
在这里插入图片描述
2、下载mininet源码时,出现如下错误,网速问题,多试试几次。
在这里插入图片描述
或尝试输入以下命令取消https与http代理。
sudo git config --global --unset http.proxy
sudo git config --global --unset https.proxy
再或者如果https不能git,有些情况下用http代替也可以。
3、安装RYU的依赖时,由于网络原因和下载的依赖较多频频出现图中问题。解决办法:多执行几次命令。
在这里插入图片描述
4、问题:在使用sudp ./miniedit.py命令启动miniedit界面时出现/usr/bin/env: ‘python’: No such file or directory。
在这里插入图片描述
解决办法:依次输入图中命令
在这里插入图片描述

### 关于 MiniEdit 工具 MiniEdit 是 Mininet 的图形化编辑器,用于创建自定义的网络拓扑结构并运行实验。它提供了直观的操作界面,允许用户通过拖拽节点来设计复杂的网络环境,并能快速启动 Mininet 实例。 以下是关于 MiniEdit 的一些重要特性及其配置方式: #### 安装 MiniEdit 为了使用 MiniEdit,首先需要确保已经成功安装了 Mininet 和其依赖项[^2]。可以通过以下命令更新系统并安装 Mininet: ```bash sudo apt-get update sudo apt-get install mininet bridge-utils ``` 接着可以验证 Mininet 是否正常工作: ```bash mn --version ``` 如果一切正常,则可以直接进入下一步操作。 #### 启动 MiniEdit Mininet 提供了一个脚本 `miniedit.py` 来启动 MiniEdit 编辑器。通常情况下,在完成 Mininet 安装之后,该文件会自动包含在 `/usr/share/mininet/` 路径下。如果没有找到此路径中的文件,可以从官方仓库克隆最新版本[^1]: ```bash git clone https://github.com/mininet/mininet.git cd mininet/examples/ ls | grep miniedit ``` 执行如下命令即可打开 MiniEdit 图形界面: ```bash sudo python /path/to/miniedit.py ``` #### 使用 MiniEdit 创建网络拓扑 一旦进入了 MiniEdit 界面,就可以按照以下方式进行操作: - **添加主机、交换机和路由器**:点击左侧工具栏上的图标并将它们放置到画布上。 - **连接设备**:选中两个节点之间的连线按钮,然后分别单击要链接的两端设备。 - **设置参数**:双击任何对象以调整带宽、延迟或其他属性。 - **保存与加载项目**:利用菜单选项存储当前的工作状态或者读取之前保存过的 JSON 文件格式的数据集。 当完成了整个布局的设计以后,按下顶部工具条里的“Start”按键就会激活所构建出来的模拟环境;而按住“Stop”则停止正在运作的服务进程。 #### 解决可能存在的问题 有时可能会碰到某些错误提示比如无法初始化网络服务等问题。此时可参照先前提到的方法尝试关闭干扰性的管理程序再重新开启基础功能模块[^3]: ```bash systemctl stop NetworkManager systemctl disable NetworkManager service networking restart ``` 另外需要注意的是对于 Kubernetes 集群内部署 Ingress 控制器时涉及到 API 版本兼容性方面的考量[^5]。由于较新的 k8s 发行版弃用了旧式的扩展接口定义形式(`extensions/v1beta1`)转而采用更现代化的标准表述法即`networking.k8s.io/v1`作为替代方案[^4]。因此务必确认选用恰当的形式以免引发冲突状况发生。 --- ###
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值