sdn - 为什么我们在使用“可编程数据平面”时需要控制器?
问题描述
我知道可编程数据平面使我们能够为新协议和策略定制和修改硬件。
例如,我们可以使用 P4 来实现一个设备,该设备在其数据路径中充当集线器。
但是当我们能够在数据平面中使用 P4(或其他)应用我们的逻辑时,为什么我们不再需要控制器和控制平面?
我的意思是我们使用控制器将开关行为更改为第 2 层、第 3 层、防火墙等。现在使用可编程数据平面,我们能够使用 P4 等语言完成所有这些操作。他们不是互相冲突吗?
解决方案
SDN 提供了一个集中控制平面,使服务提供商能够对网络数据平面进行编程和控制,OpenFlow 被用作控制器和交换机之间定义的通信协议。因此,SDN 解耦了数据平面、控制平面,并基于网络数据路径的行为是固定的假设进行演进。
P4 带来了更大的灵活性,因此数据路径的行为可以通过软件来表达,该软件会告诉交换机它应该处理数据包的方式。P4 有助于指定数据转发行为,然后填充表格,并自动生成填充表格所需的 API,因此 P4 优于 OpenFlow。P4 使 SDN 能够独立于协议,灵活地以编程方式匹配受 OpenFlow 限制的任意数据包字段。
现有许多交换机遵循使用 OpenFlow 的控制路径和数据路径分离的 SDN 架构。因此,OpenFlow 可能不会因为 P4 而立即过时,因为已经部署了许多固定功能交换机 ASIC,并且它们正在使用 OpenFlow 进行通信。Openflow 仍然适用于混合了固定功能交换机和可编程交换机的网络。在这样的网络中,Openfow 和 P4 应该一起运行。
推荐阅读
- spring - 无法下载 Dynamodb 本地依赖项
- javascript - minecraft-server-util 如何在线输出名称播放器
- laravel - 当我在我的 laravel 应用程序中使用数组驱动程序时,如何清除缓存的查询?
- javascript - Java 中的 Qualtrics
- javascript - 悬停时的Vue 2动画问题
- java - 带有 Hilt、RxJava 3、改造、实时数据和视图绑定的 MVVM
- bash - 有没有办法将 jq 输出到 bash 脚本的多个变量中?
- java - SprintBoot RestTemplate 出现 403 禁止错误,但 Postman 工作正常
- c++ - C++ 如何将指针数据(及其所有系统)复制到另一个相同类型的指针?
- email - 如何编辑 WooCommerce 电子邮件中的其他内容?