软件定义网络
为了理解软件定义的网络,我们需要了解网络中涉及的各个层面。
数据平面:
所有涉及最终用户发送的数据包的活动以及由此产生的活动都属于这个平面。这包括:
- 数据包转发
- 数据的分割和重组
- 复制数据包以进行多播
控制平面:
执行数据平面活动但不涉及最终用户数据包的所有活动都属于该平面。换句话说,这是网络的大脑。控制平面的活动包括:
- 制作路由表
- 设置数据包处理策略
在传统网络中,每台交换机都有自己的数据平面和控制平面。各种交换机的控制平面交换拓扑信息并因此构建转发表,该转发表决定传入的数据包必须通过数据平面转发到哪里。
软件定义网络 (SDN) 是一种方法,通过它我们将控制平面从交换机上移开,并将其分配给一个称为 SDN 控制器的集中单元。因此,网络管理员可以通过集中式控制台调整流量,而无需接触各个交换机。数据平面仍然驻留在交换机中,当数据包进入交换机时,其转发活动是根据控制器预先分配的流表条目决定的。流表由匹配字段(如输入端口号和数据包头)和指令组成。数据包首先与流表条目的匹配字段匹配。
然后执行相应流条目的指令。指令可以是通过一个或多个端口转发数据包、丢弃数据包或向数据包添加标头。如果数据包在流表中没有找到对应的匹配项,则交换机会查询向交换机发送新流条目的控制器。交换机根据该流表项转发或丢弃数据包。
典型的 SDN 架构由三层组成。
- 应用层:
它包含典型的网络应用程序,如入侵检测、防火墙和负载平衡 - 控制层:
它由充当网络大脑的SDN控制器组成。它还允许对在其之上编写的应用程序进行硬件抽象。 - 基础设施层:
这包括形成数据平面并执行数据包的实际移动的物理交换机。
这些层通过一组称为北向 API(在应用程序和控制层之间)和南向 API(在控制和基础设施层之间)的接口进行通信。
SDN架构:
SDN的优势:
- 网络是可编程的,因此可以通过控制器而不是单个交换机轻松修改。
- 交换机硬件变得更便宜,因为每个交换机只需要一个数据平面。
- 硬件是抽象的,因此可以在独立于交换机供应商的控制器之上编写应用程序。
- 提供更好的安全性,因为控制器可以监控流量并部署安全策略。例如,如果控制器检测到网络流量中的可疑活动,它可以重新路由或丢弃数据包。
SDN的缺点:
网络的中心依赖意味着单点故障,即如果控制器损坏,整个网络都会受到影响。