一種基于snmp協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種計算機(jī)網(wǎng)絡(luò)拓?fù)涞臉?gòu)建方法,特別是一種基于SNMP協(xié)議的網(wǎng)絡(luò)拓 撲構(gòu)建方法。
【背景技術(shù)】
[0002] 近幾年,隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,手動繪制拓?fù)滹@得非常繁瑣并且難以更新,網(wǎng)絡(luò)拓 撲的自動構(gòu)建方法得到了快速發(fā)展,國內(nèi)外對拓?fù)錁?gòu)建方法的研究有很多,不過很多研究 都是基于局部范圍的。目前的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法可以按構(gòu)建范圍分為單管理域和多管理 域,按構(gòu)建協(xié)議層次可以分為網(wǎng)絡(luò)層拓?fù)錁?gòu)建和鏈路層拓?fù)錁?gòu)建,按構(gòu)建方法可以分為被 動探測和主動探測。目前,網(wǎng)絡(luò)拓?fù)涞淖詣訕?gòu)建仍然是一個富有挑戰(zhàn)的研究課題,研究出具 有高效、快速、完整及準(zhǔn)確性的拓?fù)錁?gòu)建方法絕非易事。特別是在針對具體網(wǎng)絡(luò)時,不同的 拓?fù)錁?gòu)建方法會有不同的性能和效率。傳統(tǒng)的手動構(gòu)建網(wǎng)絡(luò)拓?fù)浞椒?,主要存在著以下?點:拓?fù)錁?gòu)建效率低,拓?fù)涓虏患皶r,構(gòu)建拓?fù)湟壮霈F(xiàn)人工錯誤,對于復(fù)雜拓?fù)湟?guī)劃構(gòu)建 難度大;基于ICMP協(xié)議、基于RIP協(xié)議、基于DNS以及基于0SPF協(xié)議的拓?fù)錁?gòu)建方法使網(wǎng)絡(luò)負(fù) 載較高,可能造成局部網(wǎng)絡(luò)擁塞,不適用于網(wǎng)絡(luò)數(shù)據(jù)流量龐大的網(wǎng)絡(luò)。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于,提供一種基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法。本發(fā)明具有,構(gòu) 建效率高、網(wǎng)絡(luò)負(fù)載低和拓?fù)洳季趾侠淼奶攸c。
[0004] 本發(fā)明的技術(shù)方案:一種基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法,該構(gòu)建方法包括拓 撲ig息米集、信息提取、息過濾和拓?fù)錁?gòu)建。
[0005] 前述的基于S匪Ρ協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的拓?fù)湫畔⒉杉癁?,采用多線 程模式同時采集待構(gòu)建拓?fù)渚W(wǎng)絡(luò)中路由器SNMP協(xié)議的ΜΙΒ庫中實時存儲的SNMP信息,SNMP 信息包括設(shè)備端口 IP地址信息、端口信息和系統(tǒng)信息,將采集到的SNMP信息存入MySQL數(shù)據(jù) 庫中。
[0006] 前述的基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的多線程模式為,采集S匪P信 息時為每個路由器的拓?fù)湫畔⒉杉^程單獨創(chuàng)建一個線程,各個線程獨立使用net-snmp軟 件提供的SNMP數(shù)據(jù)請求命令。
[0007] 前述的基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的S匪P協(xié)議的MIB庫中的被管 理對象分組包括system組、interfaces組和ip組;所述的system組包括sysName字段;所述 的 interfaces 組包括 if Descr 字段;所述的 ip 組包括 ipAdEntAddr 和ipAdEntNetMask 字段。
[0008] 前述的基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的信息提取為,從MySQL數(shù)據(jù)庫 中提取最近同一時間段的sysName、if Descr、ipAdEntAddr和ipAdEntNetMask信息,然后將 信息按節(jié)點名稱、序號、端口類型、設(shè)備端口 IP地址和子網(wǎng)掩碼的順序存儲到內(nèi)存中;所述 的序號為同一節(jié)點的所有設(shè)備端口 IP地址的序號。
[0009] 前述的基于S匪P協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的信息過濾為,首先將接口類 型為Vlan、Loopback和Mul til ink的信息過濾掉,其次根據(jù)設(shè)備端口 IP地址以及子網(wǎng)掩碼進(jìn) 行"邏輯與"運算得出每個設(shè)備端口 IP地址所在的網(wǎng)絡(luò)號,根據(jù)網(wǎng)絡(luò)號,在所有設(shè)備端口 IP 地址中尋找屬于同一網(wǎng)絡(luò)號中的設(shè)備端口 IP地址,將重復(fù)為不同端口設(shè)置的相同設(shè)備端口 IP地址、設(shè)置后但未進(jìn)行連接的設(shè)備端口 IP地址進(jìn)行過濾,過濾后將屬于同一網(wǎng)絡(luò)號的設(shè) 備端口 IP地址保留,之后將保留的設(shè)備端口 IP地址生成拓?fù)錁?gòu)建文檔。
[0010] 前述的基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法中,所述的拓?fù)錁?gòu)建為,根據(jù)拓?fù)錁?gòu)建 文檔獲取網(wǎng)絡(luò)節(jié)點的端口 IP對,再根據(jù)端口所屬的路由器確認(rèn)各網(wǎng)絡(luò)節(jié)點間的端口 IP對的 數(shù)量,通過網(wǎng)絡(luò)節(jié)點和端口 IP對的數(shù)量構(gòu)建一個η X η的鄰接矩陣,η為網(wǎng)絡(luò)節(jié)點數(shù)量,鄰接 矩陣的元素為端口 IP對的數(shù)量,之后根據(jù)鄰接矩陣采用力導(dǎo)引布局算法進(jìn)行拓?fù)洳季帧?br>[0011] 與現(xiàn)有技術(shù)相比,本發(fā)明將經(jīng)由拓?fù)湫畔⒉杉腟NMP信息存入MySQL數(shù)據(jù)庫中,之 后從MySQL數(shù)據(jù)庫中進(jìn)行信息提取和信息過濾,通過該方法,實現(xiàn)了拓?fù)湫畔⒉杉^程與后 續(xù)的信息提取、信息過濾和拓?fù)錁?gòu)建過程分離,有效規(guī)避了拓?fù)湫畔⒉杉w時間可能較 長的問題,即不必等到拓?fù)湫畔⒉杉瓿珊笤匍_始進(jìn)行信息提取、信息過濾和拓?fù)錁?gòu)建,同 時對于拓?fù)浣Y(jié)構(gòu)相對穩(wěn)定的網(wǎng)絡(luò),可以直接從MySQL數(shù)據(jù)庫中提取信息過濾及恢復(fù)拓?fù)洌瑯O 大提高效率。相比手動構(gòu)建拓?fù)?,本發(fā)明能夠更加高效、快速和準(zhǔn)確地構(gòu)建網(wǎng)絡(luò)拓?fù)洹?br>[0012] 本發(fā)明對基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)溥M(jìn)行網(wǎng)絡(luò)拓?fù)湫畔⒉杉?,可以實時準(zhǔn)確地獲得 網(wǎng)絡(luò)節(jié)點信息即S匪P信息,并能夠根據(jù)實時采集的SNMP信息實時地更新所構(gòu)建的網(wǎng)絡(luò)拓 撲,不僅如此,在采集過程中造成的網(wǎng)絡(luò)負(fù)載低,不會對網(wǎng)絡(luò)特別是流量較大的網(wǎng)絡(luò)的正常 工作造成影響。
[0013] 本發(fā)明采用多線程模式進(jìn)行拓?fù)湫畔⒉杉?,采集時為每個路由器即網(wǎng)絡(luò)節(jié)點的 SNMP信息的采集過程單獨創(chuàng)建一個線程,各個線程獨立使用net-snmp軟件提供的SNMP數(shù)據(jù) 請求命令(snmpwalk),從路由器獲取前述指定S匪P信息,通過該方法,可以高效率、互不干 擾地采集網(wǎng)絡(luò)節(jié)點SNMP信息,避免因為網(wǎng)絡(luò)可能存在的網(wǎng)絡(luò)節(jié)點多、節(jié)點分布廣、傳輸延遲 高的特點造成采集時延高、效率低的情況。
[0014] 本發(fā)明在進(jìn)行拓?fù)錁?gòu)建時,采用力導(dǎo)引算法進(jìn)行拓?fù)洳季?,使得布局中?jié)點的分 散相對均勻,節(jié)點間交叉的連線較少,得到的拓?fù)洳季指雍侠怼?br>【附圖說明】
[0015] 圖1是net-snmp軟件提供的smmpwalk數(shù)據(jù)請求命令;
[0016] 圖2是采集到的SNMP協(xié)議中sysName字段信息示例;
[0017] 圖3是采集到的SNMP協(xié)議中ifDescr字段信息示例;
[0018] 圖4是米集到的SNMP協(xié)議中ipAdEntAddr和ipAdEntNetMask字段信息不例;
[0019] 圖5是拓?fù)錁?gòu)建文檔示例;
[0020] 圖6是構(gòu)建局部拓?fù)涫纠?br>【具體實施方式】
[0021] 下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的說明,但并不作為對本發(fā)明限制的依 據(jù)。
[0022] 實施例1。一種基于S匪P協(xié)議的網(wǎng)絡(luò)拓?fù)錁?gòu)建方法,該構(gòu)建方法包括拓?fù)湫畔⒉?集、信息提取、信息過濾和拓?fù)錁?gòu)建。
[0023] 前述的拓?fù)湫畔⒉杉癁?,采用多線程模式同時采集待構(gòu)建拓?fù)渚W(wǎng)絡(luò)中路由器SNMP 協(xié)議的MIB庫中實時存儲的SNMP信息,SNMP信息包括設(shè)備端口 IP地址信息、端口信息和系統(tǒng) 信息,將采集到的SNMP信息存入My SQL數(shù)據(jù)庫中。
[0024] 前述的拓?fù)湫畔⒉杉捎帽粍硬杉疭匪P信息方式,通過該方式,可針對網(wǎng)絡(luò)存在 的節(jié)點多、節(jié)點分布遠(yuǎn)和信息傳輸時延高的特點,采用多線程模式同時采集各個路由器上 SNMP信息,以提高采集效率,多線程模式具體為,采集SNMP信息時為每個路由器的拓?fù)湫畔?采集過程單獨創(chuàng)建一個線程,各個線程獨立使用net-snmp軟件提供的S匪P數(shù)據(jù)請求命令 (snmpwalk),請求命令如圖1所不,從路由器獲取指定的S匪P彳目息,米集時首先確認(rèn)待米集 節(jié)點(路由器)開啟SNMP協(xié)議,輸入網(wǎng)絡(luò)中所有待采集節(jié)點的某一設(shè)備端口 IP地址(一般為 回環(huán)地址),執(zhí)行采集程序,采集程序可以匹配待采集節(jié)點中SNMP協(xié)議MIB庫的五分鐘更新 速率,每五分鐘自動采集一次。
[0025] 前述的SNMP協(xié)議的MIB庫中的被管理對象分組包括system組、interfaces組、和ip 組。具體地,各組用到的對象如下:
[0026] system 組(節(jié)點 0ID 為 1 ·3·6·1·2·1·1)
[0027] system組對象中用到的主要對象是sysName。
[0029] interfaces 組(節(jié)點 0ID 為 1