我们在这里对这两种SDN实现方案分别做个简单描述。
(1)以网络为中心的SDN
以网络为中心的SDN的技术核心是OpenFlow协议,OpenFlow技术最早由斯坦福大学于2008年提出,它是一种通信协议,用来提供对网络设备诸如交换机和路由器的数据转发平面(Data Forwarding Plane)的访问控制。OpenFlow旨在基于现有的TCP/IP技术条件,以创新的网络互联理念解决当前架构在面对新的网络业务和服务时所产生的各种瓶颈。
OpenFlow的核心思想很简单,就是将原本完全由交换机/路由器控制的数据包转发过程,转化为由控制服务器 ((Controller) )和OpenFlow交换机 ((OpenFlow Switch) )分别完成的独立过程。也就是说,使用OpenFlow技术的网络设备能够分布式部署、集中式管控,使网络具有软件可定义的形态,可对其进行定制,快速建立和实现新的功能与特征。
基于OpenFlow技术的SDN架构主要包括基础设施层(Infrastructure Layer)、控制层(Control Layer)和应用层(Application Layer),如下图所示。基础设施层代表网络的底层转发设备,包含了特定的转发面抽象。控制层集中维护网络状态,并通过南向接口(控制和数据平面接口,如OpenFlow)获取底层网络设备信息,同时为应用层中的各种商业应用提供可扩展的北向接口。
图:基于OpenFlow的SDN架构
网络智能在逻辑上被集中在基于软件方式的SDN控制器中,它维护着网络的全局视图。因此,对于应用来说,网络就类似于一个单一的、逻辑上的交换机。利用SDN,企业和运营商能够从一个单一的逻辑节点获得独立于设备供应商的对整个网络的控制,从而大大简化网络设计和操作。由于不再需要理解和处理各种不同的协议标准,而只是单纯地接收来自SDN控制器的指令,网络设备自身也同时能够得到极大的简化。
网络管理员能够以编程方式来自动化配置网络抽象,而不用手工配置数目众多的分散的网络设备。另外,通过利用SDN控制器的集中式智能,IT部门可以实时改变网络行为,可以在数小时或者数天之内部署新的应用和网络服务,而不是像现在一样需要数周或者几个月的时间。通过将网络状态集中到控制层,SDN利用动态和自动的编程方式为网络管理者提供了灵活的配置、管理、保护和优化网络资源的方式。而且,管理员可以自己编写这些程序,而不用等待新功能被嵌入到供应商的设备中和网络的封闭软件环境之中。
除了提供对网络的抽象之外,SDN架构还支持API接口来实现那些通用网络服务,包括路由、多播、访问控制、带宽管理、流量规划、QoS、处理器和存储资源优化、能源使用,以及所有形式的策略管理和商业需求定制。例如,SDN架构可以很容易在校园的有线和无线网中定义和实施一致的管理策略。
同样,SDN也使得通过智能编排和配置系统(Intelligent Orchestration and Provisioning Systems)来管理整个网络变得可能。ONF(Open Network Foundation)正在研究如何通过开放API接口来促进多供应商管理方式。在这种方式中,用户可以实现资源按需分配、自助服务管理、虚拟网络构建以及安全的云服务。
(2)以主机为中心的SDN
以主机为中心的SDN实现方案是为了满足云计算时代的数据中心对网络服务的交付能力要求而设计的。
实际上,在所有的网络环境中,数据中心是最早遭遇到网络束缚的地方。数据中心作为互联网内容和企业IT的仓储基地,是信息存储的源头。为了满足日益增长的网络服务需求,特别是互联网业务的爆发式需求,数据中心逐渐向大型化、自动化、虚拟化、多租户等方向发展。传统的网络架构处于静态的运作模式,在网络性能和灵活性等诸多方面遭遇到挑战。数据中心为了适应这种变化只能疲于奔命,不断对物理网络设施升级改造,增加IT设施投资来提高服务水平,这使得网络环境更加复杂,更难控制。各种异构的,不同协议的网络设备之间的兼容性和互通性令人望而生畏;不同设置间分散的控制方法让网络的部署更困难,同时,这也给数据中心增加了巨大的经济成本和时间成本压力。在这种背景下,数据中心对SDN技术有最直接的需求,这也是SDN技术发展的最直接动力。
以主机为中心的SDN是以主机为中心,将控制平面和数据平面分离,将设备或服务的控制功能从其实际执行中抽离出来,为现有的网络添加编程能力和定制能力,使网络有弹性,易管理而且有对外开放能力;数据平面则不改变现有的物理网络设置,利用网络虚拟化技术实现逻辑网络。
·在控制层面上,以主机为中心的SDN实现方案提供了集中化的控制器,集中了传统交换设备中分散的控制能力。除了完成SDN控制器的南向、北向及东西向的功能,通常还作为数据中心的一个模块或者是一个单独的组件,支持和其他的多种管理软件的集成,比如资源管理、流程管理、安全管理软件等,从而将网络资源更好地整合到整个IT运营中。
·在数据平面,主要以网络叠加(Network Overlay)技术为基础,以网络虚拟化为核心。这种方式不改变现有的网络,但是在服务器Hypervisor层面增加一层虚拟的接入交换层来提供虚拟机间快速的二层互通隧道。通过在共享的底层物理网络基础上创建逻辑上彼此隔离的虚拟网络,底层的物理网络对租户透明,使租户感觉自己是在独享物理网络。网络叠加技术使数据中心的网络从二层网络的限制中解放了出来,只要IP能到达的地方,虚拟机就能够部署、迁移,网络服务就能够交付。
网络叠加技术指的是一种在网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其他网络业务分离。其实这种模式是以对传统技术的优化而形成的。早期的就有支持IP之上的二层Overlay技术,如RFC 3378(Ethernet in IP)。并且基于Ethernet over GRE的技术,H3C与Cisco都在物理网络基础上发展了各自的私有二层Overlay技术——EV(Ethernet Virtual Interconnection)与OTV (Overlay Transport Virtualization)。EVI与OTV都主要用于解决数据中心之间的二层互联与业务扩展问题,并且对于承载网络的基本要求是IP可达,部署上简单且扩展方便。
在技术上,网络叠加技术可以解决目前数据中心面临的三个主要问题。
·解决了虚拟机迁移范围受网络架构限制的问题。网络叠加是一种封装在IP报文之上的新的数据格式,因此,这种数据可以通过路由的方式在网络中分发,而路由网络本身并无特殊网络结构限制,具备大规模扩展能力,并且对设备本身无特殊要求,以高性能路由转发为佳,且路由网络本身具备很强的故障自愈能力、负载均衡能力。采用网络叠加技术后,企业部署的现有网络便可用于支撑新的云计算业务,改造难度极低(除性能可能是考量因素外,技术上对于承载网络并无新的要求)。
· 解决了虚拟机规模受网络规格限制的问题。虚拟机数据封装在IP数据包中后,对网络只表现为封装后的网络参数,即隧道端点的地址,因此,对于承载网络(特别是接入交换机),MAC地址规格需求极大降低,最低规格也就是几十个(每个端口一台物理服务器的隧道端点MAC)。当然,对于核心网关处的设备表项(MAC/ARP)要求依然极高,当前的解决方案仍然是采用分散方式,通过多个核心网关设备来分散表项的处理压力。
·解决了网络隔离/分离能力限制的问题。针对VLAN数量4,096以内的限制,在网络叠加技术中引入了类似12比特VLAN ID的用户标识,支持千万级以上的用户标识,并且在Overlay中沿袭了云计算“租户”的概念,称之为Tenant ID(租户标识),用24或64比特表示。
在网络叠加技术领域,IETF目前主要有三大类技术路线(见下表):
· VXLAN(Virtual eXtensible LAN)
· NVGRE(Network Virtualization using Generic Routing Encapsulation)
·STT(Stateless Transport Tunneling)
以上三种二层网络叠加技术,大体思路均是将以太网报文承载到某种隧道层面,差异性在于选择和构造隧道的不同,而底层均是IP转发。VXLAN和STT对于现网设备对流量均衡要求较低,即负载链路负载分担适应性好,一般的网络设备都能对L2-L4的数据内容参数进行链路聚合或等价路由的流量均衡,而NVGRE则需要网络设备对GRE扩展头感知并对flow ID进行HASH,需要硬件升级;STT对于TCP有较大修改,隧道模式接近UDP性质,隧道构造技术属于革新性,且复杂度较高,而VXLAN则利用了现有通用的UDP传输,成熟性极高。总体比较,VXLAN技术相对另外两项具有一定优势。
表: IETF三种Overlay技术比较
技术路线 | 主要 | 支持 | 网络虚拟化方式 | 数据新增包头长度 | 链路HASH能力 |
VXLAN | Cisco,VMware | L2 over UDP | VXLAN | 50 Bytes(+原数据) | 现有网络可进行L2-L4 HSAH |
NVGRE | HP,MS, | L2 over GRE | NVGRE | 42 Bytes(+原数据) | GRE头的HASH,需要网络升级 |
STT | VMware | L2oTCP(无状态 | STT报头 | 58~76 Bytes(+原数据) | 现有网络可进行L2-L4 HSAH |
软件定义的网络将网络的边缘从硬件交换机推进到了服务器里面,将服务器和虚拟机的所有部署、管理的职能从原来的系统管理员+网络管理员的模式变成了纯系统管理员的模式,让服务器的业务部署变得简单,不再依赖于形态和功能各异的硬件交换机,一切归于软件控制,可以实现自动化部署。这就是网络虚拟化在数据中心中最大的价值所在,也是为什么大家明知商品现货服务器的性能远远比不上专用硬件交换机但是还是使用网络虚拟化技术的根本原因。甚至可以说SDN概念当年的提出,很大程度上是为了解决数据中心里面虚拟机部署复杂的问题。云计算是SDN发展的第一推动力,而SDN为网络虚拟化、软件定义和云计算提供了强有力的自动化手段。
网络叠加技术作为软件定义网络在数据平面的实现手段,解决了虚拟机迁移范围受到网络架构限制,解决了虚拟机规模受网络规格限制,解决了网络隔离/分离能力限制。同时,各种支持网络叠加的协议,技术正不断演进,VXLAN作为一种典型的叠加协议,最具有代表性,Linux内核自v3.7开始已经加入了对VXLAN协议的支持。另外,除了本节介绍的VXLAN、NVGRE、STT草案,一个由IETF工作组提交的网络虚拟化叠加 (Network Virtualization Overlays,简称NVO3)草案也在讨论之中(注:不过这个工作组的进度和进展极为缓慢,从2012年至今已经过去了9年,还没有形成最终的标准,或许又是个无疾而终的IETF项目 -- 或许可以理解为SDN发展方向中的一些问题,毕竟软件定义的网络的存在感远低于软件定义的计算,确切的说软件定义的存储一样也很难找到存在感。);另一方面,各大硬件厂商也在参与标准的制定和研发支持网络叠加协议的网络产品,这些都在推动着SDN技术的进步。
不过,最后泼上一点点有趣的冷水,按照Gartner 2019年的报告,SDN社区的活跃度不足,标准的推进也较为缓慢。套用一句俗话:SDN is dead; long live SDN. (SDN已死;SDN永生)。各种原因比较复杂,简单而言就是SDN推动了网络自动化、软件定义一切的理念的深入人心。但是,对于飘在应用层的人来说,SDN离大家都太远了,专业度太强了。SDN和SDS都难以想SDC一样深入(程序员)人心。