版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012.12.20DeepIntrotoSDN/OpenflowOpenflow代码分析Openflow环境搭建与测试
2012.12.20DeepIntroto1ReferenceOpenFlow/SDNIntroduction——2012ONSOpenFlowandSDNintheFinancialIndustry——PeterKrey.2012ONSFlowVisorEngineeringTutorial——RobSherwood.2012ONSTrematutorial——NECTremaTeam2012ONSHowSDNwillshapenetworking——NickMcKeown.2011ONSOpenflowSpecificationv1.1.0Openflow1.0.0reference版本源码ReferenceOpenFlow/SDNIntrodu2Why&whatisSDN&Openflow?Why&whatisSDN&Openflow?3Thenetworktoday——closesystems设备管理独立、协议分散Thenetworktoday——closesyst4ControllerasnetworkOSOpenAPISDN——(网络功能重构)opensystemControllerasnetworkOSOpenA5WhatSDNlookslike应用层:虚拟网络覆盖、networkslicing(网络分片)、tenant-awarebroadcast、application-awarepathcomputation(路经计算)、集成其他软件包、政策、安全认证、流量工程控制平面层:数据平面资源调度、共享库(如拓扑信息、主机元数据、状态抽象)数据平面层:数据包转发(按照流表项)、数据包操纵(按照流表项)、流量统计WhatSDNlookslike应用层:控制平面层:数6Openflowcomponents网络虚拟化TremaisOpenflowprogrammingframeworkforRubyandCFlowVisor就是位于硬件结构元件和软件之间的网络虚拟层允许多个控制同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下,允许多个网络试验在不同的虚拟网络上同时进行Openflowcomponents网络虚拟化Trema7Anetworksliceisacollectionofslicedswitches/routers.Slicinglayer(虚拟切片):实现网络切片隔离Anetworksliceisacollect8HowSDNwillshapenetworking(Anindustrychange)使网络运营商和使用者对所运营所使用的网络有更大的权限(用户定制本地所需的网络功能、淘汰不需要的功能模块、创建虚拟网络实现隔离)加快网络创新(以软件更新的速度创新、标准随软件的更新情况而制定、促进技术交流、促进高校技术创新)供应链多样化(很多软件供应商、基本的硬件层抽象后实现多样化的功能延伸)建立更健壮的机制(标准化的数据转发层抽象、对各种网络功能可实现单独测试)
HowSDNwillshapenetwork9SDNdevelopmentSDNdevelopment10openflow和SDN深入介绍及openflow代码分析、环境搭建课件11OpenflowswitchesOpenflowswitches12OpencontrollersOpencontrollers13openflow和SDN深入介绍及openflow代码分析、环境搭建课件14OpenflowDemonstration可以在网络系统中通过移动每个子模块来测试每个模块,并可以决定如何划分设计单元支持无线网络移动性研究的框架Elastictree逻辑上分成三个功能模块——优化、寻址、能量控制。能量控制模块来切换各端口、线卡和整个交换机的能耗状态。OpenflowDemonstration可以在网络系统中15FlowVisorCreatesVirtualNetworksFlowVisorCreatesVirtualNetw16Openflow数据包转发
代码分析Openflow数据包转发
代码分析17
代码的大体结构涉及报文传输与生成的main函数udatapath.c负责datapathcontroller.c负责controllersecchan.c
负责安全通道,连接controller和udatapath,controller和switch的数据交互要经过secchandpctl.c
负责管理dp代码的大体结构18openflow设备上建立的主连接和附属连接主连接是可靠连接,附属连接不一定是可靠连接/Vconn-provider.hstructvconn_class{constchar*name;/用户定义的连接名字int(*open)(constchar*name,char*suffix,structvconn**vconnp);/尝试与openflow设备建立连接,成功则返回0、并将连接指针存入
*vconnp;不成功则返回errno的错误类型,如果不能立即建立连接,则返回EAGAIN,转入后台建立连接openflow设备上建立的主连接和附属连接struct19void(*close)(structvconn*vconn);/关闭vconn并且释放存储空间int(*connect)(structvconn*vconn);/试图完成vconn上的连接,成功与否都返回相应的返回值int(*recv)(structvconn*vconn,structofpbuf**msgp);/试图从vconn上接收openflow消息,成功则返回0并且将消息存至*msgp,回话发起方需要在通信后删除消息,利用ofpbuf_delete(),接收失败则返回errno消息并且*msgp中存入空指针Vconn_class(2/3)void(*close)(structvconn*vc20void(*wait)(structvconn*vconn,enumvconn_wait_typetype);/循环等待消息类型指出具体的action}Vconn_class(3/3)int(*send)(structvconn*vconn,structofpbuf*msg);/试图在vconn上将msg加入队列待传输void(*wait)(structvconn*vco21Datapath代码分析
openflow/udatapathdp_run:处理流超时,检查交换机控制器发出的数据包,然后调度数据包给不同的程序处理/datapath.cdp_wait:调用netdev_recv_wait(),在pollloop注册,以在net_dev()要准备接收数据包时时,调用poll_block()来唤醒当前状态,来接收数据包/datapath.c
poll_block:在事件注册后离开阻塞状态,唤醒dp_wait()
/poll_block.cDatapath代码分析
openflow/udatapat22数据层面转发从netdev接收数据包存入buffer/lib/netdev.c如果接收无误,则fwd_port_input()被通告处理数据包/udatapath/datapath.c数据层面转发从netdev接收数据包存入buffer23交换机查询流表,试图找到匹配udatapath/datapath.c
通过查询活动的流表的链表来搜寻匹配chain.c返回run_flow_through_tables和use_through(switch-flow.c中)来更新最近的流使用时间,输出action交换机查询流表,试图找到匹配udatapath/d24Do_output(),最后一个输出端口记录成prev_port,确保除了最后一个action其他的action都用过buffer了。/dp_act.c如果需要继续转发,则需要dp_output_port,如果输出端口不是特定的虚拟端口,则默认调用output_packet(),函数检查如果端口是可用状态,则发出数据包,并将计数器加一,然后清空buffer/datapath.cDo_output(),最后一个输出端口记录成prev_po25openflow和SDN深入介绍及openflow代码分析、环境搭建课件26控制层面转发remote-_run()调用dp_run(),检查安全通道的连接调用fwd_control_input(),标识消息的类型并且调用合适的句柄(可能在交换机上新建流表,并进行近一步的转发操作)控制层面转发remote-_run()调用dp_run(),27Openflow环境搭建与测试Openflow环境搭建与测试28Openflow1.0.0(Referencerelease)Anopenflowswitch(userspacedatapath-basedswitch,不需建立内核模块)1.Ofdatapath(udatapath/ofdatapath)在用户空间实现流表项配置2.Ofprotocol在参考交换机中实现安全通道(securechannel)的程序3.Dpctl配置交换机的工具Openflow1.0.0(Referencerelea29这个发行版本附带的其他软件1.
Controller功能:可以连接任意数量的交换机,使其发挥普通二层交换机的作用2.Vlogconf功能:适配正在运行的of协议或者控制器的系统日志级别3.Ofp-pki功能:创建和管理Openflow交换机的公钥4.一个利用tcpdump来分析openflow消息的补丁5.一个测试openflow功能的递归套件6.一个分析openflow协议的Wireshark解析器这个发行版本附带的其他软件1.Controller30controllerpunix:/var/run/controller.sock&Ifconfigeth0upcontroller-vptcp./configureMakeMakeinstallRmmodbridgeofdatapathpunix:/var/run/dp0.sock-ieth1--local-port=tap:tap0&ifconfigtap0ofprotocolunix:/var/run/dp0.socktcp:
CONNECTED测试交换机和控制器的连通性controllerpunix:/var/run/cont31Ifconfigtap0dpctladd-flowunix:/var/run/dp0,in_port=eth1,actions=output:eth3dpctladd-flowunix:/var/run/dp0,in_port=eth3,dl_dst=$SW1_ETH1_MAC,action=mod_dl_dst:$HOST2_MAC,output:eth1Ifconfigtap0dpctladd-flowunix:/var/run/dp0,in_port=eth3,actions=output:eth5dpctladd-flowunix:/var/run/dp0,in_port=eth5,dl_dst=$SW2_ETH3_MAC,action=mod_dl_dst:$HOST1_MAC,output:eth3在交换机上手动添加flow命令测试主机连通性在交换机上手动添加flow命令32Q&AQ&A33演讲完毕,谢谢观看!演讲完毕,谢谢观看!34
2012.12.20DeepIntrotoSDN/OpenflowOpenflow代码分析Openflow环境搭建与测试
2012.12.20DeepIntroto35ReferenceOpenFlow/SDNIntroduction——2012ONSOpenFlowandSDNintheFinancialIndustry——PeterKrey.2012ONSFlowVisorEngineeringTutorial——RobSherwood.2012ONSTrematutorial——NECTremaTeam2012ONSHowSDNwillshapenetworking——NickMcKeown.2011ONSOpenflowSpecificationv1.1.0Openflow1.0.0reference版本源码ReferenceOpenFlow/SDNIntrodu36Why&whatisSDN&Openflow?Why&whatisSDN&Openflow?37Thenetworktoday——closesystems设备管理独立、协议分散Thenetworktoday——closesyst38ControllerasnetworkOSOpenAPISDN——(网络功能重构)opensystemControllerasnetworkOSOpenA39WhatSDNlookslike应用层:虚拟网络覆盖、networkslicing(网络分片)、tenant-awarebroadcast、application-awarepathcomputation(路经计算)、集成其他软件包、政策、安全认证、流量工程控制平面层:数据平面资源调度、共享库(如拓扑信息、主机元数据、状态抽象)数据平面层:数据包转发(按照流表项)、数据包操纵(按照流表项)、流量统计WhatSDNlookslike应用层:控制平面层:数40Openflowcomponents网络虚拟化TremaisOpenflowprogrammingframeworkforRubyandCFlowVisor就是位于硬件结构元件和软件之间的网络虚拟层允许多个控制同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下,允许多个网络试验在不同的虚拟网络上同时进行Openflowcomponents网络虚拟化Trema41Anetworksliceisacollectionofslicedswitches/routers.Slicinglayer(虚拟切片):实现网络切片隔离Anetworksliceisacollect42HowSDNwillshapenetworking(Anindustrychange)使网络运营商和使用者对所运营所使用的网络有更大的权限(用户定制本地所需的网络功能、淘汰不需要的功能模块、创建虚拟网络实现隔离)加快网络创新(以软件更新的速度创新、标准随软件的更新情况而制定、促进技术交流、促进高校技术创新)供应链多样化(很多软件供应商、基本的硬件层抽象后实现多样化的功能延伸)建立更健壮的机制(标准化的数据转发层抽象、对各种网络功能可实现单独测试)
HowSDNwillshapenetwork43SDNdevelopmentSDNdevelopment44openflow和SDN深入介绍及openflow代码分析、环境搭建课件45OpenflowswitchesOpenflowswitches46OpencontrollersOpencontrollers47openflow和SDN深入介绍及openflow代码分析、环境搭建课件48OpenflowDemonstration可以在网络系统中通过移动每个子模块来测试每个模块,并可以决定如何划分设计单元支持无线网络移动性研究的框架Elastictree逻辑上分成三个功能模块——优化、寻址、能量控制。能量控制模块来切换各端口、线卡和整个交换机的能耗状态。OpenflowDemonstration可以在网络系统中49FlowVisorCreatesVirtualNetworksFlowVisorCreatesVirtualNetw50Openflow数据包转发
代码分析Openflow数据包转发
代码分析51
代码的大体结构涉及报文传输与生成的main函数udatapath.c负责datapathcontroller.c负责controllersecchan.c
负责安全通道,连接controller和udatapath,controller和switch的数据交互要经过secchandpctl.c
负责管理dp代码的大体结构52openflow设备上建立的主连接和附属连接主连接是可靠连接,附属连接不一定是可靠连接/Vconn-provider.hstructvconn_class{constchar*name;/用户定义的连接名字int(*open)(constchar*name,char*suffix,structvconn**vconnp);/尝试与openflow设备建立连接,成功则返回0、并将连接指针存入
*vconnp;不成功则返回errno的错误类型,如果不能立即建立连接,则返回EAGAIN,转入后台建立连接openflow设备上建立的主连接和附属连接struct53void(*close)(structvconn*vconn);/关闭vconn并且释放存储空间int(*connect)(structvconn*vconn);/试图完成vconn上的连接,成功与否都返回相应的返回值int(*recv)(structvconn*vconn,structofpbuf**msgp);/试图从vconn上接收openflow消息,成功则返回0并且将消息存至*msgp,回话发起方需要在通信后删除消息,利用ofpbuf_delete(),接收失败则返回errno消息并且*msgp中存入空指针Vconn_class(2/3)void(*close)(structvconn*vc54void(*wait)(structvconn*vconn,enumvconn_wait_typetype);/循环等待消息类型指出具体的action}Vconn_class(3/3)int(*send)(structvconn*vconn,structofpbuf*msg);/试图在vconn上将msg加入队列待传输void(*wait)(structvconn*vco55Datapath代码分析
openflow/udatapathdp_run:处理流超时,检查交换机控制器发出的数据包,然后调度数据包给不同的程序处理/datapath.cdp_wait:调用netdev_recv_wait(),在pollloop注册,以在net_dev()要准备接收数据包时时,调用poll_block()来唤醒当前状态,来接收数据包/datapath.c
poll_block:在事件注册后离开阻塞状态,唤醒dp_wait()
/poll_block.cDatapath代码分析
openflow/udatapat56数据层面转发从netdev接收数据包存入buffer/lib/netdev.c如果接收无误,则fwd_port_input()被通告处理数据包/udatapath/datapath.c数据层面转发从netdev接收数据包存入buffer57交换机查询流表,试图找到匹配udatapath/datapath.c
通过查询活动的流表的链表来搜寻匹配chain.c返回run_flow_through_tables和use_through(switch-flow.c中)来更新最近的流使用时间,输出action交换机查询流表,试图找到匹配udatapath/d58Do_output(),最后一个输出端口记录成prev_port,确保除了最后一个action其他的action都用过buffer了。/dp_act.c如果需要继续转发,则需要dp_output_port,如果输出端口不是特定的虚拟端口,则默认调用output_packet(),函数检查如果端口是可用状态,则发出数据包,并将计数器加一,然后清空buffer/datapath.cDo_output(),最后一个输出端口记录成prev_po59openflow和SDN深入介绍及openflow代码分析、环境搭建课件60控制层面转发remote-_run()调用dp_run(),检查安全通道的连接调用fwd_control_input(),标识消息的类型并且调用合适的句柄(可能在交换机上新建流表,并进行近一步的转发操作)控制层面转发remote-_run()调用dp_run(),61Openflow环境搭建与测试Openflow环境搭建与测试62Openflow1.0.0(Referencerelease)Anopenflowswitch(userspacedatapath-basedswitch,不需建立内核模块)1.Ofdatapath(udatapath/ofdatapath)在用户空间实现流表项配置2.Ofprotocol在参考交换机中实现安全通道(securechannel)的程序3.Dpctl配置交换机的工具Op
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温州2024年10版小学6年级英语第四单元期中试卷
- 幼儿园教师减负优化方案
- 电子商务运营(第二版) 课件 项目5 店铺推广基础
- 2024-2025学年河南省天一大联考高三上学期检测(二)物理试题及答案
- 云计算技术与供应链管理人才培养方案
- 玉磨铁路YMZQ-9标施工临时照明方案
- 出口退税现场核查的流程-记账实操
- 水务行业可持续发展方案
- 统编版语文小学五年级上学期期末试题及答案指导(2024-2025学年)
- 卫生室自查报告
- 外墙清洗记录单
- 垃圾分类与资源化处置建设项目计划书
- 模拟联合国大会流程及培训指导
- 牙龈病PPT课件可编辑
- SB/T 11223-2018管理培训服务规范
- 体育选项项目内容及考核要求(5)网 球
- 革命烈士杨靖宇主要事迹分析
- 《简单的周期问题》教学设计和说课稿
- 实验室生物安全管理体系结构框架图
- 简约国风知行合一王阳明心学教学模板课件
- 洗车流程电子教案课件
评论
0/150
提交评论