软件定义网络SDN
软件定义网络SDN
参考资料
参考文献
- Hybrid SDN evolution: A comprehensive survey of the state-of-the-art
- A Survey on Machine Learning Techniques for Routing Optimization in SDN
- Decentralized SDN Control Plane for a Distributed Cloud-Edge Infrastructure: A Survey
技术博客
1 SDN简介
1.1 网络虚拟化与SDN
- 传统网络是分布式控制架构,每台设备包含独立的控制平面和数据平面
- 流量路径的灵活调整能力不足
- 网络协议实现复杂,运维难度较大
- 网络新业务升级速度较慢
- NFV:网络功能虚拟
- SDN的三个主要特征:
- 转控分离:网元的控制平面在控制器上,负责协议计算,产生流表;而转发平面只在网络设备上。
- 集中控制:设备网元通过控制器集中管理和下发流表,这样就不需要对设备进行逐一操作,只需要对控制器进行配置即可。
- 开放接口:第三方应用只需要通过控制器提供的开放接口,通过编程方式定义一个新的网络功能,然后在控制器上运行即可。
- Overlay:在现有网络上叠加虚拟逻辑网络,原有网络不改造前提下,通过定义的逻辑网络来实现业务逻辑,解决原有数据中心的网络问题。实际上就是一种隧道封装技术,将二层网络封装在三层/四层报文中进行传递,提供了一种解决数据平面转发和多租户隔离的技术手段,VXLAN(Virtual eXtensible LAN)是当前最为主流的Overlay标准。
- SDN的两个重要实体:
- controller:知道网络钟所有消息,对整个网络进行管理和控制,可以给将交换机下发流表
- switch:实现controller指令,转发规则由流表制定
- secure channel:与控制器通信的模块
- flow table:转发规则
1.2 OpenFlow协议
OpenFlow是一种网络通信协议,应用于SDN架构中控制器和转发器之间的通信。软件定义网络SDN的一个核心思想就是“转发、控制分离”,要实现转、控分离,就需要在控制器与转发器之间建立一个通信接口标准,允许控制器直接访问和控制转发器的转发平面。OpenFlow引入了“流表”的概念,转发器通过流表来指导数据包的转发。控制器正是通过OpenFlow提供的接口在转发器上部署相应的流表,从而实现对转发平面的控制。
OpenFlow协议架构
OpenFlow流表项组成
2 SDN架构
2.1 SDN组件
2.1.1 SDN控制器
- OpenDaylight:Linux基金会管理的开源SDN控制器,最受瞩目的开源SDN控制器。使用微服务架构,支持 OpenFlow, P4 BGP, PCEP, LISP, NETCONF, OVSDB, SNMP等协议,平台核心是Model-Driven Service Abstraction Layer。
- ONOS,开源的SDN网络操作系统,主要面向服务提供商和企业骨干网、
- Ryu,基于Python开发,模块清晰,可扩展性好。
2.1.2 SDN南向接口 SBI
- OpenFlow:定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。
- Channel用于交换机域控制器通信,用来配置和管理交换机、接收交换机上报事件
- Flow Table放流表项,每个流表项由匹配域(包括输入端口、包头以及其他流表设置的元数据)、优先级、指令集、计数器、计时器、Cookie和用于管理流表项的flag组成:
- Group Table定义一组可以被多个流表项共同使用的动作
- Meter用于计量和限速
- OF-Config:OF-Config是一个OpenFlow交换机配置协议,提供了开放接口用于控制和配置OpenFlow交换机,但不影响流表的内容和数据转发行为。
- NETCONF:基于XML的交换机配置接口,用于替代CLI、SNMP等配置交换机。
- P4:一个协议无关的数据包处理编程语言,提供了比OpenFlow更出色的编程能力,不仅可以指导数据流进行转发,还可以对交换机等转发设备的数据处理流程进行编程。
- P4交换机将流水线处理数据的过程进行抽象和重定义,数据处理单元对数据的处理抽象成匹配和执行匹配-动作表的过程,包头的解析抽象成P4中的解析器,数据处理流程抽象成流控制
- P4基础数据处理单元是不记录数据的,所以就需要引入一个元数据总线,用来存储一条流水线处理过程中需要记录的数据。P4交换机的专用物理芯片Tofino,最高支持12个数据处理单元,可以覆盖传统交换机的所有功能。
2.1.3 Mininet 网络虚拟化平台
- Mininet Walkthrough
- Ubuntu20.04 WSL成功安装,openvswitch启动报错,改用虚拟机
软件定义网络SDN
https://yee686.github.io/2024/01/11/软件定义网络/