SDN闲聊

2020-07-02 00:00:00 功能 设备 网络 控制器 转发

注:本博文中图片都源自互联网,如侵犯图作者权利,请联系,我将删除之。

软件定义网络(Sofeware Define Networking,SDN)是近年来涌现的新兴网络技术。SDN的核心思想主要有两点:

1. 网络资源的可编程控制。例如Switch,Router,传统的方式就是一个设备对应一个资源,需要增删资源,就去机房插拔设备。SDN可以基于硬件或者纯软件,在一个/套设备上,通过软件编程,虚拟出多个资源,并且可以动态增删。

2. 把网络控制层面(controller plane)与数据转发层面(data plane)分离。通过分离控制层面,可以提高网络整体的管控能力。统一的网络管控加上分散在各个转发设备(也可能就是服务器)上的转发层面,可以更好的实现网络的管理能力。

美国斯坦福大学提出的OpenFlow协议是当前具代表性的SDN协议,但是原则上不能将SDN与OpenFlow划等号。现在 ONF(Open Networking Foundation)主导的以 OpenFlow为标准的SDN设计可以视为狭义的 SDN。

SDN的接口

SDN的架构需要向北向提供用户接口,向南向提供设备管理接口。现在比较统一的南向接口就是OpenFlow。北向接口没有一个统一的标准,OpenStack Neutron似乎可以作为一个统一的北向接口,许多SDN方案都有自己对接OpenStack Neutron的方式,例如networking-ovn,networking-odl等项目。


SDN的南向设备,可以是硬件设备,也可以是软件设备,例如OpenVSwitch。硬件厂商多推崇基于自家硬件的SDN,以便更好的搭载售卖硬件。而在开源领域,为了达到厂商中性,一般是基于软件实现SDN,例如OVN,Midonet,Dragonflow。

SDN控制器

SDN控制器是SDN实现中的大脑。SDN控制器可以分为集中式(Centralized)和分布式(Distributed),又可以分成主动式(Proactive)和混合式(Hybrid)。对应的可以有4类SDN控制器。Centralized Proactive、Centralized Hybrid、Distributed Proactive和Distributed Hybrid。

集中式控制器是由一个/组控制器统一管理一个SDN集群,所有的交换设备都连接到这个/组控制器上。并由这个/组控制器下发OpenFlow流表。集中控制器的负担将随着SDN集群的增加而加大,但是由于是集中控制,实现起来比较简单。

分布式控制器是指,在一个SDN集群中,每个交换设备都有一个对应的控制器。每个交换设备的OpenFlow流表由对应的控制器下发。分布式控制器的负担不随SDN集群的增加而加大,但是控制着各个交换设备的控制器之间的数据同步,以及对应的逻辑将会使实现变得复杂。

Proactive控制器,指控制器将所有必须的网络功能都下发到交换设备。这样设备在接收完OpenFlow转发规则后,自己就能完成网络功能。这对于简单的二三层转发,或者安全组等功能,可以实现。对于一些应用层功能,例如dhcp,用OpenFlow实现将会极其复杂。这个时候一般是上送控制器,由控制器完成dhcp的解包封包,再将网络包回送至交换设备。控制器参与到网络通讯中,并结合proactive方式,即是hybrid方式。

Hybrid控制器,部分网络功能下发至交换设备完成,由交换设备上送至控制器完成。上送控制器完成的网络功能,其延时(latency)将远大于直接在交换设备上完成。因此,在设计时,应当尽量将一些复杂的功能,并且不是很频繁使用的网络功能交由控制器实现。

实际使用时,二三层转发功能也可以上送控制器完成。当一个交换设备设计的路由表过多时,如果都由OpenFlow完成转发,每次查表时间也是可观的。这个时候可以将首包上送至控制器,控制器再下发具有一定ttl(time to live)的OpenFlow规则用于转发。在ttl到期之后,OpenFlow流表会被删除,这样可以保证交换设备上的OpenFlow表项不至于太大。


4种控制器如何选择,上图给出了答案。小规模网络下,集中式控制器是,因为统一管控,不需要控制器之间同步,控制器逻辑简单,对应的网络延时小。当网络规模上升到一定程度,分布式控制器的优势开始体现。在相对小规模的网络中,proactive控制器更占优势,因为直接可以由交换机完成网络功能,不需要控制器介入。但是网络规模变得巨大时,如果还是用proactive,首先更新OpenFlow表项的代价越来越大,尤其是对集中式控制器;同时由于OpenFlow表项变得巨大,查表时间变长,对应的网络延时(latency)也加大,这个时候,应该选用hybrid控制器。

另外,在选择SDN控制器还应考虑部署难度,HA等。分布式SDN控制器的部署比如比集中式SDN控制器要复杂,但是好在天生具备HA性能。

SDN的功能

SDN的功能其实就是网络功能,只不过加上了SDN的特色。网络功能有很多,二三层转发,安全组,防火墙,负载均衡,DNS等等。通常可以分为两类:

  • Networking Infrastructure:提供网络基础架构功能。或者说,提供SDN中各个终端设备(例如VM)的网络连通性功能。
  • Networking Service:提供网络服务功能。向SDN的用户提供网络服务(Networking As A Service),Load Balance,Firewall,QoS等等,都可以认为是网络服务功能。

SDN可以说是Cloud中重要的技术。以OpenStack为例,Neutron项目可以说是与Nova项目热度相当,有时还会超过Nova。在研究Cloud的时候,SDN将会是一个不可或缺的部分。

相关文章