SDN开发笔记(一):SDN开发环境的搭建(win7环境)

前言

鉴于网上对于SDN开发相关的资料较少又乱的现状,从这篇文章开始,我将陆续分享我在SDN开发过程中的经验,我的SDN项目开发是基于OpenDaylight的release-lithium-sr3版本,该版本相对稳定。分享内容都是经过我精心测试与验证,包括:

1、SDN开发环境的搭建(win7环境)

2、SDN控制器的使用(ubuntu环境搭建、controller使用、mininet的使用)

3、ODL源码编译生成发行版控制器

4、md-sal应用程序开发指南

5、应用程序集成到ODL控制器

6、yang模型详解

7、md-sal的l2switch源码分析

正文

在开发SDN应用程序之前,需要先搭建好开发环境,鉴于开发java代码大家都习惯于使用windows下的eclipse集成环境,这里采用eclipse(win7-64位)作为开发环境。

windows 环境:Windows 7 旗舰版 Service Pack 1 64位(一般windows都可以正常搭建好环境,写这个的目的是有些童鞋的win7用的已经问题百出,再按照下面的步骤搭建环境出现一些稀奇古怪的问题,我也无法一一回答,所以还是整个干净点的win7再搭建吧)

步骤如下:

JDK-1.8安装配置

1、采用版本:jdk-8.0u73 (目前最新的版本为jdk-8u91/92,但是发现该版本在某些新装win7上死活安装不上,也是一个坑,另外建议采用jdk1.8版本,因为在OpenDaylight的Beryllium版本有些模块使用jdk1.7编译会报版本太低的错误,这样的错误也是你无法找到解决方案的)

2、下载链接: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u73-oth-JPR

3、找到jdk-8u73-windows-x64.exe并下载

4、安装,双击jdk-8u73-windows-x64.exe该文件下一步下一步即可,安装目录为:C:\Program Files\Java\jdk1.8.0_73

5、配置环境变量JAVA_HOME,从控制面板->系统和安全->系统,选择左侧的高级系统设置

6、点击“环境变量...”,进入配置,点击最下方的“新建(N)...”,

7、新建系统环境变量,变量名为JAVA_HOME,变量值是C:\Program Files\Java\jdk1.8.0_73

8、配置环境变量CLASSPATH,同上,新建系统环境变量为CLASSPATH,值为:

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

9、修改path环境变量,添加%JAVA_HOME%\bin

10、新增JAVA_TOOL_OPTIONS环境变量:

变量名:JAVA_TOOL_OPTIONS

变量值:-Dfile.encoding=UTF8

11、从cmd打开dos窗口,输入javac和java确定是否配置成功,出现下面界面说明jdk是ok的。

Maven安装配置

1、安装版本:maven-3.3.9

2、下载链接:https://maven.apache.org/download.cgi

3、找到apache-maven-3.3.9-bin.zip下载,解压放在C:\apache-maven-3.3.9

4、配置环境变量,新增M2_HOME和MAVEN_OPTS系统环境变量

M2_HOME:C:\apache-maven-3.3.9

MAVEN_OPTS:-Xmx1024m -XX:MaxPermSize=512m

PATH:%M2_HOME%\bin;

5、在path里加入maven的bin路径

6、运行cmd,打开dos命令窗口,输入mvn -v命令,出现下面界面说明ok。

eclipse安装配置

1、安装版本:eclipse-jee-mars-2-win32-x86_64

2、下载链接:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-jee-mars-2-win32-x86_64.zip

3、解压到本地目录下(任意目录都可以),运行eclipse.exe,启动eclipse

4、配置eclipse,有时候Windows默认为GBK,需要设置工作区编码为UTF-8:

从Window=>Preferences=>General=>Workspace

5、设置JDK环境,从Window=>Preferences,左侧输入jdk,选择Installed JREs,默认是jre,这里必须选择jdk,如下图所示

6、安装build-helper-maven:

a)Windows => Preferences => Maven =>Discovery=>Open Catalog =>buildhelper

7、安装成功后,会提示重启eclipse

OpenDaylight代码导入eclipse

1、打开Eclipse, 选择File => Import => Maven => Existing Maven Projects。

点击“Next”,

2、比如我导入l2switch的代码到eclipse中,只需选择该代码位置,导入即可,导入过程有点慢,请耐心等待。如遇到以下界面,点击Finish。

3、导入后界面如下:

4、导入后会存在很多错误,可忽略。

eclipse 编译代码

1、新建maven编译命令,选择代码右击-》Run As => Run Configuration...

2、新建好maven编译命令之后就可以使用eclipse对代码编译了,右击代码-》Run As-》Maven Build

3、出现下面则表示编译成功

4、左侧栏出现以下界面,addresstracker-impl-0.2.3-Lithium-SR3.jar即编译好的jar文件。

使用eclipse断点调试程序

1、做程序开发必然要用到代码调试以及log输出,这里暂时讲解如何使用eclipse来断点调试自己编写的代码,这里以l2switch模块为例

2、启动ODL控制器,比如我在我的ubuntu虚拟机中启动ODL控制器,这里采用distribution-karaf-0.3.3-Lithium-SR3控制器,解压该文件,在ubuntu相应目录下的distribution-karaf-0.3.3-Lithium-SR3/bin下,运行

./karaf debug

注意一定要加debug参数,表示控制器以debug模式启动,启动后karaf控制台会提示 5005端口被监听,5005端口就是远程调试端口

3、在eclipse中点击Run-》Debug Configurations…,找到Remote Java Application,右击new,安装如下填写,其中

Host表示远程调试的主机ip,这里我的ubuntu虚拟机ip为192.168.65.129,Port表示远程调试的端口,这里为5005,就是刚刚讲的karaf控制台提示的5005端口

4、在该界面下点击Source,点击Add…,将要调试的代码加入进来

5、在代码中设置断点,在ODL控制器中安装l2switch模块如feature:install ODL-l2switch-all,模块启动之后就会运动断点处暂停,这样就可以单步调试了。

下一篇文章将讲解在ubuntu下如何使用ODL以及源码编译ODL的controller。

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2016-06-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

创建您的第一本Chef Cookbook

Cookbook是Chef框架的关键组成部分之一,其描述了相关节点的所需状态,并允许Chef推送需达到该状态的更改数据。由于需要进行配置的选项和区域数量众多,第...

2655
来自专栏linux运维学习

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

限定某个目录禁止解析php 虚拟主机配置文件添加的核心配置内容: <Directory /data/wwwroot/111.com/upload> ...

2559
来自专栏华仔的技术笔记

Block类型变量-缓存Http请求与回调

3526
来自专栏wblearn

package.json文件快速入门详解

相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

1461
来自专栏java学习

MySQL安装图解

MySQL安装图解 一、MYSQL的安装 1、打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”。...

4746
来自专栏我是攻城师

关于Hbase多版本存储的一个注意点

49316
来自专栏王硕

原 Windows 64位下 PostgreSQL的编译

39511
来自专栏运维

Nginx1.10.2稳定版本tcp四层负载安装配置过程略解

nginx1.10.2(2016.10.18)是最新稳定版,适合线上运行,最新开发版为1.11.8(2016.12.27)

1371
来自专栏Coding迪斯尼

java开发操作系统:一个程序向另一个程序伸出的咸猪手

1714
来自专栏java架构师

老生常谈GET和POST,以备常查

------------------- GET 和 POST 请求的区别 // --TCP/IP 协议详解卷3 13.3.1 报文类型:请求与响应 HTTP ...

3207

扫码关注云+社区

领取腾讯云代金券