实用的生产实习报告模板汇总(精选30篇)
“-s mydir” :在其他选项使用前使用此选项可将源代码建立vSwitch。
在一个指定的目录中,而不是在你的home目录。
这里选择完全安装:./util/install.sh -a
安装完成后进行简单的测试:sudo mn
成功的结果应该是这样的界面:
(3)Eclipse配置
ODL不能使用默认jre(eclipse/jre),应该手动添加JDK-7:
主菜单 Window——Preferences: Java——Installed JREs——Search Standard VM——JRE name: JavaSE-1.7 (搜索到后手动双击修改名称,以便适配)。JRE home必须要在jdk子目录下,如 E:\Tools\jdk7u25\jre,最后添加这个jre.
还要导入opendaylight源码中主要的模块:file——imporrt——existing maven projects,需要导入的主要模块有:forwarding,hosttracker,switchmanager,topologymanager等,根据你编写的程序功能而定。
3. SDN控制器OpenDaylight的开发学习
总体来说,OpenDaylight的二次开发可以分为以下三个层面:
基于OpenDaylight REST APIs的上层网络应用开发 基于SAL内核相关服务的控制器组件与上层网络应用开发 基于SAL内核相关服务的南向协议插件开发与上层服务接口开发
当然,如果进行更具体的划分,每个层面还可以划分出更多的开发方向,但是就大的开发方向来说,主要使用以上三种开发模式。
我主要学习了第2种方式,基于SAL内核相关服务的控制器组件与上层网络应用开发方式一般的应用场景是上层网络应用程序需要借助已有的SAL相关服务及南向插件/协议实现某些特定的功能,而该功能并未由OpenDaylight控制器给出REST API。这种方式相对来说更可以称的上是OpenDaylight的二次开发。在介绍具体内容之前,首先需要了解以下储备知识:
OSGi与OSGi组件:OpenDaylight平台的后台。为整个工程项目提供了模块化管理的方式,即OSGi组件。每个组件可以实现某些特定的功能,并加载到工程的运行环境中。
Maven工具:Maven工具是用来实现对于OpenDaylight整个工程项目进行管理控制的工具。可以用Maven生成不同的项目,不同的组件。每一个Maven项目包含一个项目控制文件pom.xml,一个src文件夹,一个test文件夹。通常pom.xml文件使用结构化的文档来对整个项目的属性配置、外部依赖、编译进程与外部输出等进行设置,实现了工程的自动化管理。在src文件夹内包含项目或组件相关的源程序,test文件夹中包含相关测试程序。Maven是该小节所述的开发方式的基础,读者可以参考官方网站的文档进行学习。
Apache Karaf:Karaf工具是基于OSGi的OpenDaylight特性容器,用于实现OpenDaylight各功能组件的热插拔。
基于SAL内核相关服务的控制器组件与上层网络应用开发需要借助于OpenDaylight开发平台已经实现的模块与组件,调用其Java APIs以帮助实现我们所需要的功能。
4. 基于OpenDaylight进行模块开发
这部分我做了很多分析和实验,例如使用odl horizon运行云主机,mininet创建自定义拓扑、wireshark抓包实验分析openflow协议中控制器与交换机的通信过程等等,对网络架构、数据结构、开发方法流程有较为全面的掌握之后,我和小组其他成员合作,编写了一个控制器组件(bundle),主要是完成SDN中IP地址跳变和路径跳变的功能。
传统网络中设备的IP地址都是固定的,路由选择策略也大多是静态的,例如OSPF等路由协议的算法都是基于最短路径优先的,如果攻击者通过截获数据包和嗅探等技术知道了源主机、目的主机的IP地址以及转发的路径,就很容易实施DDoS、端口扫描等攻击。如果能够将实际IP映射到一系列虚拟IP,并随机变化,对于多条转发路径在满足带宽、时延的条件下也能够随机选择,那么攻击者就很难破解数据包了。这就是基于软件定义网络的动态防御技术。
这里主要展示一下实验结果:
我们建立了一个简单的拓扑,主机h1(10.0.0.1)到h5(10.0.0.5)之间有两条路径,第一条:h1-s5-s2-s1-h5,第二条:h1-s5-s4-s3-s1-h5.
在mininet中使h5 ping h1,可以连通。说明我们实现的跳变算法已经能够实现基本的通信。
某次在交换机s1中获得的流表如下:
可以看到源地址和目的地址分别为10.0.0.1和10.0.0.5.再看OUTPUT=OF|4,说明s1将数据包从端口4发出,因此选择的是第二条转发路径:h1-s5-s4-s3-s1-h5.
再次使h1 ping h5,获得s5的流表如下:
可以看到源地址和目的地址分别为214.0.0.1和214.0.0.5,而不是10.0.0.1和10.0.0.5,说明IP地址发生了变化。再看OUTPUT=OF|2,说明s5将数据包总端口2发出,因此选择的是第一条转发路径:h1-s5-s2-s1-h5.
由此可见,IP地址和转发路径都发生了变化,实验成功了。
三、 实习总结
本次实习,我接触了一个以前自己从来没有接触过的领域,几乎是从零开始学习它的思想理念、源码实现、开发流程等等,实习过程中涉及到方方面面的知识和技能,比如说ubuntu(linux)操作系统指令,java编程,数据结构,计算机网络、病毒方面的知识,还需要阅读很多英文的官方文档。把这些零碎的知识应用到整个项目中来,还要能解决实践过程中的各种小问题,这些不仅仅是对专业技能的挑战,也是对协调创新能力和耐心毅力的锻炼。本次实习的还有一个额外的收获,通过熟悉项目开发流程,进一步明确了自己毕业设计的具体思路,对于撰写开题报告和指定实施计划,也是很有帮助的。