基于openvswitch+Docker构建SDN网络测试环境 (使用ovs-docker进行构建)
这是一篇之前写的笔记,主要记录了使用openvswitch + Docker 等进行一个小型的SDN网络搭建的操作步骤。由于
之前临时有其他任务,耽搁了一下,最近开始重新整理,并计划开发一个简单的Python脚本,简化该网络的创建过程。
同时希望该脚本可以和控制器的程序进行融合,方便未来可以和docker更容易的结合在一起。项目地址:DockerSDN。
以下内容或许存在问题,如果在实现过程中发现问题,可与我联系,谢谢、
Date: 2018.7.9
Auther: joliu ljo0412@live.com
- OpenFlow
- basic knowlege
- OVS command
- how to add flow table to open vSwitch
- how to bind dockers to vSwitch
Install ovs and mininet
learn details about this
Install Docker
Use DaoCloud accelerator
curl -sSL https://get.daocloud.io/docker | sh
Change Docker registry to Aliyun
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
请替换https://xxxxxxx.mirror.aliyuncs.com,详细配置内容参见我的另外一篇随笔CentOS7使用阿里源安装最新版Docker
Get Basic Docker Image
docker pull alpine
Exercise 1
Create Three Container
docker run -d -i --name RouterA --net=none --privileged alpine sh
docker run -d -i --name RouterB --net=none --privileged alpine sh
docker run -d -i --name RouterC --net=none --privileged alpine sh
Check Containers' Status
[typh@localhost ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37b9ca888f03 alpine "sh" About a minute ago Up About a minute RouterC
f1604beb380f alpine "sh" About a minute ago Up About a minute RouterB
3b3c52c5a582 alpine "sh" 3 minutes ago Up 3 minutes
Create Virtual Network Bridge
sudo ovs-vsctl add-br vnbr
Set Protocols
ovs-vsctl set bridge br0 protocols=OpenFlow13
Check the brige is added
[typh@localhost ~]$ sudo ovs-vsctl show
d9d42750-7b9b-4688-adf9-d07f619e9bacBridge vnbrPort vnbrInterface vnbrtype: internalovs_version: "2.5.0"
Add Network Port
sudo ovs-docker add-port vnbr eth0 RouterA --ipaddress="10.0.1.1/24"
sudo ovs-docker add-port vnbr eth0 RouterB --ipaddress="10.0.1.2/24"
sudo ovs-docker add-port vnbr eth0 RouterC --ipaddress="10.0.3.1"
Check The Status of vnbr
[typh@localhost ~]$ sudo ovs-vsctl show
d9d42750-7b9b-4688-adf9-d07f619e9bacBridge vnbrPort vnbrInterface vnbrtype: internalPort "facad1a218c64_l"Interface "facad1a218c64_l"Port "d48d429fe1894_l"Interface "d48d429fe1894_l"Port "12437ccb4eab4_l"Interface "12437ccb4eab4_l"ovs_version: "2.5.0"
Set OpenFlow Port ID
sudo ovs-vsctl set interface facad1a218c64_l ofport_request=100
sudo ovs-vsctl set interface d48d429fe1894_l ofport_request=200
sudo ovs-vsctl set interface 12437ccb4eab4_l ofport_request=300
Connect to ODL Controller
sudo ovs-vsctl set-controller vnbr tcp:127.0.0.1:6633
Check the Connections with Controller
d9d42750-7b9b-4688-adf9-d07f619e9bacBridge vnbrController "tcp:127.0.0.1:6633"is_connected: truePort vnbrInterface vnbrtype: internalPort "facad1a218c64_l"Interface "facad1a218c64_l"Port "d48d429fe1894_l"Interface "d48d429fe1894_l"Port "12437ccb4eab4_l"Interface "12437ccb4eab4_l"ovs_version: "2.5.0"
Test the connection between the two host By PING
docker exec -it RouterA ping -c 4 10.0.1.2
Generally, they cannot connect with the other.
Add Flows
sudo ovs-ofctl add-flow vnbr "priority=1 idle_timeout=0,in_port=1,actions=output:2"
sudo ovs-ofctl add-flow vnbr "priority=2 idle_timeout=0,in_port=1,actions=output:1"
Get the Flows from vSwitch
ovs-ofctl -O OpenFlow13 dump-flows vnbr
Test Again.
docker exec -it RouterA ping -c 4 10.0.1.2
Example of the successful result.
[master@MiWiFi-R3-srv ~]$ sudo docker exec -it RouterA ping -c 4 10.0.1.2
PING 10.0.1.2 (10.0.1.2): 56 data bytes
64 bytes from 10.0.1.2: seq=0 ttl=64 time=0.062 ms
64 bytes from 10.0.1.2: seq=1 ttl=64 time=0.061 ms
64 bytes from 10.0.1.2: seq=2 ttl=64 time=0.086 ms
64 bytes from 10.0.1.2: seq=3 ttl=64 time=0.078 ms--- 10.0.1.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.061/0.071/0.086 ms
Start karaf
feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-all
转载于:https://www.cnblogs.com/NinWoo/p/9649007.html
基于openvswitch+Docker构建SDN网络测试环境 (使用ovs-docker进行构建)相关推荐
- Docker+Ovs构建SDN网络
一.背景知识 关于Docker的基础知识和实验用到的Docker ryu镜像可以参考:Docker命令.基于Docker的SDN实验环境部署(1)_北风-CSDN博客 Docker网络模式: 本实验, ...
- docker 构建Android编译环境
docker 构建Android编译环境 文章目录 docker 构建Android编译环境 @[toc] ubuntu:14.04镜像 FAQs ubuntu:18.04镜像 FAQs 由于电脑升级 ...
- Vagrant 构建 Linux 开发环境
Vagrant 是一个简单易用的部署工具,用英文说应该是 Orchestration Tool .它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境, Vagrant 基于 Ruby 开 ...
- 一零零九、Docker搭建 全集群 环境配置
目录 纯Docker部分 Docker结合Hadoop部分 环境搭建篇 Docker入门传送门 基于传统的hadoop搭建方式,将hadoop搭建前的虚拟物理机准备部分使用docker容器替代,后续 ...
- 使用 Docker 搭建 Laravel 本地环境
(原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 ...
- Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅
2019独角兽企业重金招聘Python工程师标准>>> 通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一 ...
- docker搭建java测试环境_基于docker构建测试环境
目录 0x01介绍 0x02 镜像基本操作 0x03 容器基本操作 0x04 容器的修改与保存 0x05 使用Dockerfile定制镜像 0x01介绍 Docker 是一个开源的应用容器引擎,基于 ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...
最新文章
- c++之openGL在VS中的配置及简单图形绘制
- .NET中获取电脑名,IP地址,当前用户
- 活动直播丨“2021智源论坛”邀您见证智源三年成绩与展望
- 关于html的a标签的target=__blank 的安全漏洞问题
- kdj买卖指标公式源码_翔博精选指标KDJ买卖点提示(通达信公式 副图 测试图)...
- Codeforces Round #246 (Div. 2)
- EF架构~LinqToEntity里实现left join的一对一与一对多
- Everyday is an Opportunity
- 盘点Greenplum 6.0六大新特性及展望
- Spring(4)--- hello world实例
- java画圈_java动态画圈圈。运用多线程,绘图
- linux启动写入了mbr,一、Linux系统启动(MBR)
- 控制面板中java设置项如何删除
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析...
- 杜比音效卡刷包android 7.0,杜比音效7.0清爽卡刷包-杜比音效7.0定制版v2.1.0 安卓版-手机腾牛网...
- arduino i2c EEPROM(AT24C02、AT24C08、AT24C16、AT24C32、AT24C64)驱动
- java 幸运大转盘_幸运大转盘抽奖 抽奖算法 程序实现逻辑
- 使用mysql语句进行多表联查(以三个表为例)
- 如何获取(GET)一杯咖啡——星巴克REST案例分析
- HTML网页设计制作——初音动漫(6页) dreamweaver作业静态HTML网页设计模板
热门文章
- python flask高级编程之restful_flask-restful使用总结
- 推荐 | Transformer最新成果!Learn to Dance with AIST++: Music Conditioned 3D Dance Generation!
- CVPR 2020 | 北大Futurewei提出 GraphTER:无监督图变换共变表征学习
- SOTIF预期功能安全分析方法
- 专业工程师看过来~ | RDD、DataFrame和DataSet的细致区别
- Dockerfile 常用命令
- java后端简历项目经历_为了面试字节跳动后端开发岗(Java)鬼知道我经历了什么.....
- 蓝牙耳机声音一顿一顿的_这次让世界听听我们的声音——声阔SoundcoreLiberty2Pro蓝牙耳机...
- 信安精品课:第1章网络信息安全概述精讲笔记
- Macbook pro笔记本键盘失灵了(u,i,o,j,k,l,k,m无效了)解决办法