SoftwareDefinedNetwork背景1SDN体系架构2SDN特征33SDN关键技术44SDN应用和未来方向5背景传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以大家希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以像升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。什么是SDN软件定义网络(SoftwareDefinedNetwork,SDN),是由美国斯坦福大学cleanslate研究组提出的一种新型网络创新架构,核心理念是,希望应用软件可以参与对网络的控制管理,满足上层业务需求,通过自动化业务部署简化网络运维。传统网络设备紧耦合的网络架构被分拆成应用、控制、转发三层分离的架构。控制功能被转移到了服务器,上层应用、底层转发设施被抽象成多个逻辑实体。如果说现在的网络系统是功能机,系统和硬件出厂时就被捆绑在一起,那么SDN就是Android系统,可以在很多智能手机上安装、升级,同时还能安装更多更强大的手机App(SDN应用层部署)。应用层控制层基础设施层上层应用SDN控制软件网路服务网络设备网络设备网络设备网络设备网络设备APIAPIAPI控制数据平面口(例如OpenFlow)SDN体系结构网络虚拟化可编程接口控制转发分离SDN特征控制平面(CP)转发平面(DP)CPCPDPDPCPDPCPDPCPDPCPDPCPCPDPDPCPCPDPDPCPDPCPDPCPDPCPDPCPCPDPDP传统网络设备的CP与DP不分离;设备之间通过控制协议交互转发信息;SDN将网络设备的控制平面集中上收到Controller;网络设备上只保留转发平面(转发表项);软件可以实现灵活的控制面功能满足用户多元化需求硬件成为简单哑资源,专注转发;Controller•工作原理:基于物理端口转发•策略:FloodHub•工作原理:基于MAC地址表转发•策略:STP+MAC地址学习L2Switch•工作原理:基于路由表转发•策略:静态路由+动态路由协议Router被抽象出的网络物理网络/FabricUnderlay网络通过Controller实现了对基础网络设施的抽象;应用程序看到的是Controller提供的网络服务应用程序的视角ControllerSDN实现方式SDN的核心技术:OpenFlow•FlowTable:FlowTable里面的每个条目都会与一个动作相关联,来告诉网络交换设备来如何处理与这个条目相关联的dataFlow;•SecureChannel:用于连接网络交换设备和远程网络控制器,在控制器和网络交换设备之间互相发送命令和数据包;•OpenFlowProtocol:提供一个开放标准统一的接口,使得控制器和网络交换设备之间可以相互通信Sep,2012OF1.3.1增强版本协商能力OF1.3重构了能力协商PBBIPv6扩展头多ControllerPerflowmeterApril,2012OF1.2IPv6Dec,2011OF1.1多表MPLS、VLANgroupECMPFeb,2011OF1.0功能:单表IPv4Dec,2009OpenFlow的标准化组织OpenNetworkFoundation,即开放式网络基金会。ONF是非盈利的组织机构,致力于创新和发展新型网络架构,即软件定义网络(SDN)。-ONF成立一年,有超过80家国内外公司加入到ONF的商业化推广和使用SDN技术的推广。-国内企业包括:华为、中兴、腾讯、盛科、华三等。18OpenFlowv1.0之流表结构•流表是OpenFlow对网络设备的数据转发功能的抽象–表项包括了网络中各个层次的网络配置信息•–包头域:用于对交换机接收到的数据包的包头内容进行匹配–计数器:用于统计数据流量相关信息,可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护–动作(action):用于指示交换机在收到匹配数据包后如何对其进行处理包头域计数器动作•用于匹配交换机接收到的数据包的包头内容,OpenFlow1.0包头域包含12个元组(tuple)–涵盖ISO网络模型中第二至第四层的网络配置信息–每一个元组中的数值可以是一个确定的值或者是“ANY•OpenFlow1.1及后续版本将“包头域”更名为“匹配域OpenFlowv1.0之包头域入端口源MAC地址目的MAC地址以太网类型VLANIDVLAN优先级源IP地址目的IP地址IP协议IPTOS位TCP/UDP源端口TCP/UDP目的端口IngressPortEtherSourceEtherDesEtherTypeVLANIDVLANPriorityIPSourceIPDesIPProtoIPTOSbitsTCP/UDPSRCPortTCP/UDPSRCPortOpenFlow1.0之流表计数器•针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息–针对每张流表,统计当前活动的表项数、数据包查询次数、数据包匹配次数等–针对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等–针对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计–针对每个队列,统计发送的数据包数和字节数,还有发送时的溢出(Overrun)错误次数等OpenFlow1.0之流表动作列表动作名称说明转发(Forward)ALL:将数据包从除入端口以外其他所有端口发出CONTROLLER:将数据包发送给控制器LOCAL:将数据包发送给交换机本地端口TABLE:将数据包按照流表匹配条目处理IN_PORT:将数据包从入端口发出NORMAL:按照普通二层交换机流程处理数据包FLOOD:将数据包从最小生成树使能端口转发(不包括入端口)修改域(Modify-Field)设置VLANID、VLAN优先级,剥离VLAN头修改源MAC地址、目的MAC地址修改源IPv4地址、目的IPv4地址、ToS位修改源端口号、目的端口号丢弃(Drop)交换机对没有明确指明处理动作的流表项,将会对与其所匹配的所有数据包进行默认的丢弃处理接收报文包头解析匹配表0实施动作匹配表n通过安全通道发送到控制器…..是否是否Openflow1.0数据包处理流程初始化包头以太网类型=0X8100IP协议=6或17设置VLANID和PCP设置IP源及目的地址设置IP源及目的地址协议和TOS位UDP/TCP源/目的端口作为四层信息ICMP类型和编码作为四层信息IP协议=1以太网类型=0X0806以太网类型=0X0800使用设定好的包头域进行查表Openflow1.0包头解析过程判断是否设置输入端口,以太网源地址,目的地址极其类型,并将其他所有置为0FlowTable例子MACSRCMACDSTIPSRCIPDSTTCPDPortTCPSPortActionCount**192.168.1.0/254***Port1249**192.168.2.0/254***Port2229******Port3898MACSRCMACDSTIPSRCIPDSTTCPDPortTCPSPortActionCount**192.168.2.2192.168.3.580*Drop250**192.168.3.4192.138.5.480*Port3300******Controller9FlowTable定义路由FlowTable定义防火墙Openflow消息•Openflow消息总共分为三大类:•Features用来获取交换机特性•Configuration用来配置Openflow交换机•Modify‐State用来修改交换机状态(修改流表)•Read‐Stats用来读取交换机状态•Send‐Packet用来发送数据包Controller‐to‐Switch•Packet‐in用来告知控制器交换机接收到数据包•Flow‐Removed用来告知控制器交换机流表被删除•Port‐Status用来告知控制器交换机端口状态更新•Error用来告知控制器交换机发生错误Asynchronous•Hello用来建立Openflow连接•Echo用来确认交换机与控制器之间的•Vendor厂商自定义消息SymmetricPacket‐in事件(交换机接收数据包)当交换机收到一个数据包后,会查找流表,找出与数据包包头相匹配的条目。如果流表中有匹配条目,则交换机按照流表所指示的action列表处理数据包。如果流表中没有匹配条目,则交换机会将数据包封装在Packet‐in消息中发送给控制器处理。此时数据包会被缓存在交换机中等待处理。情况1交换机流表所指示的action列表中包含转发给控制器的动作(Output=CONTROLLER)。此时数据包不会被缓存在交换机中。情况2控制器配置流表(Flow‐Mod消息)•Flow‐Mod消息用来添加、删除、修改Openflow交换机的流表信息ADDDELETEDELETE‐STRICTMODIFYMODIFY‐STRICFlow‐Mod基于Openflow的SDN通信流程①主机向网络发送数据包②OF交换机流表无匹配项,通过PacketIn事件将数据包上报给控制器③控制器下发流表(或PacketOut)④数据包转发⑤同②⑥同③⑦数据包转发基于Openflow的SDN工作流程SDN目前应用范围校园网数据中心安全控制网络管理云计算虚拟化SDN未来工作在数据中心的应用融合IPv6与其他新型网络架构融合可扩展性研究规模部署与跨域通信与传统网络共存