大二层网络架构虽然使得虚机网络能够灵活创建,但是带来的问题也是明显的。共享的L2广播域带来的BUM(Broadcast·,Unknown Unicast,Multicast)风暴随着网络规模的增加而明显增加,最终将影响正常的网络流量。
传统三层网络架构已经存在几十年,并且现在有些数据中心中仍然使用这种架构。这种架构提出的最初原因是什么?一方面是因为早期L3路由设备比L2桥接设备贵得多。即使是现在,核心交换机也比汇聚接入层设备贵不少。采用这种架构,使用一组核心交换机可以连接多个汇聚层POD,例如上面的图中,一对核心交换机连接了多个汇聚层POD。另一方面,早期的数据中心,大部分流量是南北向流量。例如,一个服务器上部署了WEB应用,供数据中心之外的客户端使用。使用这种架构可以在核心交换机统一控制数据的流入流出,添加负载均衡器,为数据流量做负载均衡等。
技术发展对网络架构的影响
数据中心是为了数据服务。随着技术的发展,数据的内容和形式也发生了变化。
- 虚拟化的流行。传统的数据中心中,服务器的利用率并不高,采用三层网络架构配合一定的超占比(oversubscription),能够有效的共享利用核心交换机和一些其他网络设备的性能。但是虚拟化的流行使得服务器的利用率变高,一个物理服务器可以虚拟出多个虚拟机,分别运行各自的任务,走自己的网络路径。因此,高的服务器利用率要求更小的超占比。Gartner的一份报告:Forecast: x86 Server Virtualization, Worldwide, 2012-2018, 2014 Update指出,在2018年,82%的服务器将是虚拟服务器。虚拟化对数据中心网络架构的影响是巨大的。
- 软件架构的解耦。传统的软件架构,采用专用模式进行部署,软件系统通常跑在一个物理服务器,与其他的系统做物理隔离。但是,模块化,分层的软件架构设计已经成为了现在的主流。一个系统的多个组件通常分布在多个虚机/容器中。最典型的就是三层WEB应用,包含了Client/Application/DB。一次请求,不再是由一个虚机/物理机完成,而是由多个服务器协同完成。这对网络的影响是,东西向流量变多了。
- 新的应用的兴起。传统数据中心是为.com应用设计的,这些流量大多是客户端和服务器之间的通信。而分布式计算,大数据渐渐兴起,这些应用会在数据中心的服务器之间产生大量的流量。例如Hadoop,将数据分布在数据中心中成百上千个服务器中,进行并行计算。据说Facebook的一个Hadoop集群有着超过100 petabytes的数据。可见对于某些应用,数据中心的东西向流量是巨大的。
- 软件定义数据中心(SDDC,Software Defined Data Center)的提出。SDDC提出软件定义的数据中心,这要求数据中心的计算存储网络都是可以软件定义的。对应于网络,就是SDN。传统的三层网络架构在设计之初并没有考虑SDN。