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在控制器上进行集中管理和决策,以一种新的方式重新构建网络,以满足网络可编程性,实现网络自动化。
本文希望通过一些关键词的解释,让读者能够大致了解网络行业的趋势。那什么是SDN?为什么是SDN?我们下一期见!
*本文系SDNLAB编译自HPT网站
【活动专栏】
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。
【投稿】
欢迎智能网卡/DPU、SDN、SD-WAN、确定性网络、TSN、5G、网络切片等网络方向的观点类、新闻类、技术类稿件。
联系人:kk__wu(微信号)
投稿邮箱:pub@sdnlab.com
详情请参考:2022 SDNLAB原创文章奖励计划