转自 SDNLAB https://mp.weixin.qq.com/s/8_Gbsq_ke16_Whxo3WsSAQ

SDN (软件定义网络)对大家来说应该不是一个陌生的概念,SDN是一种新型的网络架构,其设计理念是将网络的控制平面与数据转发平面分离,并实现可编程化控制。

十多年前,美国斯坦福大学的Nick Mckeown教授团队在研究中意识到传统网络的问题,提出了SDN概念,其初始动机就是希望打破传统网络设备软硬件一体化的僵化局面,让网络设备重演计算机软硬件分离的开放之路,从而激发网络产业的创新活力。如今,许多公司都推出了SDN 产品和解决方案。然而,在短时间内想要掌握技术细节并非易事,因为SDN不仅是技术上突破性的变革,也是对网络系统认知和方式上的变革。

下面的文章暂不对SDN进行过多描述,只通过一些相关的“关键词”来反映网络行业的新趋势。

抽 象

我们先暂时抛开概念,可以想象一辆汽车。我们都知道汽车的系统有多复杂:制动系统、电力系统、气缸、压缩、排气、润滑、冷却……然而,驾驶员并不需要知道详细的结构,只需要了解变速杆、刹车踏板、油门、方向盘、控制屏等几个工具的使用方法,就可以轻松驾驶汽车。因为汽车已经将一切都“抽象”了出来,底层所有复杂的组件都被抽象成了上层的简单工具。简而言之,汽车就可以认为是一个抽象的实体!

再举一个简单的例子。假设 A 公司要求 CEO 的电脑必须具有最佳的 Internet 访问权限。为了满足这个要求,工程师必须检查CEO的电脑连接到哪个设备,分配了多少IP,经过哪些路由器,是否有防火墙策略……换句话说,工程师必须非常清楚网络结构和模型才能执行这个简单的要求。

如果司机想让汽车转弯,只需要转动方向盘,而工程师想要“驾驶”网络,就必须彻底了解“网络基础设施”才能工作。在复杂的网络和IT系统基础设施中,没有“方向盘”进行抽象操作,这对信息技术基础设施运营来说是一个挑战。

Underlay/Overlay

相信这个词对于网络工程师来说应该非常熟悉。Underlay是一个物理网络,由交换机和路由器等设备组成,借助以太网协议、路由协议和VLAN协议等驱动。Overlay是一个虚拟网络,使用网络虚拟化在物理基础设施之上建立连接的逻辑网络。常见的Overlay协议有VXLAN、NVGRE、GRE、OTV、OMP、mVPN……

Overlay实现了控制平面与转发平面的分离,这也是SDN的核心理念。大多数 SDN 解决方案需要底层网络基础设施作为Underlay,然后再虚拟出Overlay。这是为了有助于“抽象”网络系统,使其易于管理操作、易于扩展、易于执行网络策略。以前的Overlay协议旨在解决网络中某个部分的问题,尤其是 VPN,后来的Overlay协议旨在为园区网络、WAN 或数据中心创建一个 Fabric。

Fabric

了解 Fabric 对于理解如何构建 SDN有很大的帮助。

Fabric 有许多不同的含义:

首先,Fabric 指网络系统作为一个单一的实体,不区分内部是路由器、交换机、防火墙,还是策略、路由、安全等。大致可以将Fabric网络理解成一个核心交换机集群,为计算基础设施、物联网基础设施、终端设备和用户提供连接。

Fabric 的第二个含义是Overlay网络。例如,SD-WAN 网络由多个路由器通过互联网将VPN连接在一起,从而创建了一个Fabric网络。

第三,Fabric还指一个具有强大处理能力和拓扑同步的网络系统。在三层网络架构(Core/Distribution/Access)中,添加一个网络节点需要考虑备份、上层设备容量和上行带宽。对于Fabric,添加网络节点有助于提高整个系统的处理能力和带宽。数据中心的Leaf/Spine模型就是一个例子。

可见性

可见性对于在 SDN 中执行策略非常有帮助。

假设A 公司的用户遇到连接问题,网络连接很慢。IT部门在检查和测试连接时,连接却显示正常,所以他们不知道问题出在哪儿。B 公司也有类似的情况。经检查,IT部门确定是网络拥塞导致连接受阻,检查发现占用带宽导致拥塞的是X应用程序。此外,该应用程序是从计算机1连接到服务器2的,由Y用户使用…因此,我们可以说,A 公司网络系统可见性低,B公司的网络系统具有很高的可见性。

可见性可以理解成 4W 1H——谁、在做什么、在哪里、何时以及怎么做。SDN 网络具有非常高的可见性,可以通过定义新技术、新协议、新属性来实现简单、快速和安全的策略。

网络可编程性

网络可编程性可以理解成网络系统像软件一样具有互操作性。

举个例子:A公司有一个非常大的网络系统,但已经运行了很长时间,IT部门需要对系统运行过程中出现的冗余配置进行审查和删除。因此,要求网络工程师执行以下操作:“关闭交换机上超过一个月没有工作的端口”。如果网络系统有数百个交换机,这项工作将花费大量时间并且很容易出错。

网络工程师将执行的工作可能包括以下步骤:

1)统计系统中所有交换机的信息。

2)登录每个交换机,显示每个端口的状态进行检查。

3)如果一个端口关闭,并且超过 1 个月没有相关日志,将执行以下操作:

  • 关闭端口
  • 记下端口说明

4)对交换机上的所有端口持续执行此操作。

用编程语言执行上述操作可表示为:

for switch in my_network:

for interface in switch:

if interface.is_down() and interface.last_change() > thirty_days:

interface.shutdown()

interface.set_description(“Interface disabled per Policy”)

只需一个简短的命令就可以解决耗时的工作,更重要的是准确度高,没有人为错误。但是,要完成上述(以及许多其他自动化工作)操作需要改变网络架构,创建一个可互操作、可编程的网络系统。

建立SDN网络的目标之一就是网络可编程性。目前网络正在朝着具有强大处理能力,并且易于管理和扩展的方向发展,SDN在控制器上进行集中管理和决策,以一种新的方式重新构建网络,以满足网络可编程性,实现网络自动化。