前言
控制面与数据面是个网络方面的概念,但控制面与数据面分离的思想是非常有创造力并值得加以利用的。
缘起
云计算是个伟大的创造,它使得普通人能够透过网络享受到强大的计算能力,而且,这种计算能力是按需分配的,安全的,可靠的,灵活的。它重塑了社会的经济模式,它使整个社会的效能得到极大的提高。云计算已经成为了现代社会经济的基础设施,我们每个人,或多或少,都在享受着这个基础设施给我们带来的便利。
云计算通过将传统的IT资源池化,通过网络,以虚拟机的形式向各种各样的用户提供差异化的服务。计算的本质是将输入的信息进行处理得到特定的输出。信息从本质上说就是一堆有组织的结构化数据。网络的本质就是让这些数据从一个节点流向另外一个节点以进行处理、存储或者展示。一个数据包,从世界的这一端到世界的那一端,经过许许多多的网卡、集线器、网桥、交换机、路由器等。这些部署在世界上的网络设备将整个世界串成了一张巨网,也让每个数据包面对一个系列复杂的选择题。将每个数据包安全、高效的传递到目的地,让整个网络公平、高效、充分的运转是个尤其复杂的问题。
将这么一个问题简化,回归本质,就是两个问题:第一就是告诉数据包如何移动;第二就是无差错的移动数据包。就像我们要搬家,我们的任务就是告诉搬家公司我需要将什么东西走什么路径搬运到什么地方,剩下的就是搬家公司按照我们的信息进行搬运。所以网络上的每个数据转发节点,包含两方面的东西:第一就是决定数据搬运的方法和策略;第二就是进行数据转发。对应到我们的主题,这个数据搬运的方法和策略就是控制面,而数据转发就是数据面。
最初,网络设备的设计比较单纯,仅仅为实现尽量公平的、快速的数据转发,具备非常有限的配置能力,或者完全不具备可编程的配置能力。这在云计算时代以前是没问题的,一切都运行得很好,多花点人力进行网络设备的维护没太多人在意。可是到了云计算时代,这样的网络设备就无法满足要求了。云计算时代网络的负载更趋多样化,点播,直播,购物节,网课,电话会议,视频电话… 加上物联网时代的到来,万事万物都连通到网络上,产生大量的数据。这些各式各样的网络负载对网络QoS的要求是不一样的,所以要求网络基本高度的弹性、灵活性、必要时能提供必要的可靠性和安全性。就像城市道路的发展一样,最开始城市人口不多,城市规模也小,一条窄窄的车道上面混合着私家车、公交车、摩托车、自行车甚至行人都没有多大问题。随着城市的发展,尤其是发展到像北上广深这种拥有两三千万人口的一线城市,原理的道路系统远远无法满足城市交通出行的要求。所以除了新建高架桥、立交桥、地铁等立体化交通基础设施,还需要升级交通指挥中心、提供潮汐车道、安装智慧摄像头,实现智慧路口、智慧交通等。在不同时段,比如上下班高峰期或者重要领导人访问或者重大事件发生的时候,能够快速的实施交通管制,进行拥塞管理等等。云计算时代的网络也一样,网络设备需要能够满足监控,安全,伸缩、可控的要求。
所以,软件定义的网络(SDN)是云计算发展到一定阶段的必然产物。它使得整个网络能够根据应用层特定负载、特定场景的需求进行配置或者说控制。在这么一个网络框架下,网络设备除了需要具备数据层面的功能,还需要具有控制层面的能力。而且这两种能力在实现上是分离的,在逻辑上是相关的,它们之间是一种松耦合关系。控制的能力独立于数据层之外,可以让网络有更好的兼容性,也可以有更好的可扩展性。
新架构往上提供统一(集中)的控制,往下要求网络设备能够被编程,实现管理控制接口。
这样,新架构通过抽象的接口解决传统网络架构里网络设备的多样性的问题。通过集中的控制解决传统网络架构无法自动化和动态调整的问题。
控制面与数据面分离的个人解读
抽象出控制面,并实现控制面与数据面的分离具有积极的意义。深刻地理解控制面与数据面分离的思想有助于我们更好的运用它们。
控制面是带外的、宏观的。
原有的基于TCP/IP协议都带有路由,流量管理的功能。这种路由、流量管理功能是协议内的带内的控制,也是微观的。而新的网络架构里面的控制面是独立于原理这些协议的,是宏观的。
控制面与数据面分离的实施
- 层间解耦:从系统的、全局的角度明确控制的要求,抽象出通用的一致的控制接口是实施控制面和数据面分离的关键。
- 通道解耦:从网络角度看,控制面需要预留一定的单独的带宽,可以使得网络管理员在病毒和攻击环境下依然提供正常的网络设备管理。
控制面与数据面分离不仅仅局限于网络层面
控制面与数据面分离的思想在很多地方都可以看到。在系统层面的策略和机制分离,虚拟化领域的中介透传(mediated pass-through)本质上都是控制面与数据面思想的一种体现。
控制面与数据面分离不仅仅局限于网络层面,数据包始于一个系统的应用层,经过网络,终于另外一个系统的应用层,要经历的不仅仅是网络,也要经过系统的软件栈(协议栈)。
系统层面的控制面和数据面分离就像一个公司内部建立了一个从执行人员到董事长的直通路径,能够极大地提高特定问题的处理和沟通效率。
系统层面的控制面和数据面分离能够有效地较少系统延时和开销,提升系统效率。
控制面与数据面分离的意义
更好地服务于网络QoS的动态调整,提升整体网络效率,使网络更智能。
控制面与数据面分离的应用
网络方面的应用
软件定义的网络(SDN)
- 底层网络设备通过解耦实现简单化
- 网络的管理通过集中控制器实现了全局化
- 网络的运维通过SDN南向接口与协议实现的自动化
- 网络的应用通过SDN北向接口与协议实现了更加弹性的人性化。
数据平面开发套件(DPDK,Data Plane Development Kit)
DPDK 重载了网卡驱动,将数据包的控制平面和数据平面分离,驱动在收到数据包后不再硬中断通知 CPU,而是让数据包通过内核旁路的协议栈绕过了 Linux 内核协议栈,并通过零拷贝技术存入内存,这时应用层的程序就可以通过 DPDK 提供的接口读取数据包。
虚拟化方面的应用
virtio
virtio作为一种通用的虚拟IO设备驱动模型,主要定义了两方面的标准模型和接口:控制面的设备配置和初始化,数据面的数据传输。
文章来源:https://www.toymoban.com/news/detail-805779.html
中介传递(mediated pass-through)
在虚拟化领域,GPU的虚拟化有多种方式,比如如图所示的GVT-s,GVT-d和GVT-g. 其中GVT-g实现了一种叫中介传递的虚拟化方法。通过mdev设备,让访问寄存器、配置这种低带宽配置面操作走trap-and-emulation的路径,而让帧缓存提交这种高带宽的数据面操作直接以DMA直通方式进行,既实现了GPU的高效访问又实现了GPU的共享。使得GPU的全虚拟化在效率和共享之间取得了一个非常好的平衡。
文章来源地址https://www.toymoban.com/news/detail-805779.html
参考链接
- SDN网络数据平面与控制平面
- 数通-交换机的数据平面、控制平面、管理平面
- 网络通信中的“控制面”
- The Control Plane, Data Plane and Forwarding Plane in Networks
- CEF (Cisco Express Forwarding)
- Load Balancing Mechanisms in the Software Defined Networks: A Systematic and Comprehensive Review of the Literature
- 网络虚拟化——virtio
- DPDK — 数据平面开发技术
- IOMMU(七)-vfio and mdev
- OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU
- virtio+ovs转发原理和性能分析
- 深入理解编程艺术之策略与机制相分离
到了这里,关于控制面与数据面分离的思想及其应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!