资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,#,opendaylight,1,2025/6/4 周三,opendaylight,背景,核心 技术,主要特色,编译与使用,Ad-sal,与,Md-sal,Packet,处理,2,2025/6/4 周三,背景,SDN,市场,未来应用为主,底层屏蔽,网络服务于应用,,controller,的争夺,,由,IT,厂商发起 的 组织 思科,,IBM,,,dell,,,Redhat,,,Vm,ware,等 主要为网络设备制造商,软件商,,ONF,由 网络用户 发起,成员都是网络设备用户,致力于标准化,,openflow,而南向接口 不仅仅是,openflow,,,SDN Controller,协作开发,由各公司贡献,project,,,打造统一开放的,SDN,平台,本质核心 控制 和转发分离,南向不需标准化,,推动产业向前,需要标准化,但又不 希望标准化,硬件,,最初核心 代码由 思科 和,big switch,目标是打造 一个网络操作系统,3,2025/6/4 周三,核心技术,OSGI,一种面向服务的架构,将应用视为对等模块的相互协作,支持在控制器运行时进行服务的安装、删除和更新。,Maven,构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。,Infinispan,实现集群,Sal,多种南向协议对上提供统一的北向服务接口。,南向,netty,管理底层的并发,IO,北向,Rest,4,2025/6/4 周三,osgi,模块化 定义了,osgi,模块的概念,并将之称为一个,bundle,包含一个元数据的,jar,文件,其中元数据,MANIFEST.mf,,由,name-value,对组成,由类及相关资源组成,关注的是打包和共享代码。,生命周期 定义了,osgi,在框架中如何动态安装和管理,通过生命周期的操作(安装,更新,卸载等)动态地管理和改进应用程序,不需要重启应用程序。重点在于执行时模块管理和对底层,osgi,框架的访问。,服务层 面向服务,服务注册,查找等,接口与实现分离,,osgi,服务是,java,接口,模块内的组件间交互和通信。,5,2025/6/4 周三,Maven,优秀的构建的工具,可以,每个,mavn,项目中 核心 是,pom.xml,其定义了项目的基本信息,,编译时 就是使用了,maven clean install,一个重要 插件,maven-bundle-plugin,在,pom.xml,可自动生成,osgi,中元数据,,MANIFEST.mf,,,设置 如,import package,export package,以及最重要的,Bundle-Activator,设置其,bundle;,6,2025/6/4 周三,7,2025/6/4 周三,Project,协作开发,目前有很的,project,,,20,个左右,由各公司开发,,目前发布了,Hydrogen,版本,主要涉及以下几个,project,Base Opendaylight Controller,YANG Tools,Openflow Plugin,Virtualization Affinity Defense4All,Open DOVE,OVSDB,VTN,Serivce Provider BGP/LS and PCEP,LISP Flow Mapping,SNMP4SDN,下个版本为,Helium,8,2025/6/4 周三,In Hydrogen Release,The Opendaylight Controller Consists Of The Following Modules:,AD-SAL-Api-driven Service Abstraction Layer,AD-SAL Network Service Functions For Openflow-capable Nodes:Switch Manager Statistics Manager Host Tracker ARP Handler Forwarding Rules Manager(FRM),Topology Manager,Clustering And High-availability Services For AD-SAL,MD-SAL-Model-driven Service Adaptation Layer-A Set Of Infrastructure Common And Generic Services For Applications And Plugins(Basically,A Plumbing That Connects Applications And Plugins To Each Other).,Md-sal Base Network Functions:Topology Exporters Inventory Managers,MD-SAL Network Service Functions For Openflow-capable Nodes:Forwarding Rules Manager(FRM)Statistics Manager,MD-SAL Netconf Connector(Southbound Netconf Plugin),MD-SAL Restconf Connector(Northbound Restconf Plugin)-An Infrastructure Component That Renders REST Apis For Device/Service Models Loaded Into The Controller,Config Subsystem-Netconf/Yang Based Framework For Configuration,Performance And Fault Management Of Controller Infrastructure And Plugins Deployed Into The Controller,NSF Adapters-Network Service Function Adapter That Allow The MD-SAL Based OF1.0/1.3 Plugin To Talk With AS-SAL Based Network Service Functions,9,2025/6/4 周三,安装与使用,https:/wiki.opendaylight.org/view/release/hydrogen/base/installation_guide,Installing From Zip,nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-base/0.1.1/distributions-base-0.1.1-osgipackage.zip,Installing From RPM,virtualbox image,下载源码,编译,10,2025/6/4 周三,编译与运行,搭建环境,,Ubuntu,12.04,安装,jdk,,,maven,,设置环境变量,eclipse,安装插件,https:/wiki.opendaylight.org/view/opendaylight_controller:eclipse_cli_setup,下载,project,openflowplugin,controller,:,git clone,https:/git.opendaylight.org/gerrit/p/controller.git,Mvn clean install or-DskipTests Dcheckstyle.skip,运行,./run.sh,11,2025/6/4 周三,OpenDayLight,中的,bundles,核心基类:,ComponentActivatorAbstractBase,每个模块的,bundle,都要继承,,Start(context),启动方法,会遍历其所提供的实现,依次配置依赖关系。,getGlobalImplementations(),获取全局的实现类,其导出接口的实现类。,getImplementations(),获取容器相关的实现。,ConfigureGlobalinstance(c,Impsi),,,c,是前面提到的,Component,configureInstance,()在一个容器中配置实现的依赖关系。,containerCreate(String containerName),配置,Componet,,里面说明了导出的接口和依赖的接口,最后放到,dm,及缓存中。会在,ContainerMangaer,的,bundle,启动中调用。,CreateServiceDependency(),生成服务依赖对象,需要被子类调用,在配置,componet,的依赖关系的时候需要用到。,12,2025/6/4 周三,依赖管理,bundle,的抽象基类,管理全局和容器相关的服务,当然,bundle,本身就是一个大服务。,Container,是,OpenDaylight,中的一个网络域,有很多链接信息、整个域网络信息等,由,ContainerManager,管理容器,而,OSGI,管理各个,bundle;,每个模块中有多个实现,其中通过,Dependency Manager,管理其依赖关系。,每个实现一个,Component,每个,Component,就是一个服务,,里面说明了导出的接口和依赖的接口。,通过,Dependency Manager,以,component,管理依赖。,13,2025/6/4 周三,Sal,主要作用将服务抽象出来,不管控制器和网络设备之间 使用何种协议,提供协约国的一服务,是,odl,的核心设计,支持多种南向协议,为各模块和应用提供一致的服务,这些服务的实现,是由底层插件,(,基于已存在的组件(如,OF,)和网络设备的功能),),的所提供的接口,但是与,SAL,是松耦合的。具体将请求,映射到相应的插件,完成服务。,所提供服务,Data Packet Services,为数据报文的处理,提供服务,Topology Service,为应用提供节点和链路的更新信息,,Inventory service,为如节点或者节点连接提供,API,查询,Flow Programming Service,流编程服务,Resource service,资源服务,,14,2025/6/4 周三,Saldapacket Service,首先,OF,组件收到,APR,需要交到,ARP Handler,处理,,将首先根据类型,调用,IPOPS,到,SAL,交由,SAL,层,Sal,中的,DataPacketservice,实现了,IPOPS,其会通过,dispacthPacket(),方法,,其会调用实现,IListendatapacket,的应用,依赖于实现些接口,会,最后,ARP,实现了,IListenDatapacket,会将其送到,ARP Handler,处理。,15,2025/6/4 周三,MD-sal,Md-sal,的主要功能是促进提供者和使用者之间的管道。它可以提供提供者和使用者之间的管道在不同的容器中。它将连接到一个消息总线和共享数据存储的集群,opendaylight,容器。南向与北向的一致性。,提供者或消费者在,md-sal,中注册。从而,一个消费者可以找到所需的供应商。提供者可以生成通知,消费者可以接收通知,并从提供者获取数据。,插件,sal,角色,(,消费者或生产者,),定义的,sal,中的数据是被移走或存储数据。提供者可以将数据存入,sal,的,一个消费者可以从,sal,读取数据。,Md-sal,提供请求路由和基础设施服务,以支持服务,但它不提供服务本身,;,由插件提供服务。,Yang,使得,Componet,之间、,plugin,、北向等,api,,使得这种接口和,ad-sal REST,接口相比更抽象,符合模型驱动(,MD,)的思想。,16,2025/6/4 周三,1,)FPC,注册,Registers With The MD SAL For Flow Configuration Data Notifications,与,OP AddFlow RPC implementation with the SAL,2)requests a flow add through the Controllers REST API,3)the MD-SAL generates a data changed notification to the Flow Programmer Service,4)uses the OF Plugin generated API to create the RPC input parameter DTO for the OF Plugins“AddFlow”RPC,5)MD-SAL will route the request to the appropriate OF Plugin,6),下发流表(与,AD-sal,类似),17,2025/6/4 周三,Packet,处理流程,Packet,In,消息到来,经过底层,plugin,,经由,sal,层,调用实现了,IListenDataPacket,的,reciviceDataPakcet(RawPacket in),处理,,主要涉及三个模块,分别为,ARPHandler,HostTracker,simpleForwarding,Arphandler,主要负责,arpRequest,arpReply,HostTracker,主机信息,及更新主机,连接情况,,simpleForwarding,处理,ip,报文,同时安装到每个,host,的流表。,18,2025/6/4 周三,总结,官网文档乱,下一个版本,helium,值得期待,19,2025/6/4 周三,谢谢,20,2025/6/4 周三,21,2025/6/4 周三,22,2025/6/4 周三,
展开阅读全文