我正在尝试设置Opendaylight控制器。实际上我的目的是将它与mininet vm连接并与Internet进行通信。 (可以使用mininet嵌入式控制器与互联网通信)。 为了执行此操作,根据我的理解,我必须为Opendaylight控制器编写一个应用程序,以便处理传入和传出流。 只是将mininet与ODL控制器连接起来,似乎还不足以将测试平台与Internet进行通信。 纠正我,如果我错过了一些东西,但下载分发以便为Opendaylight控制器编写应用程序,也是不够的。需要创建一个新项目,对吗?
我从官方网站下载了Carbon 0.6.2(Carbon SR2),并基于此并遵循以下教程: https://wiki.opendaylight.org/view/GettingStarted:Development_Environment_Setup#Edit_your_.7E.2F.m2.2Fsettings.xml和https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_Archetype
我尝试创建我的项目。用户指南似乎已过时。 我使用Snapshot-Type = opendaylight.snapshot和Archetype-Version = 1.5.0-SNAPSHOT。 原型版本尚未在用户指南中更新,我不确定是否使用了正确的版本。
所以我用以下方式使用maven命令:
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ -DarchetypeCatalog=remote -DarchetypeVersion=1.5.0-SNAPSHOT
(我使用了基于archetype-catalog.xml的原型版本:
<groupId>org.opendaylight.controller</groupId>
<artifactId>opendaylight-startup-archetype</artifactId>
<version>1.5.0-SNAPSHOT</version>)
然后我创建我的项目并执行:
mvn clean install -DskipTests -Dcheckstyle.skip=true
项目已成功创建(无错误),但是当我从此项目启动控制器时,似乎未列出与l2-switch相关的功能,因此无法安装。
这是否可以实现?我希望主要发行版中列出的每个功能也可以在基于此特定发行版创建的项目中使用。 通过Openflow协议将ODL控制器与mininet通信需要此功能。 我使用java 1.8和maven 3.5.2
有人可以帮我澄清一下吗? Opendaylight看起来很有前途,但遗憾的是,如此多的依赖关系并不是直截了当的。 在此先感谢您的帮助!
答案 0 :(得分:1)
根据项目特征生成项目的karaf目录下的发行版。原型并不了解ODL中的每个项目。它只是一个起点 - 您可以根据需要添加相关的捆绑包或功能。因此,如果您需要l2-switch功能,那么您可以将该功能包含在项目的功能中。
答案 1 :(得分:1)
执行摘要:
如果您希望能够安装 l2-switch 功能,只需将 l2-switch 依赖添加到Karaf的 pom.xml 在构建项目之前。
详细工作流程
生成ODL Maven项目
删除现有存储库
[workdir]$ rm -rf ~/.m2/repository/
将设置文件从 odlparent 复制到〜/ .m2 / settings.xml
[workdir]$ curl https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml --create-dirs -o ~/.m2/settings.xml
执行Maven原型生成命令
[workdir]$ mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ -DarchetypeCatalog=remote -DarchetypeVersion=1.5.0-SNAPSHOT
Define value for property 'groupId': org.opendaylight.example
Define value for property 'artifactId': example
Define value for property 'version' 0.1.0-SNAPSHOT: :
Define value for property 'package' org.opendaylight.example: :
Define value for property 'classPrefix' Example: : ${artifactId.substring(0,1).toUpperCase()}${artifactId.substring(1)}
Define value for property 'copyright': FreshLEX, LLC
Define value for property 'copyrightYear' 2017: : 2018
修改 karaf / pom.xml 以包含 l2-switch
[workdir]$ cd example/
[example]$ vim karaf/pom.xml
在依赖关系标记下添加此权限:
<dependency>
<groupId>org.opendaylight.l2switch</groupId>
<artifactId>features-l2switch</artifactId>
<version>0.7.0-SNAPSHOT</version>
<classifier>features</classifier>
<type>xml</type>
<scope>runtime</scope>
</dependency>
使用 l2-switch 功能构建并运行ODL
[example]$ mvn clean install -DskipTests
[example]$ cd karaf/target/assembly/bin/
[bin]$ ./karaf
opendaylight-user@root>feature:install odl-l2switch-switch
opendaylight-user@root>
答案 2 :(得分:0)
要使用OpenDaylight,您不需要从源代码构建它,因此您不需要Maven。只需安装java 8并设置java home。 然后下载tar文件(https://www.opendaylight.org/technical-community/getting-started-for-developers/downloads-and-documentation) 并提取它。
对于应用程序,按照描述激活restconf,netconf,openflow和l2switch,您的实例就可以使用了。
运行mininet,您可以使用设置控制器 ovs-vsctl set-controller bridge tcp ::
并使用ovs-vsctl show来查看控制器是否已连接。