本章和大家一起聊聊SDN的核心思想,小编2018年6月有幸参与了广东省某云建设项目 ,该项目中网络层面使用到了SDN技术,当时为了支持好这个项目也是恶补了各种SDN相关知识,包括比如“Overlay网络、Underlay网络、SDN控制器多平面组网、云网融合方案......”等,有了基础以后才敢进行SDN方案设计等后续工作安排,也因此积累了大量的项目“财富”。现在把我对SDN的核心思想的理解与各位小伙伴进行分享,希望可以给各位带来一些帮助。
一、SDN的三个核心:编程、解耦、抽象
(1)解耦:控制层面与转发层面分离,逻辑上实现集中化控制,数据转发主要依靠网络设备(转发器),控制层面主要依靠SDN控制器。SDN出现之前转发和控制是集中到各个网络设备之上的(紧密耦合),SDN出现之后就实现了转发与控制相分离(解耦)。
(2)抽象:底层网络基础设施架构从应用中抽象(Overlay概念),实现网络虚拟化,抽象出来之后就不用关心底层是划分VLAN还是VXLAN还是ACL,用户看到的是通过图形化服务区配置。
(3)可编程:利用编程接口,或外部系统可以实施对网络供应、网络控制、和网络运维的影响,即用户可以利用编程接口对网络进行灵活控制。若要实现新功能,可以自己写脚本,网络在未来只会越来越简单,有了SDN后底层网络该跑IPV4跑IPV4、该跑路由跑路由,该划分VLAN划分VLAN,只是在上层实现了额外的其他功能,帮助你更好地维护网络。
二、针对3大核心思想可实现的技术
(1)解耦:由开放网络基金会提出的openflow思想,彻底实现转控分离,彻底干掉TCP/IP,干掉路由协议,ospf、BGP都不用,通过控制器统一控制所有设备,网络设备不需要运行路由协议 ,由SDN控制所有的设备,控制器知道现网拓扑、链路等情况。由控制器下发策略告诉网络设备数据包给B还是给C,网络设备只负责转发,该思想比较极端,实现起来问题重重。
(2)抽象:底层网络不变,在上层通过隧道实现相应的功能,类似于优化思想。(VMware主推NSX即网络虚拟化的功能通过隧道实现,只需要把底层打通 ,通过SDN实现统一管理、统一维护、隔离,常用的隧道有VXLAN实现租户隔离,在现有传统网络之上叠加一层叫overlay网络,跑vxlan隧道实现用户的隔离(最早用vlan隔离,但是大规模网络中,如阿里云,租户几十万,可用VLAN只有4094,后来引出了vxlan技术解决多租户无法隔离问题)
(3)编程:有2种思路,1.网络厂商如思科、华为开放了交换机上的可编程接口,采用L2RS协议对设备进行编程,路由体系架构维持不变,可以通过编程去影响设备的路由转发表 ;2:主流交换机路由器都支持SDN,可以通过SDN平台可以统一编程控制所有网络设备。
三、SDN整体架构
SDN整体架构有3个层面:A、设备层;B、核心层即SDN控制器层;C、应用层。
SDN控制器向下通过南向接口(南向接口协议:openflow、snmp、netconfig、telnet来管理配置设备),通过北向接口(retful接口)来被上层的openstack、第三方应用APP调用。
此外SDN可以实现很多功能:如service Chain、DC-Cloud、安全接入、流量可视化、智能选路。
四、SDN存在的风险和问题
(1)厂商绑定:SDN存在厂商绑定,目前各个厂商之间的SDN不能互通,控制器必须与设备统一品牌。
(2)可靠性:若所有的策略、路由都由SDN控制器统一控制 ,若控制器出现问题会影响业务的正常运行,故存在一定安全风险。
(3)管理维护:懂SDN的人很少。