版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于OpenFlow的SDN技术SDN与OpenFlow技术简介SDN指的是软件定义网络。你可以这样去理解SDN:如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(NetworkOS)的概念一这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。云计算的发展,是以虚拟化技术为基础的。云计算服务商以按需分配为原则,为客户提供具有高可用性、高扩展性的计算、存储和网络等IT资源。虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性。近些年,计算的虚拟化技术(主要指x86平台的虚拟化)取得了长足的发展;相比较而言,尽管存储和网络的虚拟化也得到了诸多发展,但是还有很多问题亟需解决,在云计算环境中尤其如此。OpenFlow和SDN尽管不是专门为网络虚拟化而生,但是它们带来的标准化和灵活性却给网络虚拟化的发展带来无限可能。SDN的最重要特征:将传统网络设备的数据转发(dataplane)和路由控制(controlplane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。OpenFlow是实现SDN最常用的的一种协议,OpenFlow的原理和基本架构如下图。其实,这张图还很好地表明了OpenFlowSwitch规范所定义的范围一从图上可以看出,OpenFlowSwitch规范主要定义了Switch的功能模块以及其与Controller之间的通信信道等方面
ScopeofOpenHawSwitchSp^dficstfonControllerOpenFlow^SwitchControllerOpenFlow几大应用场景,包括:1)校园网络中对实验性通讯协议的支持(如其标题所示);2)网络管理和访问控制;3)网络隔离和VLAN;4)基于WiFi的移动网络;5)非IP网络;6)基于网络包的处理。OpenFlow协议Openflow规范主要分为如下四大部分OpenFlow的端口(Port)OpenFlow规范将Switch上的端口分为3种类别:a)物理端口,即设备上物理可见的端口;b)逻辑端口,在物理端口基础上由Switch设备抽象出来的逻辑端口,如为tunnel或者聚合等功能而实现的逻辑端口;c)OpenFlow定义的端口。OpenFlow目前总共定义了ALLCONTROLLEDRTABLEIN_PORTANY、LOCALNORMAL和FLOOD等8种端口,其中后3种为非必需的端口,只在混合型的OpenFlowSwitch(OpenFlow-hybridSwitch,即同时支持传统网络协议栈和OpenFlow协议的Sw让ch设备,相对于OpenFlow-onlySwitch而言)中存在。OpenFlow的FlowTable(流表)OpenFlow通过用户定义的或者预设的规则来匹配和处理网络包。一条OpenFlow的规则由匹配域(MatchFields)、优先级(Priority)、处理指令(Instructions)和统计数据(如Counters)等字段组成,如下图所示。IngressPortEtherSourceEtherDstEthfrTypeVianidVianPriorityIPsr<IPdstIPprotoIPToSbitsTCP/UDPSrcPortTCP/UDPDstPort在一条规则中,可以根据网络包在L2、L3或者L4等网络报文头的任意字段进行匹配,比如以太网帧的源MAC地址,IP包的协议类型和IP地址,或者TCP/UDP的端口号等。目前OpenFlow的规范中还规定了Switch设备厂商可以选择性地支持通配符进行匹配。据说,OpenFlow在未来还计划支持对整个数据包的任意字段进行匹配。所有OpenFlow的规则都被组织在不同的FlowTable中,在同一个FlowTable中按规则的优先级进行先后匹配。一个OpenFlow的Switch可以包含一个或者多个FlowTable,从0依次编号排列。OpenFlow规范中定义了流水线式的处理流程,如下图所示。当数据包进入Switch后,必须从FlowTable0开始依次匹配;FlowTable可以按次序从小到大越级跳转,但不能从某一FlowTable向前跳转至编号更小的FlowTableo当数据包成功匹配一条规则后,将首先更新该规则对应的统计数据(如成功匹配数据包总数目和总字节数等),然后根据规则中的指令进行相应操作-比如跳转至后续某一FlowTable继续处理,修改或者立即执行该数据包对应的ActionSet等。当数据包已经处于最后一个FlowTable时,其对应的ActionSet中的所有Action将被执行,包括转发至某一端口,修改数据包某一字段,丢弃数据包等。OpenFlow规范中对目前所支持的Instructions和Actions进行了完整详细的说明和定义。
OpenFlow对于QoS的支持(即OpenFlow对于QoS的支持(即MeterTable和MeterBands的定义等),对于GroupTable的定义,以及规则的超时处理等。OpenFlow的通信通道这一节中,OpenFlow规范定义了一个OpenFlowSwitch如何与Controller建立连接、通讯以及相关消息类型等。OpenFlow规范中定义了三种消息类型Features、a)Controller/Switch消息,是指由Controller发起、SwitchFeatures、Configuration>Modify-State、Read-State、Packet-out、Barrier和Role-Request等消息。这些消息主要由Controller用来对Switch进行状态查询和修改配置等操作。b)异步(Asynchronous)消息,是由Switch发送给Controller>用来通知Switch上发生的某些异步事件的消息,主要包括Packet-in、Flow-Removed、Port-status和Error等。例如,当某一条规则因为超时而被删除时,Switch将自动发送一条Flow-Removed消息通知Controller,以方便Controller作出相应的操作,如重新设置相关规则等。c)对称(Symmetric)消息,顾名思义,这些都是双向对称的消息,主要用来建立连接、检测对方是否在线等,包括Hello、Echo和Experimenter三种消息。
下图展示了OpenFlow和Sw让ch之间一次典型的消息交换过程,出于安全和高可用性等方面的考虑,OpenFlow的规范还规定了如何为Controller和Sw让ch之间的信道加密、如何建立多连接等(主连接和辅助连接)。SwitchControllerSwitchFEATUREffPW-FEATUREffPW-延LCONFIG■9-_FLOW^ODECHO_REQU4I一-My。一REPLy3.Opendaylight与Mininet环境搭建控制器使用OpenDaylight(以下简写为ODL),是现在主流的控制器项目,功能比较完善。模拟OpenFlow设备使用Mininet,远比基于KVM的虚拟机应用更高效、更简洁,且更容易理解。1环境准备主要的最简单的环境准备是:一台PC及安装VMwarestation(或VirtualBox)工作站用来承载VM2ODL获取安装可直接通过地址链接下载ODL的VM镜像:,下载此镜像后,可用VMwarestation或者virtualbox直接打开此VM,使用并启动ODL打开VM后,先进入OpenDaylight目录:cdopendaylight/opendaylight/distribution/opendaylight/再进入OpenDaylight启动目录:cdtarget/distribution.opendaylight-package/opendaylight执行:run.sh在浏览器中(VM环境或本地环境)输入http://[VMIP]:8080可转到如下登录界面,其中[VMIP]替换为控制器IP。登录用户名:admin,密码:admin,登录进入ODL的Web界面查看并可对ODL操作。如下图:*SDNHubadmin%LogIn3Mininet获取安装Mininet主要是虚拟出OpenFlow交换机以及host主机节点,并且能通过自定义来构造用户想要的拓扑。虚拟OpenFlow交换机主要是使用基于OpenvSwitch的应用。从下载Mininet的VM镜像,打开此镜像后,用户名为mininet,密码为mininet。登录进入Mininet虚拟机,之后即可通过mn命令来创建拓扑。4,环境测试和openflow协议分析这个section是继环境搭建完成以后,在此基础上熟悉平台操作,以及通过wireshark抓包工具分析OpenFlow(以下简写为OF)协议。.打开wireshark并创建拓扑按照章节一搭建平台,启动ODL,并^T开wireshark0进入装有Mininet的VM,通过mn命令指定网络拓扑及指定此ODL控制器。Mininet创建网络拓扑命令:1sudomn--topolinear,2--switchovsk--controller=remote,ip=03,port=6633此命令通过Mininet模拟创建一个含有两个交换机(OpenvSwitch,以下简写为OVS)和两个主机的网络拓扑,其中03为ODL的IP,6633为ODL的默认端口,网络拓扑如下图所示:.查看网络在Mininet中通过操作网络命令,可以查看OVS间及OVS与主机间的连接关系,也可以查看Mininet是否远程连接控制器。例如,通过nodes命令可以查看网络中所有的节点。mininet>nodesavailablenodesar-e:hlsis2cOnininet>通过net命令可以查看并确认网络连接关系是否与预期一致以及节点信息,且可以了解具体的连接端口信息。n1ninet>netKlo:sl-etlil:hl-cihOsl^ethZ:s2-&th2sZlo:s2-ethl:hZ-cthOs2-ethZ:sl-ethZhlhl-eth0;sl-ethlh乙b£-eth0:sZ-ethlnininet>通过下面的dump命令可以看出,交换机通过远程方式连接到控制器,且能看到控制器的IP和PORTmininet>dump<Remo+eContro11er-eG:192,168.5.203:pid-2005><UUSSwitchsi'lo'127,0.0.1l-etlil:Hotigjsl-cth2:Honcpid=201&><DUSSuitchsZ;Id;1ZjsZ-ethl;HoTiejsZ-cthZ;Nonepid=2GZl><HoxtM:hl-ethO:1G,0.0.1pid=Z01Z><Host>12:hZ-ethO:1G.0.0.2pid-Z013>nininet>.抓包并分析协议通过wireshark抓包可以直接看到控制器与OVS交换机的通信过程,下面分析该流程中的OF消息此专题应用的是直接支持OpenFlow协议的wireshark官网StableRelease(1.12.1版本。建立连接控制器与交换机之间的OpenFlow协议是应用于TCP传输层上,所以解析应用层。他们首先发送hello消息,建立初始化连接,协商使用的OpenFlow协议版本。由下图可知,ODL与Mininet之间应用的是OpenFlow1.0版本协议(其他1.2、1.3协议会在协议OpenFlow后面标识)。51155.204681L92.16fi.52O4192.168,5,203OpenFlow64Type:OFPI^I-ELIC51355.206109192.168.5,203MOpenFlow64Type:OFPT_FELLC514$5.210867152.1€8t5,20304OpenFlow64Type:0FPT_FEATLRE5_REQLE5T51655.211&LQ19Z.l«a.52(M1翌・1跖,5・203OpenFlow2^2Type;OFP7_FEATURE5_REPLy51755.2161001931配52Q3192.1(3.5.204OpenFlow68Type;OFPT_5ET_CONFIG51855.21631719Z.1C8.5.203192.1M.5.204OpenFlow64Type:0FPILCET.CONFIG_ftEQUEST52055.219443m168.5,20403OpenFlow68Type:0FPT_G£T_CONFIG_REPLY52455,24876c1S316E.120403openFlow64Type:OFPT_|-ELLC52655.253516[奠.16乳工20204OpenFlow64Type:OFPT^bELLO5275S.255S441t8,5,203192.168.5,204OpenFlow64Type:0FPTLFEATlres.request55.2564200403OpenFlow232Type:OFPTLFEATLRES-REPLY53055.257832152.160.5,201皿16队5.204OpenFlow68Type:OFPT_SET_CONF1G53155.2579691^,204OpenFlow64Type:0FPT_CET_CONFIGJiEqu巨5T53355.258148192.168520304OpenFlow1"Type:OFP7_FLDW_MODS345工”8并2lQ.16a.52O403OpenFlow68Type:OFPT_GET_CONFIG_1?EPLY53555.2B9B5403192.168.5,204OpenFlow128Type:OFPTLFLDW_MOO
能力请求响应该消息主要响应能力请求featurerequest消息,回复连接此控制器的交换机的一些基本设置信息,包括交换机的能力以及它的一些端口的信息等。OpenFlcw1.0.000CO.000COType:j后》L&ngtTransaction10:lflB2S6r5Jd*DacapdthuniqueID:n_buffer?:”6n_tat>te5;2S5-t1ICxGOOOOOOO0-Flow・*•・,…,*・•r*®・-labltsratlscics:False.▼***.-*r.._*.*.**t**0*.*Port±tatistic5:False-一t-♦*+-…*0,*--croupsta.tlstics;False・...♦・■...<h**..■canrcaaaembleIPfragments:Fais看0>F由l£包o*Sw1rctiwillblockloopir>gports:iacdcn?;0xM0C"Q0..…..h.…*…t*..*.…一.…0-outputtoswftctipo-rt:False>SettheSOZ.lqvlahid;False*s«ctlie0O2.1qpriorityiraise-Scriptheeo^.lqheaderifalse-Eihtrnetsourceaddress:False-EtherretdestSnjtioaaddress;Falsp・IPsourcejddress:Falx-IFdestlnailonJddress:F^l^e-WTOS(&STPf^ld.6Mti)!True-tcp/ucpsourceport!True-TCP/UPPtJtSCinaUQnport;Tryt-Outputtoqu@uR:Raise*p(rtdat^1?Port42iPortdac3config请求回应getconfigreply消息用于回应getconfigrequest消息,交换机通过该消息回应配置信息,一般是交换机的接口配置等信息。stats状态信息statsreply消息用于回应statsrequest信息,主要是交换机回应给控制器的状态信息。flowmod消息flowmod消息涉及到流表项的匹配信息等,下图显示的flowmod匹配项的类型信息。openFlov.l.Q・0Mg。!■"rNg;3。1Ge工)Type:[OfPTjLOwjwi0[>(14)L^rhgThi72TransdtticnID:1436217S50*11<j<ards:41驶工。工inport:0Ethernetsourceaddress;00:00:(K)_00:OO:OO(OO:0□:00:DO:DO:OD)Ether〃吧tdesrinationaddress:00:00:00.00:00r00((K>;00:00:00:00:QO)inputvlaisid;0InpuTVLANpriwicy:0Pdddir^g:0oataretdissectedyetCookie:0x0000000000000000conrni-ard:DeletealTmtthingflows(S)Idledn>€>ouc:0hardtime-out:0Priorliy:0BufftrId:0x00^00440Outport:6SS1SFlag:03.6packet_in、packet_out消息在这部分流程中,当交换机收到数据包后查找流表无匹配项时,将数据包封装在packet_in消息发给controller,由controller通过packet_out消息下发决策,使发送和接收数据包的两主机间进行通信。193.66656210.0.&.110.0.0,2OpenFlow172Type:193.674867Ie;f2;l+;3b;f2;3&7e;82;dl8;Ga;7c;feOperFlow122Typw;193.676395le:f2:14:3b:fl:367e:82:48:ca:7c:feOp电nFlow122Type:293.676563Ie;f2:14;3b;f2;367e;82;d8:ca:7c:'FeOpenFlow176Type;193.67914S03192,168,5.204OpenFloitf136Type:193.6793081924168.5,203192.168.5,204OpenFlow64Type:193.679775192.168.5,2041^2,168.5,203OpenFlow64Type:193.688289&3192.L68.5.204OpenFlow152Type:193.688443&3192.168.5,204OpenFlow64Type:193.688912192.168.S.2G4192.168.5,203QpenFJow64Type;J93.69270OpenFlow178Type:193.70384116.C.&.OpenHow178Type:193.70439510,0,0.2OpenFlow172Type:193.712097W.&.9.lOpenFlw172Type:以上几种消息类型,可以参照OpenFlow标准协议中的类型,如下图:
TypeDescriptionH画C&r^tralIer*>SwitchfollowingtheTCPhandshake,thecontrollersendsitsversionnunnbertotheswitch.HelloSwitch-Controllertheswftdireplieswithitssupportedversionnumber.Feature专RequestContrallcn>Switchthecontrolleraskito魏uwhichpartsareavailable.SetConfigControIIen>SwitchinthlEea$erthectmtraller独kftheswitchto4电r>dflowexpiratians.FeaturesRerWSwitch^Controllertheswitchreplieswithalistofports,portspeeds,andsupportedtablesandactions.PortStatusSwitch->Contr&lkrenablestheswitchidinformThatconuollerofch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47963-2026同步发电机用交流励磁机技术要求
- 2026外企产品面试题及答案
- 2026武威医院面试题及答案
- 2026项目管理培训面试题目及答案
- 光伏项目合作协议合同
- 2025-2026学年河北省承德市双滦区数学三年级下学期期末达标测试试题(含解析)
- 黄山市徽州区职业教育发展中心招聘教师笔试真题2025
- 凉山州木里中学招聘高中教师笔试真题2025
- 2025-2026学年江西省九江市彭泽县数学四年级第二学期期中统考模拟试题含答案
- 2025-2026学年江苏省盐城市滨海县数学三下期中教学质量检测模拟试题含答案解析
- 上海市2026年中考数学试题(附答案)
- 浙江省劳动合同
- 2026天津石油职业技术学院招聘20人笔试题库带答案详解(B卷)
- 2026年交管12123驾驶证学法减分试题(含参考答案)
- 《自我保护免受伤害》教学课件 - 2026-2027 学年统编版(新教材)小学道德与法治四年级上册
- 2026-2030中国农膜行业市场发展分析及前景趋势与投资研究报告
- 2026年高考化学真题完全解读(黑吉辽蒙卷)
- 2026中国远洋渔业船舶智能化改造需求与卫星通信系统标配化
- 种子繁育员操作评估竞赛考核试卷含答案
- 2026年(完整版)国家GCP培训考试题库及参考答案(完整版)
- 中考英语作文10宾语从句写作句型练习
评论
0/150
提交评论