基于SDN的网络状态测量

为了更好地管理和运行网络,非常有必要收集网络资源及其状态信息。在很多网络场景中,SDN控制器的决策都取决时延,带宽和拓扑等网络状态。在开发SDN应用的过程中,笔者总结了一些有用的网络状态测量的解决方案,可以为初学者在解决网络问题时提供一些启发。本文将主要介绍如何通过SDN控制器和OpenFlow协议来测量和收集网络中的时延、带宽以及拓扑状态等信息。


时延

时延的测试在终端会显得很容易,但是在交换机节点上测试时延就比较麻烦。在SDN中,可以通过以下步骤实现交换机之间链路的时延。

(1)控制器向交换机A下发一个Packet_out报文。报文的数据段携带了任意一个约定好的协议报文,其报文的数据段携带了控制器下发报文时的时间戳。Packet_out报文的动作指示交换机将其泛洪或者转发到某端口。

(2)交换机B收到了交换机A发送过来的数据包,无法匹配对应流表项,从而packet_in到控制器。控制器接收到这个数据包之后,和当下时间相减,得到时间差T1。其时间差约等于数据包从控制器到交换机A + 交换机A到交换机B + 交换机B到控制器的时延。

(3)同理,控制器向交换机B发送一个类似的报文。然后控制器从交换机A收到Packet_in报文,记录下时间差T2。所以T1+T2=控制器到交换机A的RTT+控制器到交换机B的RTT+交换机A到交换机B的时延RTT。

(4)控制器向交换机A和交换机B分别发送带有时间戳的Echo request。交换机收到之后即刻回复携带echo
request时间戳的echo reply消息。所以控制器可以通过Echo reply的时间戳减去Echo
reply携带的时间,从而得到对应交换机和控制器之间的RTT。通过这种方法测得控制器到交换机A,B的RTT分别为Ta,Tb。

(5)T1+T2-Ta-Tb则得到交换机A到交换机B的RTT。假设往返时间一样,则交换机A到交换机B的链路时延为(T1+T2-Ta-Tb)/2。

这种方法可以相对准确地测试到链路的实验,无法计算而忽略掉的部分时间是数据包在交换机中的处理时延。而这种简单的方法已经被申请专利了,不知道我这么写会不会有问题。

带宽

带宽数据是网络状态中的重要数据。在SDN网络中获取带宽可以通过OpenFlow协议,也可以通过第三方的测量软件获取数据,如sFlow。此处仅介绍如何通过OpenFlow协议来获取可用带宽。

一条链路的带宽由两个端口的能力决定。所以我们可以通过获取端口的流量来得到链路的流量。OpenFlow协议中可以通过统计报文来获取端口、流表、流表项、组表和meter表的统计信息。以端口的统计信息为例,控制器通过周期下发Port
statistics消息可以获得交换机端口的统计信息,其返回的统计消息格式如下:


从消息格式中可以发现可获取到收发的包数、字节数以及这个统计持续的时间。如果把两个不同时间的统计消息的字节数相减,再除以两个消息差也即统计时间差则可以得到统计流量速度。如果想得到剩余带宽则可以用端口最大带宽减去当前流量带宽,则得端口剩余带宽。同理,可以计算出对应流表项或者组表等的统计流量。基于以上计算出来的端口剩余带宽等数据,可为部署负载均衡等流量优化工程提高数据支撑。

拓扑

拓扑的发现比较容易理解。控制器通过将携带dpid+port_no信息的LLDP数据包从对应端口packet_out出去,然后LLDP数据包被对端交换机Packet_in到控制器,最后再由控制器结合Packet_in消息报头的DPID和in_port和LLDP报文中的DPID和Port_no从而得出一条链路信息。依次类推,控制器可以发现全部的链路信息,从而发现网络拓扑。

以上的解决方案需要向每个端口下发packet_out,而此举会产生很多的OpenFlow消息,消耗OpenFlow channel宝贵的带宽资源。所以可以采用以下的优化结局方式。

(1)收集swicth features时记录交换机上端口号和端口mac的对应关系。

(2)弃用port_id的tlv,转而使用端口的mac作为端口的标记。

(3)下发packet_out时,actions中添加对每个端口的OFPActionSetField(eth_src=port_infor.hw_addr)动作和OFPActionOutput(port_infor.port_no)动作,从而使得仅对交换机下发一个Packet_out就可以完成对所有的端口进行LLDP发送的操作。在每个端口发送数据之前,都需要对数据的src_mac地址置位成端口的mac地址。而控制器收到LLDP的packet_in时,通过mac和port_id的对应关系找出链路。通过这种方法可以将packet_out的数目大大降低,从每个端口发送端口数目N个降低至到1个。

以上的解决方案仅能发现OpenFlow的网络,如果OpenFlow网络中间存在传统网络设备形成的子网络,则以上的解决方案将会将与传统网络连接的端口误认为是接入端口。

这个问题可以通过LLDP和发送广播包的方式解决。首先通过LLDP发现OpenFlow的拓扑。然后再往“边缘端口”(与传统网络相连的端口此时也被认为是边缘端口)发送广播包,如果广播包从某一个交换机端口回来,则说明这个端口之外未知的地方还有一些交换设备,则证明这个端口不是主机的接入端口。但是传统设备如果不通过其他形式去发现还是无法发现具体的网络拓扑的信息。

总结

本文总结了在SDN网络中如何发现和测量网络的一些基础的信息,比如链路的时延和带宽,网络的拓扑等等。发现和测量这些基础的网络状态可以用于其他的网络决策,从而使得网络运行更加合理,进而提高资源利用率。以上部分内容以实现并公布,比如带宽测量模块可查看《SDN网络感知服务与最短路径应用》。

本文转自d1net(转载)

时间: 2024-08-30 12:10:54

基于SDN的网络状态测量的相关文章

《新一代SDN——VMware NSX 网络原理与实践》——第1章 SDN与网络虚拟化的起源与现状 1.1SDN的起源和发展历程

第1章 SDN与网络虚拟化的起源与现状 SDN是一个内容丰富却又定义模糊的名词.说它内容丰富,是因为在当今云计算大行其道的情况下,SDN已成为实现云计算的一种重要方法,其技术已席卷了企业私有云和公有云服务提供商的数据中心方方面面.说它定义模糊,是因为SDN还不像其他计算机或网络技术被一些组织或企业进行了标准化定义,当人们谈到SDN时,可能还在讨论"SDN究竟是什么"这个问题. 网络虚拟化则是云计算和SDN发展到一定阶段的产物.服务器虚拟化技术的飞速发展间接催生了云计算的兴起.而在云计算

为什么SDN使网络更激动人心?

在数据中心网络方面,一场变革已经 悄然发生.多年来,网络技术一直在发生变化,但这些变化幅度不大,且具有可预期性.但就在去年,由于SDN"软件定义网络"的出现,所有一切都发生了改变.这项新技术的核心内容是OpenFlow – 这是一种协议,能够让中央处理器和操作系统上的软件对整个网络和流量模式进行控制.为什么这是一种显着的改变?当今的流量模式主要以智能硬连线接入至交换机来管理和指导.供应商已经内置到交换机的特性和功能限定了它功能的限制.因此,如果需要新的功能,就必须要购买新的交换机.什么

HPE:SKT 基于NFV/SDN的网络重构顶层设计-ATSCALE 战略解读

SKT"下一代平台"战略让创新改变世界 电信业面临技术变革,不断变化的消费需求和日益增加的数字融合等趋势.SKT的企业愿景是利用网络基础设施和尖端技术,成为激发个人和企业用户无限新可能的合作伙伴 – "Partner for New Possibilities". 为实现这一愿景,需要克服电信产业的局限性.为此,SKT计划从一家无线通信服务商转型为下一代平台服务提供商(Next-generation platform service provider). 和其他互联

【SDN控制器分析之二】ONOS网络状态表述

概述 控制平面所维护的关键信息是网络状态.控制平面必须聚合此信息,并使其对应用程序可用.此外,为了保持可扩展性和组件重用,应用程序应该免受协议细节的影响,即使网络状态信息是通过特定协议的方式获得的. ONOS协议不可知的拓扑结构是采用两个互补机制:网络发现和配置来实现的.前者利用网络协议让ONOS识别网络元素的位置和/或性能,在功能使能的情况下会主动开展相关的采集工作.后者允许应用程序和操作人员配置预期的拓扑,或者为网络组件提供提示,这些组件在网络中不能被典型的方法发现. 下一节首先说明ONOS

诺基亚助力运营商推出基于SDN的大规模商用网络服务

运营商SDN项目正在由实验室测试走向商业部署,新解决方案使得在SDN网络的需求及流量模式难以预测的情况下,能够确保网络安全可靠 全新的解决方案能够为驱动IP及光网络的自动控制提供保障(KPI及分析),从而确保交付优质网络并实现卓越服务性能 解决方案采用了诺基亚多样化的IP及光网络服务保障应用,并能够将这些应用延伸至多厂商SDN网络 诺基亚近日宣布,已经扩展其运营商SDN解决方案,为网络服务平台(NSP)增加保障能力.尽管云应用的动态消费模式使需求及流量模式变得更加难以预测,不过通过结合NSP的自

基于 SDN 的虚拟私有云研究

本文中主要介绍了虚拟私有云系统的功能特点;针对目前云计算资源池网络隔离较差和配置比较复杂的问题,分析云计算资源池对于虚拟私有云的需求.同时,还对基于SDN技术实现虚拟私有云的两种主要方式进行分析,对每种方式的技术原理及架构进行描述.对两种方式的优缺点进行比较. 引言 云计算的大规模运营给传统网络架构和应用部署带来挑战[1-2],新一代网络支撑这种巨型的计算服务,不论是技术革新还是架构变化,都需要服务于云计算的核心要求,即动态.弹性.灵活,并实现网络部署的简捷化.具体来说传统网络面临的挑战主要4点

基于SDN+Overlay的虚拟私有云(VPC)实现

虚拟私有云(VPC, Virtua Private Coud),是基于虚拟化技术实现的供企业自己使用私有云平台,它将网络.安全.存储.计算等一系列虚拟资源进行组合,供企业用户按需使用. 随着数据中心的集中化,越来越多的大型企业倾向于使用虚拟私有云部署企业内部IT系统. 以SDN.Overay等技术为支撑VPC方案,具备云化管理和运维.产品形态软件化.网络功能虚拟化.网络控制集中化等技术特征,能实现云端管理运维.高度开放.海量租户.网络灵活自定义.资源随需而动.虚机迁移自跟随等多种业务需求.VPC

超级 Ping 监测工具——为您的网络状态保驾护航

关于 Ping Ping 是一个网络命令,主要是用于确定本地主机是否能与另一台主机交换(发送与接收)数据.根据返回的信息,就可以推断 TCP/IP 参数是否设置得正确以及运行是否正常.正常情况下,Ping 将返回若干个参数,丢失率为 0,当网络状态不佳或网络中断的情况下,Ping 操作将无法正常返回 TTL 参数(显示请求超时或其他 bug ). 通过 Windows 平台的 ms-dos 可以简单执行 Ping 操作,然而这种操作只能简单测试网络是否正常联通,大体上排除网络访问层.网卡.MOD

Flex与.NET互操作(一):基于Socket的网络连接

Flash/Flex也支持基于Socket的网络连接 ,服务器端可以是C++,VB,C#,Java等任一语言开发.监听一个网络端口便可以接收到Flash/Flex 开发的客户端的连接. ActionScript 3.0提供了通过Socket连接的方式与服务器端通信.这点是超越传统B/S结构的重要特征.这样使 得网络通信可以即时连接,避免了HTTP协议无状态连接的弊病.ActionScript 3.0使用XMLSocket类进行连接.需要注意的是使用XMLSocket类 进行Socket连接时,不