如果你过去几年没有生活在岩石之下,那么你的脑袋可能会因为软件定义的网络过载而爆炸。基于斯坦福大学的学术研究,SDN最初被称为“科学项目”,而事实也确实如此。然而,迅速增长的市场兴趣迅速推动了它从理论到实践和时代SDN创业公司开始了。
在其纯粹形式SDN中,主张控制和数据平面的解耦,传统上驻留在诸如交换机和路由器的网络设备内。一旦实现了这样的解耦,从网络设备中移除了控制平面函数并放置在x86服务器平台上,用作控制器。
OpenFlow协议最常用于控制器和网络设备之间的通信,这当然意味着网络设备支持OpenFlow api(由OpenFlow代理提供)来接受通过IP网络的外部控制平面连接。
[还:12个提示SDN IT买家]
来自各个设备的控制平面函数的提取可能消除了运行分布式控制平面协议的复杂性,例如OSPF,BGP或生成树,从而潜在地简化了整体网络设置。SDN控制器代替分布式控制平面协议,以集中方式计算网络拓扑,并将转发表条目直接进入网络设备的转发ASIC。
集成和解耦控制和数据平面
虽然这种方法提供了强大的新功能,但仔细研究一下,就会发现它并非没有缺陷。为了执行其控制平面功能,SDN控制器需要知道网络中存在哪些流或哪些端点。这可以通过三种方式实现:
*积极静止。管理员可以主动预先配置控制器上的流。此方法意味着了解所有网络“对话”,这是松散地让人热衷于与定义传统网络模型中的静态路由相关的管理负担。管理员还可以选择预先配置粗流条目,这将减少网络设备的硬件表消耗,但同时也会限制每流转发出状态粒度。
主动静态
*反应。SDN控制器可以自动(反应式)发现流,但这需要每个新流的第一个包转发给控制器进行检查。如果控制器和网络设备之间的连接中断,这可能会产生性能瓶颈和单点故障。在这种情况下,网络设备很可能使用最后一个已知状态继续转发数据,但是,在SDN控制器的连接完全恢复之前,不会创建新的条目。作为一种解决方案,网络设备还允许管理员通过CLI在设备上本地编程转发表项。
无功
*主动动态。可以在网络设备和SDN控制器之间利用控制平面协议来交换端点可达性信息。这主要表现为MAC或IP地址等标识符。这种情况与前两种情况不同,因为SDN控制器知道单个端点,而不是发生在网络上的流“对话”。一旦终端被识别和发现,SDN控制器计算路径和程序流进入中间网络设备的转发表。
Proactive-dynamic
下一个问题是我们如何将各个网络设备的连接扩展到利用我们所描述的SDN方法的整个网络。分布式控制平面利用传统网络模型中的允许网络扩展到数十万个转发条目,并且ASIC创新使得这些条目的高效编程到转发硬件中。SDN控制器上的集中拓扑和可达性计算可以具有显着的规模含义。
让我们看看三种可能的方法。首先也是最明显的是,让一个SDN控制器计算端点A和端点B之间的路径,然后在逐跳的基础上将转发条目编程到这些端点之间的所有中间设备。这就是SDN控制器能够看到整个端到端拓扑的最有利之处。
端到端网络编程
第二种情况是SDN控制器仅在附加端点A和B的网络边缘处进行转发条目。由于没有与端点A和B有关的转发条目被编程到网络核心中,因此网络边缘执行封装以携带流量。在这种情况下,网络核心不需要了解端点A和B,而是仅关心在连接端点A和B的网络边缘之间提供封装的流量。这种方法是最常见的网络虚拟化或网络覆盖,并且它将边缘的SDN编程与网络核心中的传统转发相结合。
网络边缘的编程
有几种封装协议可以利用覆盖,VXLAN是主要供应商中最受欢迎和最受欢迎的。它也是今天交换机唯一一个支持的。这是一个重要的区别,因为网络边缘可以是虚拟管理程序中的软件开关或物理拓扑中的边缘开关。
如果端点A是虚拟机和端点B是物理服务器,则网络覆盖隧道将在附加端点A的虚拟交换机之间进行最佳地构建,并且附加端点B的物理开关。在这种情况下,硬件支持是对比例和性能的重要考虑因素。
第三种情况是前两个的混合。SDN控制器可以在网络边缘的转发条目中编程到“将端点A和B之间的流量”推送到网络覆盖隧道中,以及网络核心中的转发条目,以允许在之间转发隧道(封装)流量网络边缘根本不利用传统的分布式控制平面网络模型。
端到端和网络边缘编程
替代方法
虽然SDN提供了一套强大的新功能,但它也需要根本性的转变,这可能对某些人来说太具破坏性了。但是还有一种替代的网络可编程方法,它不需要包含这种细粒度的方法。
当您回忆中,SDN的正式定义侧重于控制和数据平面分离。如果没有控制平面,网络设备无法自动执行智能功能,并且必须依赖于SDN控制器。
考虑这样一种情况:网络设备保留了某些控制平面功能和将其操作特性(如CPU/内存消耗、接口负载、传输错误等)传递给外部实体的能力,外部实体可能是SDN控制器。这为一种全新的网络可编程方式打开了大门。
例如,如果接口负载超过75%,可以轻松地重新路由流量,或者可以根据动态确定的CPU周期可用性(而不是管理上预先配置的计时器值)影响网络设备上的最短路径优先算法计时器。可能性几乎是无穷无尽的,对业务的影响是巨大的。
从历史上,可以通过利用像SNMP等项目从网络设备的某些数据的内容监控站来提供类似的功能,然后根据所需的操作,调用配置脚本或使用SNMP(SET)来改变网络设备’ behavior.
现代编程方法允许我们通过利用api来实现更全面的结果。这些api允许通过编程方式访问设备信息,提取设备信息进行分析,并根据结果修改设备行为。根据不同的用例,api可以影响转发行为、安全控制、服务质量特征等等。
本地控制平面的程序化方法
在不同网络设备的不同系列中制作那些API制服产生了显着的优势,因为它们可以代表一个符合的程序界面来发展。想到一个应用程序商店,开发人员可以为客户发布他们的应用程序。只要在网络设备上启用API层,它就可以与应用程序逻辑通信。
如您所见,网络可编程性有多种方法,但有一件事是:客户需求推动供应商投资编程API,以利用硬件/软件创新,实现各种环境的运营敏捷性。
KLEBANOV拥有15年的网络行业经验。在他的工作中,他会影响行业领先的数据中心平台的战略发展,为下一代面料奠定了基础。雷竞技电脑网站他可以到达klebanov@cisco.com或在Twitter上@davidklebanov。