⚠ 转载请注明出处:作者:ZobinHuang,更新日期:Mar.25 2021
本作品由 ZobinHuang 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,在进行使用或分享前请查看权限要求。若发现侵权行为,会采取法律手段维护作者正当合法权益,谢谢配合。
1. 传统网络架构
在传统(远古)的数据中心设计中,我们会把支撑我们业务的各个功能放到几台机器上去做,如上图所示,是一个为了支持简单的Web服务所搭建的数据中心,此时支持这些机器之间通信的就是一个100%物理网络,我们在本文里称之为 传统网络。但我们在 虚拟化的动机、基本原理和种类 一文中所解释的那样,这是一种极其低效的解决方案,所以必须有一种解决方案,我们也都知道了是虚拟化技术,我们在这里不在多做赘述,只是为了把要解决的问题说清楚。为了支持服务器虚拟化技术,我们也就自然的需要相应的 VM 间网络连接支持,也就是我们下面要阐述的网络虚拟化所构建的 虚拟网络。
2. 网络虚拟化
当我们上 VM 之后,我们都知道在服务器硬件之上会有一个叫做 Hypervisor 的软件(也可能在操作系统之上)。最简单的办法就是我们将支持 VM 间网络通信的软件做在 Hypervisor 上,这也是目前解决方案所采用的思路。如上左图所示,我们在 Hypervisor 里抽象出了 vSwitch 的软件用来实现物理交换机所实现的交换功能,在 VM 操作系统里抽象出了 vNIC 用来实现物理网卡所实现的收发功能。 vNIC 与 vSwitch,vSwitch 之间,vSwitch 与真实 NIC 之间的连接都应该可以由虚拟机管理方来决定。通过这种方式,VM 之间就可以像真实的物理机一样构建网络连接,只不过是虚拟的,因此本文称之为 虚拟网络。
值得注意的是,由于 VM 有可能可以分布在多台物理机上,所以我们所构建的 vSwitch 应该是一种分布式的软件,从而对上层的 VM 屏蔽掉底层实际离散分布的物理机,如上右图所示。
总结下来,网络虚拟化主要解决的是虚拟机构成的网络通信问题,完成的是各种网络设备的虚拟化,如网卡、交换设备、路由设备等。