使用Onos+Ovs+Docker+Veth建立拓扑(2)

本文详细介绍了如何使用ONOS、Open vSwitch、Docker和Veth接口在Linux环境下搭建网络拓扑。关键步骤包括在宿主机上安装带有内核模块的OVS,在Docker容器中安装无内核模块的OVS,并解决可能出现的Docker版本、网卡和环境配置问题。

使用Onos+Ovs+Docker+Veth建立拓扑(2)

【说明】首先在宿主机上安装一个带内核模块的ovs,然后在docker中安装一个不带内核的。
?这句话非常重要

可能存在的问题

Docker版本选择问题

apt-cache madison docker-ce

运行到这一步选择docker版本的时候,我们选择老一点的版本没问题,因为后期的apt update会更新版本,记录的时候版本应该是

$ docker -v
Docker version 18.09.0,build 4d60db4

如果安装的版本太新,例如

$ apt-cache madison docker-ce
 docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

之前安装过这个版本,这会在启动docker连接 的时候出现报错

网卡问题

  1. veth拓扑连接启动好的onos的时候,IP是自己的eth0(也可能是ensXXX,这里我的是ens160)
    即ifconfig之后找到上文网口的IP。
  2. 启动拓扑之前可能需要重启网卡
service network-manager restart

环境问题(并不确定这个问题是否存在)

这个问题和我之前乱改环境变量有关,作为一个问题可能存在的地方,可以考虑检查自己的环境配置。

### 使用Python部署ONOS与Mininet #### 安装环境准备 为了能够顺利使用 Python 部署 ONOS 和 Mininet,需先准备好相应的开发环境。这包括安装必要的软件包以及配置网络控制器。 对于 Mininet 的安装可以通过以下命令完成: ```bash sudo apt-get update sudo apt-get install mininet ``` 上述命令用于更新本地的 APT 软件源并安装 Mininet 工具[^1]。 而对于 ONOS 控制器,则通常建议从 GitHub 上克隆官方仓库来获取最新版本: ```bash git clone git://github.com/mininet/mininet ``` 此操作会下载 Mininet 到本地机器上以便后续集成工作[^2]。 #### 编写 Python 脚本实现自动化部署 一旦完成了基础环境搭建之后,就可以利用 Python 来编写脚本来简化 ONOS 和 Mininet 的联合部署过程。下面是一个简单的例子展示如何创建自定义拓扑结构并与 ONOS 进行交互: ```python from mininet.net import Mininet from mininet.node import RemoteController, OVSKernelSwitch from mininet.cli import CLI from mininet.log import setLogLevel def create_network(): net = Mininet(controller=RemoteController, switch=OVSKernelSwitch) c0 = net.addController('c0', controller=RemoteController, ip='127.0.0.1', port=6653) h1 = net.addHost('h1') h2 = net.addHost('h2') s1 = net.addSwitch('s1') net.addLink(h1, s1) net.addLink(s2, s1) net.build() c0.start() for sw in net.switches: sw.start([c0]) CLI(net) net.stop() if __name__ == '__main__': setLogLevel('info') # 设置日志级别为 info create_network() ``` 该段代码展示了怎样通过 `mininet` 库中的类构建一个基本的两主机一交换机组成的简单网络,并连接到运行于 localhost 的 ONOS 实例作为远程控制平面。注意这里指定了 IP 地址 (`ip='127.0.0.1'`) 和端口号 (`port=6653`) 参数给控制器对象实例化时传递过去,确保两者之间可以正常通信。 #### 测试验证 当一切设置完毕后,启动 ONOS 并执行编写的 Python 脚本即可看到 MiniNet 创建出来的虚拟网络设备被加入到了 ONOS 中管理起来。此时可以在终端里输入相应指令来进行功能测试,比如 pingall 命令用来检测连通性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值