一种SDN环境的SNMP Trap报文聚合方法

2023-09-06 07:30张子尧吴黎兵夏振厂张壮壮
小型微型计算机系统 2023年9期
关键词:主干网三元组网络管理

张子尧,吴黎兵,夏振厂,2,张壮壮

1(武汉大学 国家网络安全学院 空天信息安全与可信计算教育部重点实验室,武汉 430072)

2(武汉大学 计算机学院,武汉 430072)

1 引 言

近年来,随着5G通信和物联网技术的快速发展,大量多源异构设备的接入使得网络变得更加复杂和庞大,这对异构网络设备管理提出了重大挑战.然而,传统的分布式网络架构导致部署、管理混乱而复杂,从而造成网络中路由表的更新缓慢,路由收敛时间过长.除此之外,当部署新的网络业务时,传统网络暴露出数据转发效率低、网络地址短缺等问题[1-3].针对传统网络架构中存在的问题,一种新的网络架构被提出,即软件定义网络(Software Defined Networking,SDN)[4],它将控制层与转发层分离,所有的控制逻辑由控制器集中统一管理,控制器与数据转发硬件使用一个开放和标准的接口OpenFlow[5]进行交互[6].SDN技术作为5G、物联网的基础架构[7-9],其提供的集中管理、高效转发以及可编程性,可以很好弥补传统网络的缺点,适用于大规模异构设备间通信与管理[10].

在网络通信中,为降低大规模设备通信的资源开销,对数据内容或多个数据包进行聚合是一种常用的性能优化手段.例如,在传感器网络、智能电网等物联网应用场景下,接入网络的设备数以万计,网络中传递的是单个包长较短的设备状态信息,因此聚合就可以很好的提高网络有效数据载荷,降低数据传输的额外开销[11,12].

在网络管理方面,简单网络管理协议(Simple Network Management Protocol,SNMP)以其应用简单、容易实现、易于部署等优点成为主流的网络管理框架,在实际网络管理应用中得到了广泛的应用.然而,在管理大量设备的网络环境中,设备的频繁接入、离线及异常会导致自治域内SNMP的Trap报文流量显著增加[13].网络管理的原则是尽可能设计轻型的通信协议从而去降低网络额外开销.网络中数以万计的被管对象的Trap报文数据需要有分层融合机制以有效控制流量开销,提高网络有效传输的吞吐率,减少对用户的影响.SDN运作机制为Trap报文聚合提供了支持,通过报文聚合可以有效地降低了网络中管理报文数据的冗余,提高管理数据采集的效率,特别是在跨多域的网络管理中,能够有效降低了主干网络中的Trap报文的流量开销.

本文的主要工作和贡献如下:

1)针对使用SNMP管理大量网络设备导致的主干网中Trap流量开销较大的问题,本文设计了一种简单高效的Trap报文聚合方法.该方法可以有效降低Trap报文在主干网络中的流量开销.

2)针对传统网络结构下进行网络管理面临灵活性差、不利于统一管理控制的问题,本文提出了一种基于SDN的网络管理架构.该架构与Trap报文聚合算法相结合,可以提高应用SNMP进行跨多域网络管理的效率,优化网络管理带来的额外开销.

实验结果表明,与传统网络管理中被管网元直接将Trap报文发送给管理站的方法相比,基于SDN的Trap报文聚合方法在主干网的管理流量减少了41.328%,大幅降低了主干网中Trap流量的开销.

2 相关工作

围绕SDN和网络管理的性能提升问题,国内外学者进行了大量研究,可以归纳为2个方面:1)根据SDN特性,通过对流表及流表下发过程进行聚合方法的研究,进而提高SDN网络性能;2)根据传统网络及网络管理存在的问题,对特定应用场景有针对性地设计包聚合算法提高网络性能,降低管理造成的流量开销.

在SDN聚合方法研究方面,Luo等人[14]针对SDN流表聚合中存在流表更新延迟及TCAM受限的问题,提出了离线的快速流表聚合(FFTA)及在线的增量快速流表聚合(iFFTA)方法.Mimidis等人[15]针对SDN中TCAM容量受限可能成为网络瓶颈的问题,提出了一种基于动态聚合网络中各节点流量的方法来减少流表中的OF条目数.Tsai等人[16]针对SDN网络中TCAM瓶颈可能导致的流表溢出问题,在文献[14]的基础上提出了一种新的流聚合方法,通过采用子集变换解决流表溢出问题.Lin等人[17]聚焦于物联网应用中大量小型传感器数据传输可能导致的流量爆炸问题.利用SDN的可编程性,应用P4协议(Programming Protocol-Independent Packet Processor,P4),设计和开发了用于商用的聚合和分解方法.

在传统网络架构的网络管理研究方面,Song等人[18]基于SNMP监控系统设计出了一种基于http协议报文聚合的缓存管理算法,用于解决大规模网络的负载均衡问题.Malboubi等人[19]将路由器的TCAM分为2类,一类用于输入流的聚合,另一类用于分解重要流,并提出了iSTAMP架构对这两类流分别进行处理,根据获取到的统计信息使用优化技术来预测未来的流,从而达到对网络设备进行实时规则配置的目标.Ndikumana等人[20]针对内容中心网络(CCN)中上行链路利用率不足问题,提出了一种基于包聚合的兴趣转发方法.Jin等人[21]针对WIA-PA网络实时性能问题,提出了一种聚合调度方法,将实时理论与聚合方法结合,对原始包进行聚合,并应用调度算法提升性能.Wang等人[22]针对工业WIA-PA网络中设备能耗大及数据传输可靠性不高的问题,提出了一种基于无线信道状态的WIA-PA网络数据包聚合方案.

综上所述,为了提高网络管理的效率与性能,传统网络管理研究者与SDN研究者均提出了建设性的方法.然而,传统网络管理在网络设备规模大且类型多样的网络中,可维护性和效率较低.因此,基于传统网络的优化方法对网络管理的性能提升有限.当前在SDN场景下的网络性能提升研究主要聚焦于SDN交换机层面,通过对流表进行聚合来降低网络整体时延,提高流表切换与更新的速度,但并没有对大规模网络设备管理下,主干网性能优化及网络管理优化进行考量.针对上述问题,本文将SDN具备的可编程性及统一控制的优点与包聚合降低网络额外开销的优势相结合,提出一种Trap报文聚合方法,并设计了一种基于SDN的网络管理架构.该架构与Trap报文聚合算法相结合去降低跨域主干网中Trap流量的开销,优化主干网性能.

3 Trap报文聚合算法

3.1 Trap报文特征

SNMP定义了Agent和管理站(Manager)之间交换报文的语法和语义,它使用抽象语法标记(ASN.1)[23]来定义SNMP报文编码方式.Trap报文是SNMP的一种报文类型,由Agent发出,通知Manager被管设备发生异常.

在研究中,本文考虑在SNMPv1下进行聚合方法设计及实现.SNMP中的Trap报文格式如图1所示,它包括Type、Enterprise、Agent Address、Generic Trap Type、Specific Trap Type、Timestamp、Variable Bindings共7个字段.其中Type字段用来区分前文所介绍的不同报文类型,Variable Bindings域的键值对用来对具体的设备信息与设备情况进行说明.在Trap报文中,通过Trap内的特殊字段,如Generic Trap Type,Specific Trap Type来具体说明当前Trap报文的事件类型及其功能,Enterprise表示OID值,Generic Trap表示通用Trap事件类型,Specific Trap表示企业自定义类型.Agent Address表示Agent端的IP地址.RFC1157规定了Trap报文的事件类型与参数,如表1所示.

表1 Trap报文的事件类型Table 1 Event type of Trap message

图1 Trap报文结构Fig.1 Structure of Trap message

在Trap报文中,参数信息是由Trap内部的Variables Bindings进行说明.Trap是一种事件驱动的SNMP报文,当Agent端有定义的事件发生时,就会主动向Manager发送Trap报文.Trap报文中的Specific Trap字段为网络管理提供了更多的自定义事件,扩充了SNMP协议的功能.网络设备厂商可以依据设备的功能及参数添加自定义Trap 类型,从而提升网络管理的灵活性.

3.2 聚合报文结构设计

在网络管理中,报文聚合的主要目的是降低接入设备所产生的管理流量开销.因此,为降低管理流量开销,本文将不同Agent发出的Trap报文进行内容上的聚合.通过将多个不同的报文压缩聚合成一个结构清晰的聚合报文,再发送到SNMP Manger,从而降低主干网中用于网络管理的管理流量.为此本文根据Trap报文中的不同可区分字段,实现聚合的功能.

在3.1节已经介绍了Trap报文的字段,它们组合到一起可以唯一标识一个Trap报文所要传递的事件信息.因此,本文将这些字段进行组合形成结构化的元组,去构建聚合报文的数据部分.本文定义如下种类的结构化元组,构建过程如图2所示.

图2 Trap聚合报文构建流程Fig.2 Trap aggregation message construction process

1)当SNMP Trap报文为非自定义类型时(即Generic Trap Type不为Enterprise Specific),提取Generic Trap Type,Agent Address,Timestamp,BindingVar字段,以这些字段定义三元组(Agent Address,Generic Trap Type,(Timestamp,BindingVar)),标识原始Trap报文.

2)当Trap报文为自定义的Trap事件类型时(即Generic Trap Type为Enterprise Specific时),提取Enterprise,Agent Address,Specific Trap,Timestamp,BindingVar字段,定义三元组(Agent Address,(Enterprise,Specific Trap),(Timestamp,BindingVar)),标识原始Trap 报文.

3)将Agent Address映射为AgentID,(Enterprise,Specific Trap)/Generic Trap Type映射为EventID,(Timestamp,BindingVar)映射为EventObject,形成三种映射关系.

之后,用提取的三元组(AgentID,EventID,EventObject)构建单条聚合数据.并通过BER编码规则进行编码,然后与其他聚合数据拼接构成聚合报文的数据部分.最后,封装MAC,IP与UDP头部,形成最终的聚合报文.

进一步,提取的聚合结构需要保证Trap报文与提取的三元组(AgentID,EventID,EventObject)形成一个双射关系,以便聚合后的数据条目可以和原始Trap报文一一对应.论证本文定义的聚合算法形成的元组是带有完全有效信息时,需要证明形成的结构化元组与原始报文间在应用时可以双向的找到唯一对应,即原始报文与对应的结构化元组需是一个双射关系,即定理1.

定理1.Trap报文与结构化元组(AgentID,EventID,EventObject)是一个双射关系.

证明:满足双射关系是指本文所形成的聚合报文中的信息是独特的,也即不同原始Trap报文形成的对应三元组是唯一的.当聚合报文在SNMP Manager中进行聚合报文的分解时,不会出现混淆或重复的情况.

本文根据Generic Trap Type字段定义了两种不同含义的三元组:非自定义类型和自定义类型.自定义类型形成的三元组在EventID中具有2个不同的标识,而非自定义类型形成的三元组中相应的只有1个标识.而两种不同类型三元组的EventID标识所占用的位数是不同的,所以SNMP Manager可以很轻易的区分这两种三元组.对于相同类型的三元组来说,其来源只有两种情况,即1)由同一个SNMP Agent形成,2)由不同的SNMP Agent形成.

不同的SNMP Agent所具有的AgentID是不同的,因此可以区分.而对于SNMP Agent相同的Trap报文,SNMP Manager可以根据Timestamp来进行区分.对于特殊情况,同一台SNMP Agent因为某种原因重启,且以相同timestamp发送Trap报文,经过提取会形成两个除EventObject外,均相同的三元组.如果此时是同一设备重发的Trap报文,SNMP Manager可以丢弃旧报文而仅保留新报文,此仍然保证了三元组间的互异.综上所述,算法可以用三元组代表原始报文的有效内容,实现多个Trap报文内容的聚合.同时,聚合后形成的聚合报文可以在SNMP Manager端被还原成原始Trap对应的含义.

当应用中考虑多域的情形时,可以将不同域的ID或域名纳入结构化元组中.即将(Agent,EventID,EventObject)扩展为四元组(DomainID,AgentID,EventID,EventObject),通过加入新的ID可以区分不同自治域中,AgentID相同的设备,故多域下四元组也与原始Trap报文具有双射关系.

证毕.

单个原始Trap报文在聚合后以三元组或四元组的形式呈现,不同的Trap报文间是可以互相区分的.当聚合报文被发送时,同样是封装在UDP数据报中,聚合报文作为UDP的负载信息发送到SNMP Manager.虽然SNMP Manager可以解析出UDP的负载信息,但其内容没有进行额外的编码,所以不同条目间的边界是模糊的.

为了解决这种问题,在聚合报文发送前,聚合端采用与ASN.1相同的编码方式,即BER编码对聚合内容进行编码转化.因为聚合方法有严格的结构约束,所以当Manager收到经过BER编码转换过的负载信息时,其可以按照BER编码的格式对其进行解析,从而实现了不同条目的分割.

3.3 Trap报文聚合算法设计

在3.2节已经完成了对聚合包的结构定义与双射关系的证明,本节将介绍聚合操作的具体流程及所需的抽象网络结构及算法的伪代码.在SDN环境下,Trap 报文的聚合需要解决两个关键问题,一是网络节点之间通信以及路由的问题,该问题决定了数据包所要经由的路径、经历的延时等各种约束条件.另一个问题是节点的计算处理过程,即报文的转发和聚合.为了便于解释这个问题,本文将网络抽象成“数据流动”的有向图.

有向图中包括SNMP Trap报文的构建、聚合与转发的过程.在有向图中,有向边表示数据转发的方向,而不同的节点表示承担不同功能的网元.其中,聚合操作也是由节点表示.在实现中,无论是传统网络架构,还是在SDN下,为了实现聚合算法,都需要用具体的设备去充当聚合节点,实现聚合的功能.如图3所示.

图3 报文聚合数据流图Fig.3 Message aggregation data flow diagram

参与报文聚合的数据源的集合可以表示为一个多重集合,每一个子数据集可以看作一个被其他聚合节点完成聚合的聚合数据集:

Ni={{s11,s12,…,s1n},…,{sm1,sm2,…,smn}}

(1)

Ni表示输入节点的多源数据,它可以是原始的SNMP Trap报文,也可以是经过一定聚合操作后形成的聚合Trap报文,还可以既包含聚合报文也包含原始报文的组合.smn表示原始SNMP的Trap报文或聚合报文中不同的三元组.Ni集合中元素的顺序不相关,多源数据Ni经过节点Ai之后输出的结果为Oi,该节点进行数据聚合,即实现了从Ni~Oi的映射.而数据经过转发节点T,其结果并没有改变,只是产生了一定的时延,t时刻输入的数据Dt变为t+△t时刻的数据Dt+△t.本文定义如下4种函数,描述数据在聚合过程中的操作:

定义1.数据聚合函数.为了表示经过聚合节点前后数据的变化情况,本文定义聚合函数.数据聚合函数为多重集合N至结果集合O的映射,f:Nt→Ot.如果考虑时延的因素,时刻由t变为t+△t,则聚合函数写为f:Nt→Ot+△t.数据集Nt在聚合节点处进行聚合操作,数据内容发生变化,形成聚合数据集.

定义2.数据转发函数.为了表示经过具备转发功能的网元前后数据的变化情况,本文定义数据转发函数.数据转发函数为t时刻的数据集合Dt~t+△t时刻的数据Dt+△t的映射,f:Dt→Dt+△t.数据集合Dt经过转发节点后,数据内容不发生变化,只是产生时延.

定义3.可自分解的聚合函数.为了表示聚合数据间是独立且可互相分割的,本文定义可自分解的聚合函数.如果一个聚合函数f:N→O满足f(X∪Y)=f(X)∪f(Y),则该聚合函数称为可自分解的聚合函数.本函数体现了聚合操作的独立性,数据有效内容不会因为聚合而混淆.

定义4.可分解聚合函数.为了表示数据生成的最终聚合结果与经过聚合节点的先后顺序无关,本文定义可分解聚合函数.如果聚合函数f:N→O,g:N1→O1,h:N2→O2,其中N=N1∪N2,满足f(N)=g(N1)∪h(N2),则称聚合函数f是可分解的,f可分解为g和h聚合操作.本定义体现了聚合操作的顺序无关性,聚合顺序不影响聚合结果的整体内容.

以上4个函数是实现多报文聚合的关键,定义了数据流图中聚合节点、转发节点及聚合操作的基本逻辑.由于本文在3.2节分析了具体的聚合报文结构,即SNMP Trap报文转换为三元组或四元组的形式,并且论证了原始Trap报文与三元组是一个双射关系,不同三元组之间是独立与不相关的,故上述4个函数可以通过编程进行具体化实现.同时,这四个函数也约束了聚合操作的性质.

算法1给出了Trap报文聚合算法的详细描述.算法的输入是一个聚合服务器监听到的原始Trap报文N,输出是聚合报文P.聚合节点首先监听并缓存原始Trap报文Ni(第2行),之后判断收集的原始Trap报文是否满足聚合条件(第3行),若不满足聚合条件则继续监听(第13~14行),否则遍历已缓存的Trap报文,提取每条Trap报文的三元组,并进行单条数据的构建和编码(第4~12行).在完成已缓存的Trap报文的处理后,将已经构建并编码的数据作为UDP负载,封装成聚合报文(第15行),最后将聚合报文发送至SNMP Manager(第16行).

算法1.Trap报文聚合算法

输入:若干原始Trap报文N

输出:聚合报文P

1.begin

2.while 聚合节点监听并缓存Trap报文N

3. if(当前聚合报文满足聚合规则)

4. for(在N中遍历已缓存的Trap报文)

5. if(当前遍历的Trap报文msgi为自定义消息)

6. tuplei=get_specific(msgi);//提取自定义类三元组

7. else://当前遍历的Trap报文msgi为非自定义消息

8. tuplei=get_generic(msgi);//提取非自定义类三元组

9. item_rawi=construct_item(tuplei);//构建单条数据

10. itemi=encode_BER(item_rawi);//对单条数据编码与保存

11. End if

12. End for

13. else://若不满足当前聚合规则

14. continue;//继续监听Trap报文

15. P=construct_packet(item);//将编码后的数据构建成聚合包

16. send(P);//发送聚合报文

17. End if

18.End

3.4 Trap报文聚合方法性能分析

3.4.1 聚合操作对管理流量降低效果分析

本文提出的聚合算法通过提取SNMP Trap报文中的有效信息,形成若干三元组并进行聚合,最终将聚合数据封装到UDP包中.在性能分析中,本文主要分析聚合操作对主干网管理流量降低的效果.为了方便分析,本文根据聚合方法定义及Trap包结构分析聚合操作的压缩效率.

根据SNMP Trap报文的控制字段信息,本文定义如表2所示的符号.其中H为包含UDP头部、IP头部以及以太网头部的头部长度.其他在计算中会用到的固定长度参数为:Version占用固定长度为1B,SNMP类型固定长度为2B,Agent Address固定长度4B,Generic Trap Type固定长度为1B.

表2 符号及定义Table 2 Symbols and definitions

为了进行Trap报文聚合算法对管理流量减少情况的分析,本文假设对N个报文进行传输,得到的总传输长度为:

Len=N×(H+K+C+E+S+T+8)

(2)

根据表2定义,Trap报文只有自定义类型和非自定义类型两种事件分类,故有m+n=N,得到聚合后的总传输长度为:

Len′=H+C+N×(K+4+T)+m+n×(E+S)

(3)

所以,根据公式(2)、公式(3)可以得到聚合前后压缩的比例为:

Ratio=Len′/Len

(4)

还可以得到聚合前后的总长度差为:

Diff=Len-Len′

(5)

Diff=(N-1)(H+C)+m×(E+S)+4N-m

(6)

根据公式(5)、公式(6)可以得出:对于单次聚合,当参与聚合的数据包数量增加时,可以减少主干网中用于设备管理的流量开销,其开销减少的部分主要来自Trap包的封装字段,如IP,UDP包头,以及标识不同Trap报文的类型字段(即公式中H,C,E,S).

为便于理论分析,本文将聚合的数据包组成分为如下3种情况:

1)当N→+∞且m→N时,存在:

Len′=N×(K+5+T)

(7)

Ratio=(K+T+5)/(H+K+C+E+S+T+8)

(8)

分析式(8)可知,当参与聚合的报文中的Variable Bindings键值对(即式中K)平均长度越长,聚合方法的效果越差,而Trap报文中在Variable Bindings处仅传递少量关键信息,故所得的Ratio值会较小,聚合效果较好.

2)当N→+∞,且m→0时,存在:

Len′=N×(K+T+E+S+4)

(9)

Ratio=(K+T+E+S+4)/(H+H+C+E+S+T+8)

(10)

由于E和S在真实值中与K的大小相比较小,从公式(9)可知,Ratio同样取决于K的大小,即Variable Bindings 键值对长度.当键值对长度越长,聚合方法的效果越差,反之聚合效果越好.

3)当N→+∞,且m+n=N时,聚合效果Ratio介于 1)和2)之间,同样受到K的显著影响.

综合上述分析,经过报文聚合后,应用SNMP产生的Trap报文在主干网中的资源开销显著减小,这样的聚合方式可以有效的应用在SNMP Trap报文的转发当中.对于SNMP的Response类型的报文,报文聚合的效果不如Trap 报文聚合高效.这是因为Response报文需要通过Variable Bindings携带Agent与Manager通信的参数信息,故其内容非常丰富,使得其长度较长,经过报文聚合后的压缩效果较Trap报文聚合差.以上分析同样验证了本文采用Trap报文聚合来降低主干网管理开销的合理性.

3.4.2 聚合操作对网络时延的影响分析

由于Trap报文的长度较短,Trap报文聚合操作本身对时延影响较小,所以影响时延的因素主要是不同Trap报文类型在聚合节点处为形成聚合报文,所需等待的时延.对于紧急的Trap报文,其不进行聚合操作而直接转发,它的Trap报文时延与正常发送时相同.而对于非紧急的Trap报文,本文设计了两种聚合条件,来同时控制聚合算法,以便将聚合时延控制在较小值.这两种聚合条件为:

1)聚合节点等待固定时间间隔实施一次聚合操作,例如10s.

2)聚合节点收到一定数量的Trap报文后,完成一次聚合操作,例如收到10个非紧急的Trap报文,这时不必等待固定时间间隔结束,直接实施聚合操作.

在拥有海量设备的异构网络中,由于Agent发出Trap报文具有不确定性,为了保证聚合操作的时延可控,本文在非紧急报文聚合中采用上述两种聚合规则,即满足任一聚合条件时,聚合节点封装聚合报文并发送给管理站.因此,聚合操作的最大时延不会超过条件1)中设定的固定时间间隔,如果网络中非紧急的Trap报文较多,则聚合节点收到一定数量的Trap报文即可实施聚合操作,不必等到固定时间间隔结束.这样一方面可以提高聚合效率,另一方面当网络中非紧急报文较少时,依然可以有效控制聚合操作的时延.

4 基于SDN的网络管理架构

4.1 基于SDN的报文聚合模型

在SDN环境下,网络的转发情况与传统网络不同.因为 SDN中的控制逻辑与转发功能分离,控制功能由控制器实现,而转发功能由交换机实现,所以本文抽象出如图4所示的数据流动的有向图进行分析.

图4 SDN下的报文聚合数据流图Fig.4 Message aggregation data flow diagram based on SDN

如图4所示,基于SDN的报文聚合模型在网络中加入了控制器节点C,并且调整了转发的路由.控制器节点C负责向交换机下发流表规则,以及负责网络路由的相关功能.由此SDN下SNMP Trap报文的聚合数据流可以抽象为一个有向图.由于Agents端所发出的Trap报文的类型不同,聚合操作也是多样的.

在聚合时本文将SNMP的Trap报文分为紧急类型和非紧急类型.在3.1节中已经介绍了Trap报文Generic Trap Type的含义.根据其含义,本文将其中的LinkDown,EgpNeighborLoss, coldStart类型定义为紧急类型,而其他类型定义为非紧急类型.LinkDown表示一个Agent的接口变为故障状态.由于接入设备的种类、设备的功能是不确定的,所以需要管理端及时对产生故障的接口进行处理,避免重要设备出现断路.EgpNeighborLoss表示邻站出现故障,由于邻站出现问题可能预示着跨域通信产生异常,故此类异常需要管理端进行及时的介入与查看,避免网络整体通信出现问题.coldStart表示Agent进行初始化,其可能表示Agent一般重启,也可能表示Agent配置更改后的重启.管理端需要及时追踪设备的配置情况,保证管理端对设备的正常监控,否则管理端可能丢失对设备的监控.本文认为其余的Trap类型,相对于此3种类型重要程度较弱,故管理端可以忍受聚合带来的额外时延,从而达到SNMP管理流量削减的目的.

具体来说,Agents需要根据Trap报文类型,合理设置发送的目标地址.对于紧急类型的Trap报文,Agents不发送至聚合节点,不进行聚合操作,而是直接通过转发节点,快速发送至SNMP 管理端.而对于非紧急的Trap 报文,则按照聚合方法经过聚合节点的多次聚合后,再发送至SNMP 管理端.除此之外,在聚合时可以采用等待固定时延聚合和固定个数聚合两种方式.等待固定时延聚合即聚合节点等待固定的时间,并收集等待时间内经过的非紧急Trap报文并进行聚合操作,完成聚合后将报文目标地址改写并发送.固定个数聚合即为聚合节点收集固定个数的非紧急Trap报文,组成一个聚合包并发送至下一个节点.

4.2 基于SDN的网络管理架构设计

如图5所示,结合第3章提出的Trap报文聚合算法,本文设计了多域下基于SDN的网络管理架构,其主要由6大组件构成.

图5 基于SDN的网络管理架构图Fig.5 SDN based network management architecture diagram

各组件模块的功能说明如下:

SNMP Agent根据本域网络管理中预设的条件和规则以Trap报文形式向SNMP Manager报告当前的管理对象状态.同时,SNMP Agent承担SNMP协议中Agent的功能,接收与处理管理站发来的Set、Get类指令,并根据自身状态向管理站发送Trap报文与Response类报文.

OpenFlow Switch使用OpenFlow协议同SDN控制器进行通信,同时根据流表中的规则转发报文数据.

SDN Controller通过南向接口接收数据平面的状态和事件信息,同时进行流表规则的下发.除此之外,还可以为Application提供北向可编程接口.

Application根据控制器的北向接口,对控制器的二次编程实现控制器的定制化业务,例如定制流表转发规则,定制交换机事件处理规则等.

Aggregation Server接收来自网络的Trap报文数据,根据报文的类型和优先级进行计算,形成聚合报文,并发送聚合后的数据至下一跳网络设备.

SNMP Manager是传统的SNMP管理站,演化为接收来自聚合服务器的聚合报文数据,并对聚合数据进行拆分和解析.

在跨域网络管理的条件下,每个域的转发策略由该域的控制器进行管理,域的聚合功能由域内专用聚合服务器节点来实现.初始启动时,自治域中的控制器根据SNMP Agent的报文特征及Manager和Controller所预设的配置信息,向本域内的OpenFlow交换机下发流表规则.这些规则分成2 种类型,控制器根据本域的网络拓扑信息,判断管理站是否在本域之内:

1)如果管理站位于本域,则Trap报文的目的地址直接设为管理站.

2)如果管理站不在本域中,则Trap报文的目的地址设为本域内聚合服务器的地址.

SNMP Agent按照SNMP规则发送Trap报文.聚合服务器用于报文的聚合计算操作,然后将聚合之后的结果再发送至远程的SNMP Manager.整个过程中,SNMP Agent发送报文的目标地址并不需要设置为远程Manager的IP地址.对于非紧急类型的Trap报文,无论使用何种传播形式,这些Trap报文数据包最终转发目的地址总是聚合服务器,从而使得在网络存在部分故障条件下,Trap报文数据总是能够被聚合和采集到.对于紧急类型的Trap报文,其总是通过OpenFlow交换机转发至Manager.

本架构只需要定制化实现Controller、Application、Aggregation Server和SNMP Manager这4个模块.由于各模块具备独立性与灵活性的特点,用户可以轻易地进行连接和组装,并在所管理的网络中应用.

5 实验与结果分析

5.1 实验环境搭建

为测试Trap报文聚合方法与网络架构的效果,本文在Linux环境下通过Python语言来搭建Trap报文聚合系统.采用SDN的RYU开源控制器软件[24]实现对全网交换机的控制,同时使用Mininet[25]仿真器进行虚拟SDN网络的构建.为了更加真实的测试本文提出的聚合方法的性能,实验搭建了一个常用的哑铃型网络结构如图6所示,该网络包含2个控制器,6 个交换机以及若干接入设备,同时网络部署2 个聚合服务器和1个SNMP Manager节点充当接收聚合报文的服务器.两部分SDN网络可看作2个不同的自治域,并通过Scapy[26],dpkt[27]等包编程模拟设备的Trap报文随机发包情况,并根据本文设计的聚合算法,实现了Trap报文的聚合.本实验主要评估路由器到SNMP Manager这段主干网的管理流量变化情况.

图6 实验网络结构图Fig.6 Experimental network structure diagram

实验通过控制SNMP Agent发送Trap报文,然后在聚合服务器端设置不同的聚合等待策略,分别等待2~100个不同数量Trap报文后进行报文聚合.此外,还需要对Controller进行编程,向网络中的交换机下发流表,设置对紧急Trap报文的路由方式以及非紧急Trap报文的路由方式.本文的对比试验分别采用本文设计的聚合方法和不采用聚合方法的传统网络架构下进行对比试验.针对重要的聚合参数,如Trap报文聚合数量,本文还进行了对比实验.

5.2 实验结果及分析

实验数据采用模拟的snmp-trap报文,并通过重放 Pcap的方式在本地Mininet网络中进行实验和验证.Pcap文件中共包含5000个由不同节点上Agent发送到某定点SNMP Manager的trap报文.所采用的trap报文包平均长度为141.56Bytes,实验数据的统计信息如表3所示.

表3 实验数据信息Table 3 Experimental data information

在正确性检验中,实验规则为以每5个trap报文进行一次聚合操作.实验效果通过监听交换机与SNMP Manger间的主干网流量波动情况进行评估,图7显示了聚合后发往主干网的Trap流量和未聚合操作直接由各agent发往主干网的Trap报文流量的对比情况.

图7 聚合算法流量对比图Fig.7 Traffic comparison diagram of aggregation algorithm

从图7(a)中可以看出,原始SNMP的trap报文流量为1500Bytes/s,而聚合后的聚合报文流量约为1000Bytes/s,即经过聚合后,Trap报文的平均流量是显著小于未聚合时.图7中表示的并不是单纯的流量传输速率,图中折线与x轴围成的面积表示的是实验中通过主干网的流量总和,可以看出聚合后主干网中原5000个trap数据包的流量总和大幅低于未聚合时的情况.除此之外,从图7(b)、图7(c)、图7(d)中还看出聚合流量发送中存在周期性的突刺,这是由于聚合时需要先缓存部分trap报文,聚合完成后发出聚合包,而聚合包的包长较大,从而在发送时产生周期性突发流量.因此,可以得出相对于直接发送大量trap报文,经过本文提出的聚合算法可以大幅度减少trap报文在主干网中消耗的流量,在上述实验中主干网中trap报文流量下降了35.281%.

前述实验中,本文采用了每5个trap报文进行一次聚合的规则,为了测试不同个数聚合对主干网流量的影响,接下来分别进行5、10、15、20、25、50、75和100个报文的聚合对主干网中trap报文流量影响的实验.所得实验结果部分如图7及表4所示.

表4 聚合报文的数据信息Table 4 Aggregate message data information

从图7(b)、图7(c)、图7(d)中可以看出,随着聚合的数据包个数的增加,图中的突刺越来越清晰,且峰值随着报文聚合的个数增加而增加,最终呈现出脉冲的形式.这是由于数据包的聚合使最终形成的单个聚合包长度增加,而且聚合需要满足包的到达数量的要求,这就导致聚合服务器在聚合和传输中存在周期性的等待,从而在图中体现出脉冲形式的流量图线.

除此之外结合表4,随着报文聚合个数的增加,trap聚合报文总流量呈下降趋势,这是由于随着单次聚合所需的报文个数增加,聚合过程中丢弃的原始trap报文头部字段增加,这就使得总体的流量呈现下降趋势.

图8中横轴表示形成一个聚合包需要的Trap报文个数,纵轴表示5000个包总体流量开销.从图8中可以看出,采用本文设计的聚合方法,在聚合2~100个包的聚合实验中,可以得到平均40%的流量减少,这是由于本文的聚合方式减少了头部无效信息,将有效信息以三元组的形式提取并存放于UDP的负载中,使整体流量下降.除此之外,当聚合的包数量增加时,流量节约趋于平缓,这是因为聚合包的头部所占用的长度较少,数据包整体长度主要取决于其负载中所包括的有效信息长度.所以,本文提出的算法不需要在单次聚合中等待大量数据就可以实现更加高效的流量控制.

图8 聚合报文数量与Trap流量下降百分比关系Fig.8 Number of aggregated messages and flow decline rate diagram

为了测试聚合算法对trap报文发送时延的影响,本文对比了2~100个报文聚合时总体发送时延与未进行报文聚合时总体发送时延的情况,实验结果如图9所示.在实验中,我们分别以收集不同固定个数的Trap报文作为规则,进行聚合操作并发送给管理站,以此来评估单次聚合操作中收集不同个数报文与时延的关系.

图9 聚合报文个数与增加时延百分比关系Fig.9 Number of aggregated messages and increased delay rate diagram

图9中横轴表示形成一个聚合包需要的Trap报文个数,纵轴表示发送相应聚合包时增加的发送时间.从图中可以看出,随着聚合数据包数量的增加,对计算机的收发缓存以及处理时延会产生影响.在实验条件下,当聚合数据包达到25个后,额外时延增加达到16.096%.随着聚合数据包的数量增加,聚合一个包额外产生的时间开销将会增大,且增幅越来越大.当以100数据包为单位进行聚合算法时,发现额外时延增加达到79.089%.综合图8和图9的实验结果,在实验中的理想聚合数据包个数在10~20间,此时的额外时延开销在10%~15%,且压缩比率达到近40%.

在应用中,需要根据本设备管理网络中常见的trap报文的长度范围及由此产生的聚合包的长度范围调整聚合包的个数及网卡的缓冲区大小,从而避免造成聚合时延过大导致数据包在缓冲区大量排队,进一步填满缓冲区的情况;另一方面,由于对大量数据包的聚合可能会拖慢CPU的处理效率导致聚合丢包,为此,需要考虑降低单次聚合的报文个数,或采用多线程的方式进行接收与聚合发送的处理.

6 结 论

本文针对应用SNMP进行多自治域、海量设备管理中存在的Trap报文消耗大量网络资源的问题,提出了一种基于SDN的Trap报文聚合方法.该方法在引入报文聚合节点的基础上,对特定的Trap报文类型进行聚合与转发,从而降低Trap报文在主干网上的传输流量,优化主干网络性能.传统网络结构下进行网络管理面临的额外开销大、灵活性差、管理站负载高的缺点,本文提出了一种SDN下应用SNMP进行网络设备管理的网络架构.该架构以SDN为基础提高网络的灵活性,同时减轻了管理站负载高的问题.实验结果表明,本文提出的聚合方法在保证管理数据完整性的同时,显著减少了主干网络中的Trap报文的流量开销,实现跨多个自治域的网络管理数据采集的功能,具有较高的效率,能够适用于大规模可扩展性网络的管理.在未来的研究中,将进一步优化聚合算法,将它扩展至SNMP其它报文的聚合问题.

猜你喜欢
主干网三元组网络管理
基于带噪声数据集的强鲁棒性隐含三元组质检算法*
CERNET主干网总流量平稳上升
特征标三元组的本原诱导子
基于MPLS L3 VPN的海洋信息通信网主干网组网设计
封面报道
关于余挠三元组的periodic-模
电动汽车充电服务网络管理初探
基于EOC通道的SHDSL网络管理技术
高速公路联网收费通信主干网维护管理探讨
三元组辐射场的建模与仿真