張子堯,吳黎兵,夏振廠,2,張壯壯
1(武漢大學(xué) 國(guó)家網(wǎng)絡(luò)安全學(xué)院 空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,武漢 430072)
2(武漢大學(xué) 計(jì)算機(jī)學(xué)院,武漢 430072)
近年來(lái),隨著5G通信和物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,大量多源異構(gòu)設(shè)備的接入使得網(wǎng)絡(luò)變得更加復(fù)雜和龐大,這對(duì)異構(gòu)網(wǎng)絡(luò)設(shè)備管理提出了重大挑戰(zhàn).然而,傳統(tǒng)的分布式網(wǎng)絡(luò)架構(gòu)導(dǎo)致部署、管理混亂而復(fù)雜,從而造成網(wǎng)絡(luò)中路由表的更新緩慢,路由收斂時(shí)間過(guò)長(zhǎng).除此之外,當(dāng)部署新的網(wǎng)絡(luò)業(yè)務(wù)時(shí),傳統(tǒng)網(wǎng)絡(luò)暴露出數(shù)據(jù)轉(zhuǎn)發(fā)效率低、網(wǎng)絡(luò)地址短缺等問題[1-3].針對(duì)傳統(tǒng)網(wǎng)絡(luò)架構(gòu)中存在的問題,一種新的網(wǎng)絡(luò)架構(gòu)被提出,即軟件定義網(wǎng)絡(luò)(Software Defined Networking,SDN)[4],它將控制層與轉(zhuǎn)發(fā)層分離,所有的控制邏輯由控制器集中統(tǒng)一管理,控制器與數(shù)據(jù)轉(zhuǎn)發(fā)硬件使用一個(gè)開放和標(biāo)準(zhǔn)的接口OpenFlow[5]進(jìn)行交互[6].SDN技術(shù)作為5G、物聯(lián)網(wǎng)的基礎(chǔ)架構(gòu)[7-9],其提供的集中管理、高效轉(zhuǎn)發(fā)以及可編程性,可以很好彌補(bǔ)傳統(tǒng)網(wǎng)絡(luò)的缺點(diǎn),適用于大規(guī)模異構(gòu)設(shè)備間通信與管理[10].
在網(wǎng)絡(luò)通信中,為降低大規(guī)模設(shè)備通信的資源開銷,對(duì)數(shù)據(jù)內(nèi)容或多個(gè)數(shù)據(jù)包進(jìn)行聚合是一種常用的性能優(yōu)化手段.例如,在傳感器網(wǎng)絡(luò)、智能電網(wǎng)等物聯(lián)網(wǎng)應(yīng)用場(chǎng)景下,接入網(wǎng)絡(luò)的設(shè)備數(shù)以萬(wàn)計(jì),網(wǎng)絡(luò)中傳遞的是單個(gè)包長(zhǎng)較短的設(shè)備狀態(tài)信息,因此聚合就可以很好的提高網(wǎng)絡(luò)有效數(shù)據(jù)載荷,降低數(shù)據(jù)傳輸?shù)念~外開銷[11,12].
在網(wǎng)絡(luò)管理方面,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol,SNMP)以其應(yīng)用簡(jiǎn)單、容易實(shí)現(xiàn)、易于部署等優(yōu)點(diǎn)成為主流的網(wǎng)絡(luò)管理框架,在實(shí)際網(wǎng)絡(luò)管理應(yīng)用中得到了廣泛的應(yīng)用.然而,在管理大量設(shè)備的網(wǎng)絡(luò)環(huán)境中,設(shè)備的頻繁接入、離線及異常會(huì)導(dǎo)致自治域內(nèi)SNMP的Trap報(bào)文流量顯著增加[13].網(wǎng)絡(luò)管理的原則是盡可能設(shè)計(jì)輕型的通信協(xié)議從而去降低網(wǎng)絡(luò)額外開銷.網(wǎng)絡(luò)中數(shù)以萬(wàn)計(jì)的被管對(duì)象的Trap報(bào)文數(shù)據(jù)需要有分層融合機(jī)制以有效控制流量開銷,提高網(wǎng)絡(luò)有效傳輸?shù)耐掏侣?減少對(duì)用戶的影響.SDN運(yùn)作機(jī)制為Trap報(bào)文聚合提供了支持,通過(guò)報(bào)文聚合可以有效地降低了網(wǎng)絡(luò)中管理報(bào)文數(shù)據(jù)的冗余,提高管理數(shù)據(jù)采集的效率,特別是在跨多域的網(wǎng)絡(luò)管理中,能夠有效降低了主干網(wǎng)絡(luò)中的Trap報(bào)文的流量開銷.
本文的主要工作和貢獻(xiàn)如下:
1)針對(duì)使用SNMP管理大量網(wǎng)絡(luò)設(shè)備導(dǎo)致的主干網(wǎng)中Trap流量開銷較大的問題,本文設(shè)計(jì)了一種簡(jiǎn)單高效的Trap報(bào)文聚合方法.該方法可以有效降低Trap報(bào)文在主干網(wǎng)絡(luò)中的流量開銷.
2)針對(duì)傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)下進(jìn)行網(wǎng)絡(luò)管理面臨靈活性差、不利于統(tǒng)一管理控制的問題,本文提出了一種基于SDN的網(wǎng)絡(luò)管理架構(gòu).該架構(gòu)與Trap報(bào)文聚合算法相結(jié)合,可以提高應(yīng)用SNMP進(jìn)行跨多域網(wǎng)絡(luò)管理的效率,優(yōu)化網(wǎng)絡(luò)管理帶來(lái)的額外開銷.
實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)網(wǎng)絡(luò)管理中被管網(wǎng)元直接將Trap報(bào)文發(fā)送給管理站的方法相比,基于SDN的Trap報(bào)文聚合方法在主干網(wǎng)的管理流量減少了41.328%,大幅降低了主干網(wǎng)中Trap流量的開銷.
圍繞SDN和網(wǎng)絡(luò)管理的性能提升問題,國(guó)內(nèi)外學(xué)者進(jìn)行了大量研究,可以歸納為2個(gè)方面:1)根據(jù)SDN特性,通過(guò)對(duì)流表及流表下發(fā)過(guò)程進(jìn)行聚合方法的研究,進(jìn)而提高SDN網(wǎng)絡(luò)性能;2)根據(jù)傳統(tǒng)網(wǎng)絡(luò)及網(wǎng)絡(luò)管理存在的問題,對(duì)特定應(yīng)用場(chǎng)景有針對(duì)性地設(shè)計(jì)包聚合算法提高網(wǎng)絡(luò)性能,降低管理造成的流量開銷.
在SDN聚合方法研究方面,Luo等人[14]針對(duì)SDN流表聚合中存在流表更新延遲及TCAM受限的問題,提出了離線的快速流表聚合(FFTA)及在線的增量快速流表聚合(iFFTA)方法.Mimidis等人[15]針對(duì)SDN中TCAM容量受限可能成為網(wǎng)絡(luò)瓶頸的問題,提出了一種基于動(dòng)態(tài)聚合網(wǎng)絡(luò)中各節(jié)點(diǎn)流量的方法來(lái)減少流表中的OF條目數(shù).Tsai等人[16]針對(duì)SDN網(wǎng)絡(luò)中TCAM瓶頸可能導(dǎo)致的流表溢出問題,在文獻(xiàn)[14]的基礎(chǔ)上提出了一種新的流聚合方法,通過(guò)采用子集變換解決流表溢出問題.Lin等人[17]聚焦于物聯(lián)網(wǎng)應(yīng)用中大量小型傳感器數(shù)據(jù)傳輸可能導(dǎo)致的流量爆炸問題.利用SDN的可編程性,應(yīng)用P4協(xié)議(Programming Protocol-Independent Packet Processor,P4),設(shè)計(jì)和開發(fā)了用于商用的聚合和分解方法.
在傳統(tǒng)網(wǎng)絡(luò)架構(gòu)的網(wǎng)絡(luò)管理研究方面,Song等人[18]基于SNMP監(jiān)控系統(tǒng)設(shè)計(jì)出了一種基于http協(xié)議報(bào)文聚合的緩存管理算法,用于解決大規(guī)模網(wǎng)絡(luò)的負(fù)載均衡問題.Malboubi等人[19]將路由器的TCAM分為2類,一類用于輸入流的聚合,另一類用于分解重要流,并提出了iSTAMP架構(gòu)對(duì)這兩類流分別進(jìn)行處理,根據(jù)獲取到的統(tǒng)計(jì)信息使用優(yōu)化技術(shù)來(lái)預(yù)測(cè)未來(lái)的流,從而達(dá)到對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行實(shí)時(shí)規(guī)則配置的目標(biāo).Ndikumana等人[20]針對(duì)內(nèi)容中心網(wǎng)絡(luò)(CCN)中上行鏈路利用率不足問題,提出了一種基于包聚合的興趣轉(zhuǎn)發(fā)方法.Jin等人[21]針對(duì)WIA-PA網(wǎng)絡(luò)實(shí)時(shí)性能問題,提出了一種聚合調(diào)度方法,將實(shí)時(shí)理論與聚合方法結(jié)合,對(duì)原始包進(jìn)行聚合,并應(yīng)用調(diào)度算法提升性能.Wang等人[22]針對(duì)工業(yè)WIA-PA網(wǎng)絡(luò)中設(shè)備能耗大及數(shù)據(jù)傳輸可靠性不高的問題,提出了一種基于無(wú)線信道狀態(tài)的WIA-PA網(wǎng)絡(luò)數(shù)據(jù)包聚合方案.
綜上所述,為了提高網(wǎng)絡(luò)管理的效率與性能,傳統(tǒng)網(wǎng)絡(luò)管理研究者與SDN研究者均提出了建設(shè)性的方法.然而,傳統(tǒng)網(wǎng)絡(luò)管理在網(wǎng)絡(luò)設(shè)備規(guī)模大且類型多樣的網(wǎng)絡(luò)中,可維護(hù)性和效率較低.因此,基于傳統(tǒng)網(wǎng)絡(luò)的優(yōu)化方法對(duì)網(wǎng)絡(luò)管理的性能提升有限.當(dāng)前在SDN場(chǎng)景下的網(wǎng)絡(luò)性能提升研究主要聚焦于SDN交換機(jī)層面,通過(guò)對(duì)流表進(jìn)行聚合來(lái)降低網(wǎng)絡(luò)整體時(shí)延,提高流表切換與更新的速度,但并沒有對(duì)大規(guī)模網(wǎng)絡(luò)設(shè)備管理下,主干網(wǎng)性能優(yōu)化及網(wǎng)絡(luò)管理優(yōu)化進(jìn)行考量.針對(duì)上述問題,本文將SDN具備的可編程性及統(tǒng)一控制的優(yōu)點(diǎn)與包聚合降低網(wǎng)絡(luò)額外開銷的優(yōu)勢(shì)相結(jié)合,提出一種Trap報(bào)文聚合方法,并設(shè)計(jì)了一種基于SDN的網(wǎng)絡(luò)管理架構(gòu).該架構(gòu)與Trap報(bào)文聚合算法相結(jié)合去降低跨域主干網(wǎng)中Trap流量的開銷,優(yōu)化主干網(wǎng)性能.
SNMP定義了Agent和管理站(Manager)之間交換報(bào)文的語(yǔ)法和語(yǔ)義,它使用抽象語(yǔ)法標(biāo)記(ASN.1)[23]來(lái)定義SNMP報(bào)文編碼方式.Trap報(bào)文是SNMP的一種報(bào)文類型,由Agent發(fā)出,通知Manager被管設(shè)備發(fā)生異常.
在研究中,本文考慮在SNMPv1下進(jìn)行聚合方法設(shè)計(jì)及實(shí)現(xiàn).SNMP中的Trap報(bào)文格式如圖1所示,它包括Type、Enterprise、Agent Address、Generic Trap Type、Specific Trap Type、Timestamp、Variable Bindings共7個(gè)字段.其中Type字段用來(lái)區(qū)分前文所介紹的不同報(bào)文類型,Variable Bindings域的鍵值對(duì)用來(lái)對(duì)具體的設(shè)備信息與設(shè)備情況進(jìn)行說(shuō)明.在Trap報(bào)文中,通過(guò)Trap內(nèi)的特殊字段,如Generic Trap Type,Specific Trap Type來(lái)具體說(shuō)明當(dāng)前Trap報(bào)文的事件類型及其功能,Enterprise表示OID值,Generic Trap表示通用Trap事件類型,Specific Trap表示企業(yè)自定義類型.Agent Address表示Agent端的IP地址.RFC1157規(guī)定了Trap報(bào)文的事件類型與參數(shù),如表1所示.
表1 Trap報(bào)文的事件類型Table 1 Event type of Trap message
圖1 Trap報(bào)文結(jié)構(gòu)Fig.1 Structure of Trap message
在Trap報(bào)文中,參數(shù)信息是由Trap內(nèi)部的Variables Bindings進(jìn)行說(shuō)明.Trap是一種事件驅(qū)動(dòng)的SNMP報(bào)文,當(dāng)Agent端有定義的事件發(fā)生時(shí),就會(huì)主動(dòng)向Manager發(fā)送Trap報(bào)文.Trap報(bào)文中的Specific Trap字段為網(wǎng)絡(luò)管理提供了更多的自定義事件,擴(kuò)充了SNMP協(xié)議的功能.網(wǎng)絡(luò)設(shè)備廠商可以依據(jù)設(shè)備的功能及參數(shù)添加自定義Trap 類型,從而提升網(wǎng)絡(luò)管理的靈活性.
在網(wǎng)絡(luò)管理中,報(bào)文聚合的主要目的是降低接入設(shè)備所產(chǎn)生的管理流量開銷.因此,為降低管理流量開銷,本文將不同Agent發(fā)出的Trap報(bào)文進(jìn)行內(nèi)容上的聚合.通過(guò)將多個(gè)不同的報(bào)文壓縮聚合成一個(gè)結(jié)構(gòu)清晰的聚合報(bào)文,再發(fā)送到SNMP Manger,從而降低主干網(wǎng)中用于網(wǎng)絡(luò)管理的管理流量.為此本文根據(jù)Trap報(bào)文中的不同可區(qū)分字段,實(shí)現(xiàn)聚合的功能.
在3.1節(jié)已經(jīng)介紹了Trap報(bào)文的字段,它們組合到一起可以唯一標(biāo)識(shí)一個(gè)Trap報(bào)文所要傳遞的事件信息.因此,本文將這些字段進(jìn)行組合形成結(jié)構(gòu)化的元組,去構(gòu)建聚合報(bào)文的數(shù)據(jù)部分.本文定義如下種類的結(jié)構(gòu)化元組,構(gòu)建過(guò)程如圖2所示.
圖2 Trap聚合報(bào)文構(gòu)建流程Fig.2 Trap aggregation message construction process
1)當(dāng)SNMP Trap報(bào)文為非自定義類型時(shí)(即Generic Trap Type不為Enterprise Specific),提取Generic Trap Type,Agent Address,Timestamp,BindingVar字段,以這些字段定義三元組(Agent Address,Generic Trap Type,(Timestamp,BindingVar)),標(biāo)識(shí)原始Trap報(bào)文.
2)當(dāng)Trap報(bào)文為自定義的Trap事件類型時(shí)(即Generic Trap Type為Enterprise Specific時(shí)),提取Enterprise,Agent Address,Specific Trap,Timestamp,BindingVar字段,定義三元組(Agent Address,(Enterprise,Specific Trap),(Timestamp,BindingVar)),標(biāo)識(shí)原始Trap 報(bào)文.
3)將Agent Address映射為AgentID,(Enterprise,Specific Trap)/Generic Trap Type映射為EventID,(Timestamp,BindingVar)映射為EventObject,形成三種映射關(guān)系.
之后,用提取的三元組(AgentID,EventID,EventObject)構(gòu)建單條聚合數(shù)據(jù).并通過(guò)BER編碼規(guī)則進(jìn)行編碼,然后與其他聚合數(shù)據(jù)拼接構(gòu)成聚合報(bào)文的數(shù)據(jù)部分.最后,封裝MAC,IP與UDP頭部,形成最終的聚合報(bào)文.
進(jìn)一步,提取的聚合結(jié)構(gòu)需要保證Trap報(bào)文與提取的三元組(AgentID,EventID,EventObject)形成一個(gè)雙射關(guān)系,以便聚合后的數(shù)據(jù)條目可以和原始Trap報(bào)文一一對(duì)應(yīng).論證本文定義的聚合算法形成的元組是帶有完全有效信息時(shí),需要證明形成的結(jié)構(gòu)化元組與原始報(bào)文間在應(yīng)用時(shí)可以雙向的找到唯一對(duì)應(yīng),即原始報(bào)文與對(duì)應(yīng)的結(jié)構(gòu)化元組需是一個(gè)雙射關(guān)系,即定理1.
定理1.Trap報(bào)文與結(jié)構(gòu)化元組(AgentID,EventID,EventObject)是一個(gè)雙射關(guān)系.
證明:滿足雙射關(guān)系是指本文所形成的聚合報(bào)文中的信息是獨(dú)特的,也即不同原始Trap報(bào)文形成的對(duì)應(yīng)三元組是唯一的.當(dāng)聚合報(bào)文在SNMP Manager中進(jìn)行聚合報(bào)文的分解時(shí),不會(huì)出現(xiàn)混淆或重復(fù)的情況.
本文根據(jù)Generic Trap Type字段定義了兩種不同含義的三元組:非自定義類型和自定義類型.自定義類型形成的三元組在EventID中具有2個(gè)不同的標(biāo)識(shí),而非自定義類型形成的三元組中相應(yīng)的只有1個(gè)標(biāo)識(shí).而兩種不同類型三元組的EventID標(biāo)識(shí)所占用的位數(shù)是不同的,所以SNMP Manager可以很輕易的區(qū)分這兩種三元組.對(duì)于相同類型的三元組來(lái)說(shuō),其來(lái)源只有兩種情況,即1)由同一個(gè)SNMP Agent形成,2)由不同的SNMP Agent形成.
不同的SNMP Agent所具有的AgentID是不同的,因此可以區(qū)分.而對(duì)于SNMP Agent相同的Trap報(bào)文,SNMP Manager可以根據(jù)Timestamp來(lái)進(jìn)行區(qū)分.對(duì)于特殊情況,同一臺(tái)SNMP Agent因?yàn)槟撤N原因重啟,且以相同timestamp發(fā)送Trap報(bào)文,經(jīng)過(guò)提取會(huì)形成兩個(gè)除EventObject外,均相同的三元組.如果此時(shí)是同一設(shè)備重發(fā)的Trap報(bào)文,SNMP Manager可以丟棄舊報(bào)文而僅保留新報(bào)文,此仍然保證了三元組間的互異.綜上所述,算法可以用三元組代表原始報(bào)文的有效內(nèi)容,實(shí)現(xiàn)多個(gè)Trap報(bào)文內(nèi)容的聚合.同時(shí),聚合后形成的聚合報(bào)文可以在SNMP Manager端被還原成原始Trap對(duì)應(yīng)的含義.
當(dāng)應(yīng)用中考慮多域的情形時(shí),可以將不同域的ID或域名納入結(jié)構(gòu)化元組中.即將(Agent,EventID,EventObject)擴(kuò)展為四元組(DomainID,AgentID,EventID,EventObject),通過(guò)加入新的ID可以區(qū)分不同自治域中,AgentID相同的設(shè)備,故多域下四元組也與原始Trap報(bào)文具有雙射關(guān)系.
證畢.
單個(gè)原始Trap報(bào)文在聚合后以三元組或四元組的形式呈現(xiàn),不同的Trap報(bào)文間是可以互相區(qū)分的.當(dāng)聚合報(bào)文被發(fā)送時(shí),同樣是封裝在UDP數(shù)據(jù)報(bào)中,聚合報(bào)文作為UDP的負(fù)載信息發(fā)送到SNMP Manager.雖然SNMP Manager可以解析出UDP的負(fù)載信息,但其內(nèi)容沒有進(jìn)行額外的編碼,所以不同條目間的邊界是模糊的.
為了解決這種問題,在聚合報(bào)文發(fā)送前,聚合端采用與ASN.1相同的編碼方式,即BER編碼對(duì)聚合內(nèi)容進(jìn)行編碼轉(zhuǎn)化.因?yàn)榫酆戏椒ㄓ袊?yán)格的結(jié)構(gòu)約束,所以當(dāng)Manager收到經(jīng)過(guò)BER編碼轉(zhuǎn)換過(guò)的負(fù)載信息時(shí),其可以按照BER編碼的格式對(duì)其進(jìn)行解析,從而實(shí)現(xiàn)了不同條目的分割.
在3.2節(jié)已經(jīng)完成了對(duì)聚合包的結(jié)構(gòu)定義與雙射關(guān)系的證明,本節(jié)將介紹聚合操作的具體流程及所需的抽象網(wǎng)絡(luò)結(jié)構(gòu)及算法的偽代碼.在SDN環(huán)境下,Trap 報(bào)文的聚合需要解決兩個(gè)關(guān)鍵問題,一是網(wǎng)絡(luò)節(jié)點(diǎn)之間通信以及路由的問題,該問題決定了數(shù)據(jù)包所要經(jīng)由的路徑、經(jīng)歷的延時(shí)等各種約束條件.另一個(gè)問題是節(jié)點(diǎn)的計(jì)算處理過(guò)程,即報(bào)文的轉(zhuǎn)發(fā)和聚合.為了便于解釋這個(gè)問題,本文將網(wǎng)絡(luò)抽象成“數(shù)據(jù)流動(dòng)”的有向圖.
有向圖中包括SNMP Trap報(bào)文的構(gòu)建、聚合與轉(zhuǎn)發(fā)的過(guò)程.在有向圖中,有向邊表示數(shù)據(jù)轉(zhuǎn)發(fā)的方向,而不同的節(jié)點(diǎn)表示承擔(dān)不同功能的網(wǎng)元.其中,聚合操作也是由節(jié)點(diǎn)表示.在實(shí)現(xiàn)中,無(wú)論是傳統(tǒng)網(wǎng)絡(luò)架構(gòu),還是在SDN下,為了實(shí)現(xiàn)聚合算法,都需要用具體的設(shè)備去充當(dāng)聚合節(jié)點(diǎn),實(shí)現(xiàn)聚合的功能.如圖3所示.
圖3 報(bào)文聚合數(shù)據(jù)流圖Fig.3 Message aggregation data flow diagram
參與報(bào)文聚合的數(shù)據(jù)源的集合可以表示為一個(gè)多重集合,每一個(gè)子數(shù)據(jù)集可以看作一個(gè)被其他聚合節(jié)點(diǎn)完成聚合的聚合數(shù)據(jù)集:
Ni={{s11,s12,…,s1n},…,{sm1,sm2,…,smn}}
(1)
Ni表示輸入節(jié)點(diǎn)的多源數(shù)據(jù),它可以是原始的SNMP Trap報(bào)文,也可以是經(jīng)過(guò)一定聚合操作后形成的聚合Trap報(bào)文,還可以既包含聚合報(bào)文也包含原始報(bào)文的組合.smn表示原始SNMP的Trap報(bào)文或聚合報(bào)文中不同的三元組.Ni集合中元素的順序不相關(guān),多源數(shù)據(jù)Ni經(jīng)過(guò)節(jié)點(diǎn)Ai之后輸出的結(jié)果為Oi,該節(jié)點(diǎn)進(jìn)行數(shù)據(jù)聚合,即實(shí)現(xiàn)了從Ni~Oi的映射.而數(shù)據(jù)經(jīng)過(guò)轉(zhuǎn)發(fā)節(jié)點(diǎn)T,其結(jié)果并沒有改變,只是產(chǎn)生了一定的時(shí)延,t時(shí)刻輸入的數(shù)據(jù)Dt變?yōu)閠+△t時(shí)刻的數(shù)據(jù)Dt+△t.本文定義如下4種函數(shù),描述數(shù)據(jù)在聚合過(guò)程中的操作:
定義1.數(shù)據(jù)聚合函數(shù).為了表示經(jīng)過(guò)聚合節(jié)點(diǎn)前后數(shù)據(jù)的變化情況,本文定義聚合函數(shù).數(shù)據(jù)聚合函數(shù)為多重集合N至結(jié)果集合O的映射,f:Nt→Ot.如果考慮時(shí)延的因素,時(shí)刻由t變?yōu)閠+△t,則聚合函數(shù)寫為f:Nt→Ot+△t.數(shù)據(jù)集Nt在聚合節(jié)點(diǎn)處進(jìn)行聚合操作,數(shù)據(jù)內(nèi)容發(fā)生變化,形成聚合數(shù)據(jù)集.
定義2.數(shù)據(jù)轉(zhuǎn)發(fā)函數(shù).為了表示經(jīng)過(guò)具備轉(zhuǎn)發(fā)功能的網(wǎng)元前后數(shù)據(jù)的變化情況,本文定義數(shù)據(jù)轉(zhuǎn)發(fā)函數(shù).數(shù)據(jù)轉(zhuǎn)發(fā)函數(shù)為t時(shí)刻的數(shù)據(jù)集合Dt~t+△t時(shí)刻的數(shù)據(jù)Dt+△t的映射,f:Dt→Dt+△t.數(shù)據(jù)集合Dt經(jīng)過(guò)轉(zhuǎn)發(fā)節(jié)點(diǎn)后,數(shù)據(jù)內(nèi)容不發(fā)生變化,只是產(chǎn)生時(shí)延.
定義3.可自分解的聚合函數(shù).為了表示聚合數(shù)據(jù)間是獨(dú)立且可互相分割的,本文定義可自分解的聚合函數(shù).如果一個(gè)聚合函數(shù)f:N→O滿足f(X∪Y)=f(X)∪f(wàn)(Y),則該聚合函數(shù)稱為可自分解的聚合函數(shù).本函數(shù)體現(xiàn)了聚合操作的獨(dú)立性,數(shù)據(jù)有效內(nèi)容不會(huì)因?yàn)榫酆隙煜?
定義4.可分解聚合函數(shù).為了表示數(shù)據(jù)生成的最終聚合結(jié)果與經(jīng)過(guò)聚合節(jié)點(diǎn)的先后順序無(wú)關(guān),本文定義可分解聚合函數(shù).如果聚合函數(shù)f:N→O,g:N1→O1,h:N2→O2,其中N=N1∪N2,滿足f(N)=g(N1)∪h(N2),則稱聚合函數(shù)f是可分解的,f可分解為g和h聚合操作.本定義體現(xiàn)了聚合操作的順序無(wú)關(guān)性,聚合順序不影響聚合結(jié)果的整體內(nèi)容.
以上4個(gè)函數(shù)是實(shí)現(xiàn)多報(bào)文聚合的關(guān)鍵,定義了數(shù)據(jù)流圖中聚合節(jié)點(diǎn)、轉(zhuǎn)發(fā)節(jié)點(diǎn)及聚合操作的基本邏輯.由于本文在3.2節(jié)分析了具體的聚合報(bào)文結(jié)構(gòu),即SNMP Trap報(bào)文轉(zhuǎn)換為三元組或四元組的形式,并且論證了原始Trap報(bào)文與三元組是一個(gè)雙射關(guān)系,不同三元組之間是獨(dú)立與不相關(guān)的,故上述4個(gè)函數(shù)可以通過(guò)編程進(jìn)行具體化實(shí)現(xiàn).同時(shí),這四個(gè)函數(shù)也約束了聚合操作的性質(zhì).
算法1給出了Trap報(bào)文聚合算法的詳細(xì)描述.算法的輸入是一個(gè)聚合服務(wù)器監(jiān)聽到的原始Trap報(bào)文N,輸出是聚合報(bào)文P.聚合節(jié)點(diǎn)首先監(jiān)聽并緩存原始Trap報(bào)文Ni(第2行),之后判斷收集的原始Trap報(bào)文是否滿足聚合條件(第3行),若不滿足聚合條件則繼續(xù)監(jiān)聽(第13~14行),否則遍歷已緩存的Trap報(bào)文,提取每條Trap報(bào)文的三元組,并進(jìn)行單條數(shù)據(jù)的構(gòu)建和編碼(第4~12行).在完成已緩存的Trap報(bào)文的處理后,將已經(jīng)構(gòu)建并編碼的數(shù)據(jù)作為UDP負(fù)載,封裝成聚合報(bào)文(第15行),最后將聚合報(bào)文發(fā)送至SNMP Manager(第16行).
算法1.Trap報(bào)文聚合算法
輸入:若干原始Trap報(bào)文N
輸出:聚合報(bào)文P
1.begin
2.while 聚合節(jié)點(diǎn)監(jiān)聽并緩存Trap報(bào)文N
3. if(當(dāng)前聚合報(bào)文滿足聚合規(guī)則)
4. for(在N中遍歷已緩存的Trap報(bào)文)
5. if(當(dāng)前遍歷的Trap報(bào)文msgi為自定義消息)
6. tuplei=get_specific(msgi);//提取自定義類三元組
7. else://當(dāng)前遍歷的Trap報(bào)文msgi為非自定義消息
8. tuplei=get_generic(msgi);//提取非自定義類三元組
9. item_rawi=construct_item(tuplei);//構(gòu)建單條數(shù)據(jù)
10. itemi=encode_BER(item_rawi);//對(duì)單條數(shù)據(jù)編碼與保存
11. End if
12. End for
13. else://若不滿足當(dāng)前聚合規(guī)則
14. continue;//繼續(xù)監(jiān)聽Trap報(bào)文
15. P=construct_packet(item);//將編碼后的數(shù)據(jù)構(gòu)建成聚合包
16. send(P);//發(fā)送聚合報(bào)文
17. End if
18.End
3.4.1 聚合操作對(duì)管理流量降低效果分析
本文提出的聚合算法通過(guò)提取SNMP Trap報(bào)文中的有效信息,形成若干三元組并進(jìn)行聚合,最終將聚合數(shù)據(jù)封裝到UDP包中.在性能分析中,本文主要分析聚合操作對(duì)主干網(wǎng)管理流量降低的效果.為了方便分析,本文根據(jù)聚合方法定義及Trap包結(jié)構(gòu)分析聚合操作的壓縮效率.
根據(jù)SNMP Trap報(bào)文的控制字段信息,本文定義如表2所示的符號(hào).其中H為包含UDP頭部、IP頭部以及以太網(wǎng)頭部的頭部長(zhǎng)度.其他在計(jì)算中會(huì)用到的固定長(zhǎng)度參數(shù)為:Version占用固定長(zhǎng)度為1B,SNMP類型固定長(zhǎng)度為2B,Agent Address固定長(zhǎng)度4B,Generic Trap Type固定長(zhǎng)度為1B.
表2 符號(hào)及定義Table 2 Symbols and definitions
為了進(jìn)行Trap報(bào)文聚合算法對(duì)管理流量減少情況的分析,本文假設(shè)對(duì)N個(gè)報(bào)文進(jìn)行傳輸,得到的總傳輸長(zhǎng)度為:
Len=N×(H+K+C+E+S+T+8)
(2)
根據(jù)表2定義,Trap報(bào)文只有自定義類型和非自定義類型兩種事件分類,故有m+n=N,得到聚合后的總傳輸長(zhǎng)度為:
Len′=H+C+N×(K+4+T)+m+n×(E+S)
(3)
所以,根據(jù)公式(2)、公式(3)可以得到聚合前后壓縮的比例為:
Ratio=Len′/Len
(4)
還可以得到聚合前后的總長(zhǎng)度差為:
Diff=Len-Len′
(5)
Diff=(N-1)(H+C)+m×(E+S)+4N-m
(6)
根據(jù)公式(5)、公式(6)可以得出:對(duì)于單次聚合,當(dāng)參與聚合的數(shù)據(jù)包數(shù)量增加時(shí),可以減少主干網(wǎng)中用于設(shè)備管理的流量開銷,其開銷減少的部分主要來(lái)自Trap包的封裝字段,如IP,UDP包頭,以及標(biāo)識(shí)不同Trap報(bào)文的類型字段(即公式中H,C,E,S).
為便于理論分析,本文將聚合的數(shù)據(jù)包組成分為如下3種情況:
1)當(dāng)N→+∞且m→N時(shí),存在:
Len′=N×(K+5+T)
(7)
Ratio=(K+T+5)/(H+K+C+E+S+T+8)
(8)
分析式(8)可知,當(dāng)參與聚合的報(bào)文中的Variable Bindings鍵值對(duì)(即式中K)平均長(zhǎng)度越長(zhǎng),聚合方法的效果越差,而Trap報(bào)文中在Variable Bindings處僅傳遞少量關(guān)鍵信息,故所得的Ratio值會(huì)較小,聚合效果較好.
2)當(dāng)N→+∞,且m→0時(shí),存在:
Len′=N×(K+T+E+S+4)
(9)
Ratio=(K+T+E+S+4)/(H+H+C+E+S+T+8)
(10)
由于E和S在真實(shí)值中與K的大小相比較小,從公式(9)可知,Ratio同樣取決于K的大小,即Variable Bindings 鍵值對(duì)長(zhǎng)度.當(dāng)鍵值對(duì)長(zhǎng)度越長(zhǎng),聚合方法的效果越差,反之聚合效果越好.
3)當(dāng)N→+∞,且m+n=N時(shí),聚合效果Ratio介于 1)和2)之間,同樣受到K的顯著影響.
綜合上述分析,經(jīng)過(guò)報(bào)文聚合后,應(yīng)用SNMP產(chǎn)生的Trap報(bào)文在主干網(wǎng)中的資源開銷顯著減小,這樣的聚合方式可以有效的應(yīng)用在SNMP Trap報(bào)文的轉(zhuǎn)發(fā)當(dāng)中.對(duì)于SNMP的Response類型的報(bào)文,報(bào)文聚合的效果不如Trap 報(bào)文聚合高效.這是因?yàn)镽esponse報(bào)文需要通過(guò)Variable Bindings攜帶Agent與Manager通信的參數(shù)信息,故其內(nèi)容非常豐富,使得其長(zhǎng)度較長(zhǎng),經(jīng)過(guò)報(bào)文聚合后的壓縮效果較Trap報(bào)文聚合差.以上分析同樣驗(yàn)證了本文采用Trap報(bào)文聚合來(lái)降低主干網(wǎng)管理開銷的合理性.
3.4.2 聚合操作對(duì)網(wǎng)絡(luò)時(shí)延的影響分析
由于Trap報(bào)文的長(zhǎng)度較短,Trap報(bào)文聚合操作本身對(duì)時(shí)延影響較小,所以影響時(shí)延的因素主要是不同Trap報(bào)文類型在聚合節(jié)點(diǎn)處為形成聚合報(bào)文,所需等待的時(shí)延.對(duì)于緊急的Trap報(bào)文,其不進(jìn)行聚合操作而直接轉(zhuǎn)發(fā),它的Trap報(bào)文時(shí)延與正常發(fā)送時(shí)相同.而對(duì)于非緊急的Trap報(bào)文,本文設(shè)計(jì)了兩種聚合條件,來(lái)同時(shí)控制聚合算法,以便將聚合時(shí)延控制在較小值.這兩種聚合條件為:
1)聚合節(jié)點(diǎn)等待固定時(shí)間間隔實(shí)施一次聚合操作,例如10s.
2)聚合節(jié)點(diǎn)收到一定數(shù)量的Trap報(bào)文后,完成一次聚合操作,例如收到10個(gè)非緊急的Trap報(bào)文,這時(shí)不必等待固定時(shí)間間隔結(jié)束,直接實(shí)施聚合操作.
在擁有海量設(shè)備的異構(gòu)網(wǎng)絡(luò)中,由于Agent發(fā)出Trap報(bào)文具有不確定性,為了保證聚合操作的時(shí)延可控,本文在非緊急報(bào)文聚合中采用上述兩種聚合規(guī)則,即滿足任一聚合條件時(shí),聚合節(jié)點(diǎn)封裝聚合報(bào)文并發(fā)送給管理站.因此,聚合操作的最大時(shí)延不會(huì)超過(guò)條件1)中設(shè)定的固定時(shí)間間隔,如果網(wǎng)絡(luò)中非緊急的Trap報(bào)文較多,則聚合節(jié)點(diǎn)收到一定數(shù)量的Trap報(bào)文即可實(shí)施聚合操作,不必等到固定時(shí)間間隔結(jié)束.這樣一方面可以提高聚合效率,另一方面當(dāng)網(wǎng)絡(luò)中非緊急報(bào)文較少時(shí),依然可以有效控制聚合操作的時(shí)延.
在SDN環(huán)境下,網(wǎng)絡(luò)的轉(zhuǎn)發(fā)情況與傳統(tǒng)網(wǎng)絡(luò)不同.因?yàn)?SDN中的控制邏輯與轉(zhuǎn)發(fā)功能分離,控制功能由控制器實(shí)現(xiàn),而轉(zhuǎn)發(fā)功能由交換機(jī)實(shí)現(xiàn),所以本文抽象出如圖4所示的數(shù)據(jù)流動(dòng)的有向圖進(jìn)行分析.
圖4 SDN下的報(bào)文聚合數(shù)據(jù)流圖Fig.4 Message aggregation data flow diagram based on SDN
如圖4所示,基于SDN的報(bào)文聚合模型在網(wǎng)絡(luò)中加入了控制器節(jié)點(diǎn)C,并且調(diào)整了轉(zhuǎn)發(fā)的路由.控制器節(jié)點(diǎn)C負(fù)責(zé)向交換機(jī)下發(fā)流表規(guī)則,以及負(fù)責(zé)網(wǎng)絡(luò)路由的相關(guān)功能.由此SDN下SNMP Trap報(bào)文的聚合數(shù)據(jù)流可以抽象為一個(gè)有向圖.由于Agents端所發(fā)出的Trap報(bào)文的類型不同,聚合操作也是多樣的.
在聚合時(shí)本文將SNMP的Trap報(bào)文分為緊急類型和非緊急類型.在3.1節(jié)中已經(jīng)介紹了Trap報(bào)文Generic Trap Type的含義.根據(jù)其含義,本文將其中的LinkDown,EgpNeighborLoss, coldStart類型定義為緊急類型,而其他類型定義為非緊急類型.LinkDown表示一個(gè)Agent的接口變?yōu)楣收蠣顟B(tài).由于接入設(shè)備的種類、設(shè)備的功能是不確定的,所以需要管理端及時(shí)對(duì)產(chǎn)生故障的接口進(jìn)行處理,避免重要設(shè)備出現(xiàn)斷路.EgpNeighborLoss表示鄰站出現(xiàn)故障,由于鄰站出現(xiàn)問題可能預(yù)示著跨域通信產(chǎn)生異常,故此類異常需要管理端進(jìn)行及時(shí)的介入與查看,避免網(wǎng)絡(luò)整體通信出現(xiàn)問題.coldStart表示Agent進(jìn)行初始化,其可能表示Agent一般重啟,也可能表示Agent配置更改后的重啟.管理端需要及時(shí)追蹤設(shè)備的配置情況,保證管理端對(duì)設(shè)備的正常監(jiān)控,否則管理端可能丟失對(duì)設(shè)備的監(jiān)控.本文認(rèn)為其余的Trap類型,相對(duì)于此3種類型重要程度較弱,故管理端可以忍受聚合帶來(lái)的額外時(shí)延,從而達(dá)到SNMP管理流量削減的目的.
具體來(lái)說(shuō),Agents需要根據(jù)Trap報(bào)文類型,合理設(shè)置發(fā)送的目標(biāo)地址.對(duì)于緊急類型的Trap報(bào)文,Agents不發(fā)送至聚合節(jié)點(diǎn),不進(jìn)行聚合操作,而是直接通過(guò)轉(zhuǎn)發(fā)節(jié)點(diǎn),快速發(fā)送至SNMP 管理端.而對(duì)于非緊急的Trap 報(bào)文,則按照聚合方法經(jīng)過(guò)聚合節(jié)點(diǎn)的多次聚合后,再發(fā)送至SNMP 管理端.除此之外,在聚合時(shí)可以采用等待固定時(shí)延聚合和固定個(gè)數(shù)聚合兩種方式.等待固定時(shí)延聚合即聚合節(jié)點(diǎn)等待固定的時(shí)間,并收集等待時(shí)間內(nèi)經(jīng)過(guò)的非緊急Trap報(bào)文并進(jìn)行聚合操作,完成聚合后將報(bào)文目標(biāo)地址改寫并發(fā)送.固定個(gè)數(shù)聚合即為聚合節(jié)點(diǎn)收集固定個(gè)數(shù)的非緊急Trap報(bào)文,組成一個(gè)聚合包并發(fā)送至下一個(gè)節(jié)點(diǎn).
如圖5所示,結(jié)合第3章提出的Trap報(bào)文聚合算法,本文設(shè)計(jì)了多域下基于SDN的網(wǎng)絡(luò)管理架構(gòu),其主要由6大組件構(gòu)成.
圖5 基于SDN的網(wǎng)絡(luò)管理架構(gòu)圖Fig.5 SDN based network management architecture diagram
各組件模塊的功能說(shuō)明如下:
SNMP Agent根據(jù)本域網(wǎng)絡(luò)管理中預(yù)設(shè)的條件和規(guī)則以Trap報(bào)文形式向SNMP Manager報(bào)告當(dāng)前的管理對(duì)象狀態(tài).同時(shí),SNMP Agent承擔(dān)SNMP協(xié)議中Agent的功能,接收與處理管理站發(fā)來(lái)的Set、Get類指令,并根據(jù)自身狀態(tài)向管理站發(fā)送Trap報(bào)文與Response類報(bào)文.
OpenFlow Switch使用OpenFlow協(xié)議同SDN控制器進(jìn)行通信,同時(shí)根據(jù)流表中的規(guī)則轉(zhuǎn)發(fā)報(bào)文數(shù)據(jù).
SDN Controller通過(guò)南向接口接收數(shù)據(jù)平面的狀態(tài)和事件信息,同時(shí)進(jìn)行流表規(guī)則的下發(fā).除此之外,還可以為Application提供北向可編程接口.
Application根據(jù)控制器的北向接口,對(duì)控制器的二次編程實(shí)現(xiàn)控制器的定制化業(yè)務(wù),例如定制流表轉(zhuǎn)發(fā)規(guī)則,定制交換機(jī)事件處理規(guī)則等.
Aggregation Server接收來(lái)自網(wǎng)絡(luò)的Trap報(bào)文數(shù)據(jù),根據(jù)報(bào)文的類型和優(yōu)先級(jí)進(jìn)行計(jì)算,形成聚合報(bào)文,并發(fā)送聚合后的數(shù)據(jù)至下一跳網(wǎng)絡(luò)設(shè)備.
SNMP Manager是傳統(tǒng)的SNMP管理站,演化為接收來(lái)自聚合服務(wù)器的聚合報(bào)文數(shù)據(jù),并對(duì)聚合數(shù)據(jù)進(jìn)行拆分和解析.
在跨域網(wǎng)絡(luò)管理的條件下,每個(gè)域的轉(zhuǎn)發(fā)策略由該域的控制器進(jìn)行管理,域的聚合功能由域內(nèi)專用聚合服務(wù)器節(jié)點(diǎn)來(lái)實(shí)現(xiàn).初始啟動(dòng)時(shí),自治域中的控制器根據(jù)SNMP Agent的報(bào)文特征及Manager和Controller所預(yù)設(shè)的配置信息,向本域內(nèi)的OpenFlow交換機(jī)下發(fā)流表規(guī)則.這些規(guī)則分成2 種類型,控制器根據(jù)本域的網(wǎng)絡(luò)拓?fù)湫畔?判斷管理站是否在本域之內(nèi):
1)如果管理站位于本域,則Trap報(bào)文的目的地址直接設(shè)為管理站.
2)如果管理站不在本域中,則Trap報(bào)文的目的地址設(shè)為本域內(nèi)聚合服務(wù)器的地址.
SNMP Agent按照SNMP規(guī)則發(fā)送Trap報(bào)文.聚合服務(wù)器用于報(bào)文的聚合計(jì)算操作,然后將聚合之后的結(jié)果再發(fā)送至遠(yuǎn)程的SNMP Manager.整個(gè)過(guò)程中,SNMP Agent發(fā)送報(bào)文的目標(biāo)地址并不需要設(shè)置為遠(yuǎn)程Manager的IP地址.對(duì)于非緊急類型的Trap報(bào)文,無(wú)論使用何種傳播形式,這些Trap報(bào)文數(shù)據(jù)包最終轉(zhuǎn)發(fā)目的地址總是聚合服務(wù)器,從而使得在網(wǎng)絡(luò)存在部分故障條件下,Trap報(bào)文數(shù)據(jù)總是能夠被聚合和采集到.對(duì)于緊急類型的Trap報(bào)文,其總是通過(guò)OpenFlow交換機(jī)轉(zhuǎn)發(fā)至Manager.
本架構(gòu)只需要定制化實(shí)現(xiàn)Controller、Application、Aggregation Server和SNMP Manager這4個(gè)模塊.由于各模塊具備獨(dú)立性與靈活性的特點(diǎn),用戶可以輕易地進(jìn)行連接和組裝,并在所管理的網(wǎng)絡(luò)中應(yīng)用.
為測(cè)試Trap報(bào)文聚合方法與網(wǎng)絡(luò)架構(gòu)的效果,本文在Linux環(huán)境下通過(guò)Python語(yǔ)言來(lái)搭建Trap報(bào)文聚合系統(tǒng).采用SDN的RYU開源控制器軟件[24]實(shí)現(xiàn)對(duì)全網(wǎng)交換機(jī)的控制,同時(shí)使用Mininet[25]仿真器進(jìn)行虛擬SDN網(wǎng)絡(luò)的構(gòu)建.為了更加真實(shí)的測(cè)試本文提出的聚合方法的性能,實(shí)驗(yàn)搭建了一個(gè)常用的啞鈴型網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示,該網(wǎng)絡(luò)包含2個(gè)控制器,6 個(gè)交換機(jī)以及若干接入設(shè)備,同時(shí)網(wǎng)絡(luò)部署2 個(gè)聚合服務(wù)器和1個(gè)SNMP Manager節(jié)點(diǎn)充當(dāng)接收聚合報(bào)文的服務(wù)器.兩部分SDN網(wǎng)絡(luò)可看作2個(gè)不同的自治域,并通過(guò)Scapy[26],dpkt[27]等包編程模擬設(shè)備的Trap報(bào)文隨機(jī)發(fā)包情況,并根據(jù)本文設(shè)計(jì)的聚合算法,實(shí)現(xiàn)了Trap報(bào)文的聚合.本實(shí)驗(yàn)主要評(píng)估路由器到SNMP Manager這段主干網(wǎng)的管理流量變化情況.
圖6 實(shí)驗(yàn)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.6 Experimental network structure diagram
實(shí)驗(yàn)通過(guò)控制SNMP Agent發(fā)送Trap報(bào)文,然后在聚合服務(wù)器端設(shè)置不同的聚合等待策略,分別等待2~100個(gè)不同數(shù)量Trap報(bào)文后進(jìn)行報(bào)文聚合.此外,還需要對(duì)Controller進(jìn)行編程,向網(wǎng)絡(luò)中的交換機(jī)下發(fā)流表,設(shè)置對(duì)緊急Trap報(bào)文的路由方式以及非緊急Trap報(bào)文的路由方式.本文的對(duì)比試驗(yàn)分別采用本文設(shè)計(jì)的聚合方法和不采用聚合方法的傳統(tǒng)網(wǎng)絡(luò)架構(gòu)下進(jìn)行對(duì)比試驗(yàn).針對(duì)重要的聚合參數(shù),如Trap報(bào)文聚合數(shù)量,本文還進(jìn)行了對(duì)比實(shí)驗(yàn).
實(shí)驗(yàn)數(shù)據(jù)采用模擬的snmp-trap報(bào)文,并通過(guò)重放 Pcap的方式在本地Mininet網(wǎng)絡(luò)中進(jìn)行實(shí)驗(yàn)和驗(yàn)證.Pcap文件中共包含5000個(gè)由不同節(jié)點(diǎn)上Agent發(fā)送到某定點(diǎn)SNMP Manager的trap報(bào)文.所采用的trap報(bào)文包平均長(zhǎng)度為141.56Bytes,實(shí)驗(yàn)數(shù)據(jù)的統(tǒng)計(jì)信息如表3所示.
表3 實(shí)驗(yàn)數(shù)據(jù)信息Table 3 Experimental data information
在正確性檢驗(yàn)中,實(shí)驗(yàn)規(guī)則為以每5個(gè)trap報(bào)文進(jìn)行一次聚合操作.實(shí)驗(yàn)效果通過(guò)監(jiān)聽交換機(jī)與SNMP Manger間的主干網(wǎng)流量波動(dòng)情況進(jìn)行評(píng)估,圖7顯示了聚合后發(fā)往主干網(wǎng)的Trap流量和未聚合操作直接由各agent發(fā)往主干網(wǎng)的Trap報(bào)文流量的對(duì)比情況.
圖7 聚合算法流量對(duì)比圖Fig.7 Traffic comparison diagram of aggregation algorithm
從圖7(a)中可以看出,原始SNMP的trap報(bào)文流量為1500Bytes/s,而聚合后的聚合報(bào)文流量約為1000Bytes/s,即經(jīng)過(guò)聚合后,Trap報(bào)文的平均流量是顯著小于未聚合時(shí).圖7中表示的并不是單純的流量傳輸速率,圖中折線與x軸圍成的面積表示的是實(shí)驗(yàn)中通過(guò)主干網(wǎng)的流量總和,可以看出聚合后主干網(wǎng)中原5000個(gè)trap數(shù)據(jù)包的流量總和大幅低于未聚合時(shí)的情況.除此之外,從圖7(b)、圖7(c)、圖7(d)中還看出聚合流量發(fā)送中存在周期性的突刺,這是由于聚合時(shí)需要先緩存部分trap報(bào)文,聚合完成后發(fā)出聚合包,而聚合包的包長(zhǎng)較大,從而在發(fā)送時(shí)產(chǎn)生周期性突發(fā)流量.因此,可以得出相對(duì)于直接發(fā)送大量trap報(bào)文,經(jīng)過(guò)本文提出的聚合算法可以大幅度減少trap報(bào)文在主干網(wǎng)中消耗的流量,在上述實(shí)驗(yàn)中主干網(wǎng)中trap報(bào)文流量下降了35.281%.
前述實(shí)驗(yàn)中,本文采用了每5個(gè)trap報(bào)文進(jìn)行一次聚合的規(guī)則,為了測(cè)試不同個(gè)數(shù)聚合對(duì)主干網(wǎng)流量的影響,接下來(lái)分別進(jìn)行5、10、15、20、25、50、75和100個(gè)報(bào)文的聚合對(duì)主干網(wǎng)中trap報(bào)文流量影響的實(shí)驗(yàn).所得實(shí)驗(yàn)結(jié)果部分如圖7及表4所示.
表4 聚合報(bào)文的數(shù)據(jù)信息Table 4 Aggregate message data information
從圖7(b)、圖7(c)、圖7(d)中可以看出,隨著聚合的數(shù)據(jù)包個(gè)數(shù)的增加,圖中的突刺越來(lái)越清晰,且峰值隨著報(bào)文聚合的個(gè)數(shù)增加而增加,最終呈現(xiàn)出脈沖的形式.這是由于數(shù)據(jù)包的聚合使最終形成的單個(gè)聚合包長(zhǎng)度增加,而且聚合需要滿足包的到達(dá)數(shù)量的要求,這就導(dǎo)致聚合服務(wù)器在聚合和傳輸中存在周期性的等待,從而在圖中體現(xiàn)出脈沖形式的流量圖線.
除此之外結(jié)合表4,隨著報(bào)文聚合個(gè)數(shù)的增加,trap聚合報(bào)文總流量呈下降趨勢(shì),這是由于隨著單次聚合所需的報(bào)文個(gè)數(shù)增加,聚合過(guò)程中丟棄的原始trap報(bào)文頭部字段增加,這就使得總體的流量呈現(xiàn)下降趨勢(shì).
圖8中橫軸表示形成一個(gè)聚合包需要的Trap報(bào)文個(gè)數(shù),縱軸表示5000個(gè)包總體流量開銷.從圖8中可以看出,采用本文設(shè)計(jì)的聚合方法,在聚合2~100個(gè)包的聚合實(shí)驗(yàn)中,可以得到平均40%的流量減少,這是由于本文的聚合方式減少了頭部無(wú)效信息,將有效信息以三元組的形式提取并存放于UDP的負(fù)載中,使整體流量下降.除此之外,當(dāng)聚合的包數(shù)量增加時(shí),流量節(jié)約趨于平緩,這是因?yàn)榫酆习念^部所占用的長(zhǎng)度較少,數(shù)據(jù)包整體長(zhǎng)度主要取決于其負(fù)載中所包括的有效信息長(zhǎng)度.所以,本文提出的算法不需要在單次聚合中等待大量數(shù)據(jù)就可以實(shí)現(xiàn)更加高效的流量控制.
圖8 聚合報(bào)文數(shù)量與Trap流量下降百分比關(guān)系Fig.8 Number of aggregated messages and flow decline rate diagram
為了測(cè)試聚合算法對(duì)trap報(bào)文發(fā)送時(shí)延的影響,本文對(duì)比了2~100個(gè)報(bào)文聚合時(shí)總體發(fā)送時(shí)延與未進(jìn)行報(bào)文聚合時(shí)總體發(fā)送時(shí)延的情況,實(shí)驗(yàn)結(jié)果如圖9所示.在實(shí)驗(yàn)中,我們分別以收集不同固定個(gè)數(shù)的Trap報(bào)文作為規(guī)則,進(jìn)行聚合操作并發(fā)送給管理站,以此來(lái)評(píng)估單次聚合操作中收集不同個(gè)數(shù)報(bào)文與時(shí)延的關(guān)系.
圖9 聚合報(bào)文個(gè)數(shù)與增加時(shí)延百分比關(guān)系Fig.9 Number of aggregated messages and increased delay rate diagram
圖9中橫軸表示形成一個(gè)聚合包需要的Trap報(bào)文個(gè)數(shù),縱軸表示發(fā)送相應(yīng)聚合包時(shí)增加的發(fā)送時(shí)間.從圖中可以看出,隨著聚合數(shù)據(jù)包數(shù)量的增加,對(duì)計(jì)算機(jī)的收發(fā)緩存以及處理時(shí)延會(huì)產(chǎn)生影響.在實(shí)驗(yàn)條件下,當(dāng)聚合數(shù)據(jù)包達(dá)到25個(gè)后,額外時(shí)延增加達(dá)到16.096%.隨著聚合數(shù)據(jù)包的數(shù)量增加,聚合一個(gè)包額外產(chǎn)生的時(shí)間開銷將會(huì)增大,且增幅越來(lái)越大.當(dāng)以100數(shù)據(jù)包為單位進(jìn)行聚合算法時(shí),發(fā)現(xiàn)額外時(shí)延增加達(dá)到79.089%.綜合圖8和圖9的實(shí)驗(yàn)結(jié)果,在實(shí)驗(yàn)中的理想聚合數(shù)據(jù)包個(gè)數(shù)在10~20間,此時(shí)的額外時(shí)延開銷在10%~15%,且壓縮比率達(dá)到近40%.
在應(yīng)用中,需要根據(jù)本設(shè)備管理網(wǎng)絡(luò)中常見的trap報(bào)文的長(zhǎng)度范圍及由此產(chǎn)生的聚合包的長(zhǎng)度范圍調(diào)整聚合包的個(gè)數(shù)及網(wǎng)卡的緩沖區(qū)大小,從而避免造成聚合時(shí)延過(guò)大導(dǎo)致數(shù)據(jù)包在緩沖區(qū)大量排隊(duì),進(jìn)一步填滿緩沖區(qū)的情況;另一方面,由于對(duì)大量數(shù)據(jù)包的聚合可能會(huì)拖慢CPU的處理效率導(dǎo)致聚合丟包,為此,需要考慮降低單次聚合的報(bào)文個(gè)數(shù),或采用多線程的方式進(jìn)行接收與聚合發(fā)送的處理.
本文針對(duì)應(yīng)用SNMP進(jìn)行多自治域、海量設(shè)備管理中存在的Trap報(bào)文消耗大量網(wǎng)絡(luò)資源的問題,提出了一種基于SDN的Trap報(bào)文聚合方法.該方法在引入報(bào)文聚合節(jié)點(diǎn)的基礎(chǔ)上,對(duì)特定的Trap報(bào)文類型進(jìn)行聚合與轉(zhuǎn)發(fā),從而降低Trap報(bào)文在主干網(wǎng)上的傳輸流量,優(yōu)化主干網(wǎng)絡(luò)性能.傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)下進(jìn)行網(wǎng)絡(luò)管理面臨的額外開銷大、靈活性差、管理站負(fù)載高的缺點(diǎn),本文提出了一種SDN下應(yīng)用SNMP進(jìn)行網(wǎng)絡(luò)設(shè)備管理的網(wǎng)絡(luò)架構(gòu).該架構(gòu)以SDN為基礎(chǔ)提高網(wǎng)絡(luò)的靈活性,同時(shí)減輕了管理站負(fù)載高的問題.實(shí)驗(yàn)結(jié)果表明,本文提出的聚合方法在保證管理數(shù)據(jù)完整性的同時(shí),顯著減少了主干網(wǎng)絡(luò)中的Trap報(bào)文的流量開銷,實(shí)現(xiàn)跨多個(gè)自治域的網(wǎng)絡(luò)管理數(shù)據(jù)采集的功能,具有較高的效率,能夠適用于大規(guī)模可擴(kuò)展性網(wǎng)絡(luò)的管理.在未來(lái)的研究中,將進(jìn)一步優(yōu)化聚合算法,將它擴(kuò)展至SNMP其它報(bào)文的聚合問題.