安装OpenDaylight及Openflow插件
1. 安装 Java 和 Maven
CentOS7:
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 maven -y
环境变量:
# /etc/profile
...
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
Ubuntu16.04:
sudo apt update
sudo apt install openjdk-8-jdk-headless maven
echo JAVA_HOME=export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 >> ~/.bashrc
source ~/.bashrc mvn -v
2. 安装 OpenDaylight
~$ wget https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.zip
~$ unzip distribution-karaf-0.6.4-Carbon.zip
~$ cd distribution-karaf-0.6.4-Carbon
修改配置:
# etc/org.apache.karaf.management.cfg
rmiRegistryHost = 127.0.0.1
rmiServerHost = 127.0.0.1
附:修改 Openflow controller 连接端口(因为SDN控制器默认的连接端口指定为6653和6633,如果在一个系统中需要使用多种SDN控制器的情况下,那么就会出现端口占用无法连接控制器的情况。)
如无冲突,则不需修改。
# etc/opendaylight/datastore/initial/config/default-openflow-connection-config.xml
# etc/opendaylight/datastore/initial/config/legacy-openflow-connection-config.xml
<switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config">
<instance-name>openflow-switch-connection-provider-default-impl</instance-name>
<port>6653</port>
...
启动、安装插件:
~/distribution-karaf-0.6.4-Carbon$ cd bin
~/distribution-karaf-0.6.4-Carbon/bin$ export TERM=xterm-color #(ubuntu18需要,ubuntu16不需要)
~/distribution-karaf-0.6.4-Carbon/bin$ ./karaf
opendaylight-user@root>feature:install odl-openflowplugin-flow-services-rest odl-openflowplugin-app-table-miss-enforcer odl-openflowplugin-nxm-extensions odl-restconf odl-l2switch-switch-ui odl-openflowplugin-flow-services-ui odl-mdsal-apidocs odl-dluxapps-applications odl-faas-all
3. 安装Openflowplugin — 开发者使用
用于搭建 Openflowplugin 开发环境。(如无需求,可不安装)
~$ git clone https://github.com/opendaylight/openflowplugin.git
~$ cd openflowplugin/
~/openflowplugin$ git tag
~/openflowplugin$ git checkout release/carbon
~/openflowplugin$ git branch
~/openflowplugin$ mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true
~/openflowplugin$ cd distribution/karaf/target/assembly/bin
~/openflowplugin/distribution/karaf/target/assembly/bin$ ./karaf
opendaylight-user@root>feature:install odl-restconf odl-dlux-core
4. 安装 mininet
~$ sudo apt install net-tools -y
~$ git clone git://github.com/mininet/mininet
~$ cd mininet/
~/mininet$ git tag
~/mininet$ git checkout 2.3.0d6
~/mininet$ cd util
~/mininet/util$ sudo ./install.sh
启动:
~$ sudo mn
5. 使用例子
5.1 mininet 自定义拓扑
# ~/mn-test/topo1.py
from mininet.topo import Topo class MyTopo(Topo):
def __init__(self):
Topo.__init__(self) host1 = self.addHost('h1')
host2 = self.addHost('h2')
switch1 = self.addSwitch('s1')
switch2 = self.addSwitch('s2') self.addLink(host1, switch1)
self.addLink(host2, switch2)
self.addLink(switch1, switch2) topos = {
'mytopo': lambda: MyTopo()
}
5.2 连接 ODL controller
~$ sudo mn --custom mn-test/topo1.py --topo mytopo --controller=remote,ip=192.168.1.7,port=6633 --switch ovsk,protocols=OpenFlow13
登录 ODL web 界面,查看 topology,此时只能够看到 switchs。
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
再次查看,此时能够看到 hosts。
5.3 例子
ps:使用 Postman 测试(关闭防火墙或开放8181端口)。
basic auth: admin:admin
查看节点(GET):http://192.168.1.7:8181/restconf/operational/opendaylight-inventory:nodes/
查看拓扑(GET):http://192.168.1.7:8181/restconf/operational/network-topology:network-topology/
查看端口(GET):/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2
查看流表(GET):/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0/
参考资料
https://docs.opendaylight.org/en/latest/getting-started-guide/installing_opendaylight.html
https://blog.csdn.net/weixin_40610952/article/details/80378784
安装OpenDaylight及Openflow插件的更多相关文章
- 安装Visual Studio的插件AnkhSvn
安装Visual Studio的插件AnkhSvn 安装AnkhSvn(VS插件).下载地址:http://download.csdn.net/detail/luqingfei/4538807 Ank ...
- 安装Sublime Text 3插件的方法
直接安装 安装Sublime text 3插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages). 使用Package Contr ...
- 安装VS2010水晶报表插件
Visual Studio 2010默认不带水晶报表,需要安装一个水晶报表插件,首先下载此插件: http://downloads.businessobjects.com/akdlm/cr4vs201 ...
- 【原】安装mongo的php插件
http://pecl.php.net/package/mongo https://github.com/mongodb/mongo-php-driver/tarball/master 1. 安装mo ...
- 安装GO语言环境之安装Visual Studio Code插件
在安装Visual Studio Code插件的时候,由于谷歌的限制,在下载下列插件的时候会报错: go get -u -v github.com/nsf/gocode go get -u -v gi ...
- Eclipse如何安装JD-Eclipse反编译插件
一.Eclipse在线安装JD-Eclipse反编译插件 1.在eclipse的help—>Install New Software...中添加新软件开发,添加它的源: name:jd-ecli ...
- 安装Sublime Text 2插件的方法
1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages). 2.使用Package C ...
- myeclipse和eclipse安装Java反编译插件
为myeclipse和eclipse安装Java反编译插件 插件所需包 1.解压jad1.5.8g.zip.将jad.exe放到jre的bin目录下,下载地址: http://ishare.ia ...
- [原]Eclipse 安装SVN、Maven插件(补充)
参考雨之殇的文章:Eclipse 安装SVN.Maven插件 1.SVN可以按文章介绍的正常安装 2.Maven的Eclipse插件地址有变化 文章中的安装链接已经失效:m2e - http://m2 ...
随机推荐
- 神奇的BFC
BFC是什么? 块格式化上下文(Block/box Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域 ...
- Spring中BeanFactory与FactoryBean到底有什么区别?
一.BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean().containsBean()等管理Bea ...
- Windows系统提示:“windows找不到文件请确定文件名是否正确后
最近使用Win7/10系统的用户反应在系统中移动了桌面上的一些与系统无关的文档,在挪动了文件之后出现的问题,弹出了windows找不到文件请确定文件名是否正确后,再试一次, 的错误提示,该怎么办呢? ...
- 基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口
原文地址:点击跳转 最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访 ...
- java中文上传下载功能实现(自己测试项目)
1.新建maven项目打war包 2.搭建springMVC框架 web.xml文件配置 <?xml version="1.0" encoding="UTF-8&q ...
- [LeetCode]367. Valid Perfect Square判断完全平方数
方法有很多,我觉得比较容易记住的是两个,一个是二分法,在1-num/2中寻找目标数 另一个是数学方法: public boolean isPerfectSquare(int num) { /* 有很多 ...
- 痞子衡嵌入式:Farewell, 我的2020
-- 题图:苏州大学老校门 2020年的最后一天,痞子衡驱车300多公里从苏州赶回了苏北老家(扬州某边陲小镇),连镇铁路虽然新通车了,解决了苏南苏北多年的铁路不直通问题,但奈何痞子衡老家小镇离最近的火 ...
- Shell 编程(一)
为什么学习 Shell 编程? 用 shell 来进行服务器的管理或维护 对于大数据程序员来说,需要编写 shell 来管理集群 Shell 是什么? Shell 是一个命令解释器,它为用户提供了 ...
- 洛谷 P4396 [AHOI2013]作业
题目描述 题目传送门 分析 因为询问是关于区间的,并且没有强制在线,所以能用莫队解决 但是还要支持查询区间内大于等于 \(a\),小于等于 \(b\) 的数的个数和数值的个数 所以还要套一个数据结构 ...
- Docker-Compose练习
运行一个镜像,需要添加大量的参数. 可以通过Docker-Compose编写这些参数. Docker-Compose可以帮助我们批量的管理容器. 只需要通过一个docker-compose.yml文件 ...