互联网的发展,伴随着云计算技术的革命,一开始大家关注的是依赖底层虚拟化技术将服务器资源虚拟化,提高资源利用率。而虚拟化也伴随着这波技术浪潮迅猛发展,但云计算时代下,单单虚拟化主机已经无法支撑起数据中心的发展,数据中心技术除了计算资源,还有存储和网络。因此软件定义存储(SDS)和软件定义网络(SDN)逐渐出现在大家视野,但SDN技术并不是云计算时代的产物,它的起源和发展由来已久。
SDN的起源
在数据中心网络领域,斯坦福大学的博士生 Martin Casado 敏锐地发现了问题:网络设备中多平面的紧耦合导致的互相依赖,将会制约系统技术革新、稳定性、规模性,而规模问题可能带来性能问题。Martin 领导了一个网络安全与管理的科研课题,实现一个灵活的、能够像计算机一样可编程的网络系统。2006 年,名为 Ethane 的网络模型作为项目成果发表,Ethane 包括了 SDN 架构中的两个重要内容:基于流表的转发和中央控制器。它不仅是 SDN 架构的雏形,也是 OpenFlow 的前身。
《OpenFlow : Enabling Innovation in Campus Networks》,这篇于 2008 年发表在通信网络领域顶尖会议(ACM SIGCOMM)的文章,由 Martin 的导师 Nick 教授的团队提出。OpenFlow 浮出水面,软件定义网络(SDN)被首次提出。
SDN的概念
对于SDN,大多数人(包括Gartner)是这样定义的:控制跟转发分离+开放的可编程API。但是并非控制和转发不分离就一定不是SDN,如Cisco的ACI,它是把策略管理的功能分离到了控制器上,控制协议(OSPF、BGP等)仍然运行在交换机上。广泛来说开放的可编程API以及由此带来的业务敏捷性就是SDN,当然纠结于定义并没多大的意义,而应该关注于SDN带来的价值,及其在网络虚拟化中的应用,为网络领域带来的革命。
SDN一般架构是控制和转发分离,中间是由OpenFLOW交换机组成的控制器,之上是运行在SDN的服务或应用。其中控制器和交换机的接口为南向接口,控制器和上层应用的接口为北向接口。
在云计算时代,离不开网络虚拟化,需要在公共网络中实现多租户的独立专用网络,这个技术叫Overlay。
Overlay
Overlay技术指的是一种网络架构上叠加的虚拟化技术,是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。一个Overlay网络主要由三部分组成:
- 边缘设备:是指与虚拟机直接相连的设备
- 控制平面:主要负责虚拟隧道的建立维护以及主机可达性信息的通告
- 转发平面:承载 Overlay 报文的物理网络
当前主流的 Overlay 技术主要有VXLAN, GRE/NVGRE和 STT。这三种二层 Overlay 技术,大体思路均是将以太网报文承载到某种隧道层面,差异性在于选择和构造隧道的不同,而底层均是 IP 转发
VxLAN
VxLAN(Virtual eXtensible Local Area Network) ,即扩充了的 VLAN,主要用于封装(使用UDP)、转发2层报文。其使得多个通过三层连接的网络可以表现的和直接通过一台一台物理交换机连接配置而成的网络一样处在一个 LAN 中。
它的实现机制是,将二层报文加上个 VxLAN header,封装在一个 UDP 包中进行传输。VxLAN header 会包括一个 24 位的 ID(称为VNI),在 VXLAN 中这类封装和解封的组件有个专有的名字叫做 VTEP。相比起 VLAN 来说,好处在于其突破了VLAN只有 4094(2^12 - 2)子网的限制,同时架设在 UDP 协议上后其扩展性提高了不少。
VxLAN主要网络设备:
- VTEP(VXLAN Tunnel End Point):直接与终端设备比如虚机连接的设备,负责原始以太报文的VXLAN 封装和解封装,形态可以是虚拟交换机比如 Open vSwitch,也可以是物理交换机。
- VXLAN GW(VXLAN Gateway/二层网关):用于终结VXLAN网络,将VXLAN报文转换成对应的传统二层网络送到传统以太网络,适用于VXLAN网络内服务器与远端终端或远端服务器的二层互联。
- VXLAN IP GW(VXLAN IP Gateway/三层网关):用于终结 VXLAN 网络,将 VXLAN 报文转换成传统三层报文送至 IP 网络,适用于 VXLAN 网络内服务器与远端终端之间的三层互访;同时也用作不同VXLAN网络互通。
实现模式
- 网络Overlay :使用物理交换机做VxLAN网络设备。

- 主机Overlay:使用服务器上的软件实现VxLAN网络设备。

- 混合Overlay组网

NFV

NFV(Network Functions Virtualization)是欧洲电信联盟提出,提倡数据机房由标准的交换机、标准的服务器和标注的存储设备组成,把所有的功能移到标准的服务器上实现,强调网络功能的虚拟化。

SDN和NFV对比
SDN处理OSI模型的2-3层,NFV处理4-7层。





网络虚拟化

网络虚拟化由SDN、NFV、Overlay从各个层面支撑虚拟化:
- SDN:定义一种控制和管理的网络架构
- NFV:指出网络功能如何借助这个架构实现虚拟化
- Overlay:提供一种解决数据平面转发和多租户隔离的技术手段
基于SDN的网络虚拟化解决方案
纯软件方式
以VMware的NSX为代表,还有Juniper的Contrall、Midokura的MidoNet等公司的网络虚拟化方案。在SDN技术利用上,一种是把策略管理放在控制器上,转发表项由虚拟交换机生成;一种是控制下发转发表项。另一方面,OpenStack的网络组件Neutron则两种方式都支持。
硬件方式
以Cisco的ACI为代表。
软件+硬件方式
它是一个软件方案的思路,只是把部分对性能影响最大的操作offload到硬件SDN交换机,可以认为是一个超级网卡。
部署

- 底层:基础设备,包括终端设备、网络设备和计算存储,也包括NFV虚拟的网络单元
- 第二层:集中控制
- 上层:资源管理层
强调每层向上层提供开放的可编程接口。