SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)研究論文
時(shí)間:2022-09-17 05:47:00
導(dǎo)語(yǔ):SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要隨著計(jì)算機(jī)網(wǎng)絡(luò)的高速發(fā)展,網(wǎng)絡(luò)管理變的日趨復(fù)雜,為了提高網(wǎng)絡(luò)設(shè)備和服務(wù)管理的智能性和可操作性,對(duì)網(wǎng)絡(luò)拓?fù)涓咝Ф鴾?zhǔn)確地發(fā)現(xiàn)成為網(wǎng)絡(luò)管理中重要的環(huán)節(jié)。
關(guān)鍵詞網(wǎng)絡(luò)拓?fù)洌缓?jiǎn)單網(wǎng)絡(luò)管理協(xié)議;管理信息庫(kù);網(wǎng)絡(luò)管理;三層拓?fù)浒l(fā)現(xiàn);二層拓?fù)浒l(fā)現(xiàn)
1引言
現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)迅猛發(fā)展,網(wǎng)絡(luò)管理的任務(wù)也日趨復(fù)雜,而保證網(wǎng)絡(luò)管理系統(tǒng)高效運(yùn)行的基礎(chǔ)正是網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)。網(wǎng)絡(luò)拓?fù)浔憩F(xiàn)為計(jì)算機(jī)網(wǎng)絡(luò)中各設(shè)備之間的連接關(guān)系。網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)更能提高網(wǎng)絡(luò)故障管理、計(jì)量管理、配置和名稱(chēng)管理、性能管理和安全管理的性能,其原理是利用協(xié)議收集網(wǎng)絡(luò)中各設(shè)備的信息,通過(guò)某種算法生成完整的拓?fù)浣Y(jié)構(gòu)顯示出來(lái)。本文介紹的就是基于snmp協(xié)議的網(wǎng)絡(luò)拓?fù)?/a>發(fā)現(xiàn)。
2簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP及MIB信息庫(kù)概述
2.1SNMP概述
SNMP名為“簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議”,SNMP基于TCP/IP協(xié)議工作,對(duì)網(wǎng)絡(luò)中支持SNMP協(xié)議的設(shè)備進(jìn)行管理,通過(guò)SNMP協(xié)議,管理員可以與各種類(lèi)型支持SNMP協(xié)議的設(shè)備進(jìn)行通信,從而進(jìn)行網(wǎng)絡(luò)管理。在具體實(shí)現(xiàn)上,SNMP為管理員提供了一個(gè)網(wǎng)管平臺(tái)(NMS),又稱(chēng)為管理站或管理器,負(fù)責(zé)網(wǎng)管命令發(fā)出,數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)分析等。被監(jiān)管的設(shè)備上則運(yùn)行一個(gè)SNMP(Agent),又稱(chēng)為器,實(shí)現(xiàn)設(shè)備與管理站的SNMP通信,圖1描述了SNMP協(xié)議的邏輯結(jié)構(gòu)[1]。
圖1SNMP協(xié)議的邏輯結(jié)構(gòu)
1990年5月,RFC1157定義了SNMP的第一個(gè)版本SNMPv1。RFC1157和另一個(gè)關(guān)于管理信息的文件RFC1155一起提供了一種監(jiān)控和管理計(jì)算機(jī)網(wǎng)絡(luò)的系統(tǒng)方法。因此,SNMP得到了廣泛應(yīng)用,并成為網(wǎng)絡(luò)管理的事實(shí)上的標(biāo)準(zhǔn)。90年代初SNMP得到了迅猛發(fā)展,同時(shí)也暴露出了明顯的不足,例如難以實(shí)現(xiàn)大量的數(shù)據(jù)傳輸,缺少身份驗(yàn)證和加密機(jī)制。因此,1993年了SNMPv2,提高效率和性能,同時(shí)還支持分布式網(wǎng)絡(luò)的管理等,但是,SNMPv2并沒(méi)有完全實(shí)現(xiàn)預(yù)期的目標(biāo),尤其是安全性能沒(méi)有得到提高,如:身份驗(yàn)證(如用戶初始接入時(shí)的身份驗(yàn)證、信息完整性的分析、重復(fù)操作的預(yù)防)、加密、授權(quán)和訪問(wèn)控制、適當(dāng)?shù)倪h(yuǎn)程安全配置和管理能力等都沒(méi)有實(shí)現(xiàn)。1996年的SNMPv2c是SNMPv2的修改版本,功能增強(qiáng)了,但是安全性能仍沒(méi)有得到改善,繼續(xù)使用SNMPv1的基于明文密鑰的身份驗(yàn)證方式。IETFSNMPv3工作組于1998年1月提出了互聯(lián)網(wǎng)建議RFC2271-2275,正式形成SNMPv3。這一系列文件定義了包含SNMPv1、SNMPv2所有功能在內(nèi)的體系框架和包含驗(yàn)證服務(wù)和加密服務(wù)在內(nèi)的全新的安全機(jī)制,同時(shí)還規(guī)定了一套專(zhuān)門(mén)的網(wǎng)絡(luò)安全和訪問(wèn)控制規(guī)則。可以說(shuō),SNMPv3是在SNMPv2基礎(chǔ)之上增加了安全和管理機(jī)制。
2.2MIB信息庫(kù)
TCP/IP網(wǎng)絡(luò)管理系統(tǒng)的基礎(chǔ)是含有被管理元素信息的數(shù)據(jù)庫(kù),其在TCP/IP和OSI環(huán)境下稱(chēng)為MIB。每個(gè)被管理資源表示成一個(gè)對(duì)象,MIB是這些對(duì)象的結(jié)構(gòu)化集合。MIB是一個(gè)樹(shù)型結(jié)構(gòu)的數(shù)據(jù)庫(kù)。網(wǎng)絡(luò)中的每個(gè)系統(tǒng),比如工作站,服務(wù)器,路由器等,都維護(hù)一個(gè)可以反映被管理資源在系統(tǒng)中狀態(tài)的信息庫(kù),通過(guò)讀取信息庫(kù)中對(duì)象的值,管理站可以監(jiān)視系統(tǒng)中的資源,也可以通過(guò)修改某些值來(lái)控制系統(tǒng)中的資源。信息庫(kù)中對(duì)象的類(lèi)型,意義由MIB定義,管理站和端按同一個(gè)MIB作為接口通信,可以互相理解數(shù)據(jù)的意義,實(shí)現(xiàn)管理。
MIB樹(shù)的頂級(jí)對(duì)象有三個(gè),即ccitt,iso和這兩個(gè)組織的聯(lián)合體joint-iso-ccitt(見(jiàn)圖2)。在iso的下面有一個(gè)美國(guó)國(guó)防部dod(DepartmentofDefense)的子樹(shù)(標(biāo)號(hào)是6),再下面就是Internet(標(biāo)號(hào)是1)。在只討論Internet中的對(duì)象時(shí),可只畫(huà)出Internet以下的子樹(shù)(圖中的虛線方框),并在Internet結(jié)點(diǎn)旁邊標(biāo)注上{1.3.6.1}即可。在Internet結(jié)點(diǎn)下面的第二個(gè)結(jié)點(diǎn)是mgmt(管理),標(biāo)號(hào)是2。再下面是管理信息庫(kù),原先的結(jié)點(diǎn)名是mib。1991年定義了新的版本MIB-II,故結(jié)點(diǎn)名現(xiàn)改為mib-2,其標(biāo)識(shí)為{1.3.6.1.2.1},或{Internet(1).2.1}。這種標(biāo)識(shí)為對(duì)象標(biāo)識(shí)符。最初的結(jié)點(diǎn)mib將其所管理的信息分為8個(gè)類(lèi)別,現(xiàn)在mib-2所包含的信息類(lèi)別已超過(guò)40個(gè)。應(yīng)當(dāng)指出,MIB的定義與具體的網(wǎng)絡(luò)管理協(xié)議無(wú)關(guān),這對(duì)于廠商和用戶都有利。廠商可以在產(chǎn)品(如路由器)中包含SNMP軟件,并保證在定義新的MIB項(xiàng)目后該軟件仍遵守標(biāo)準(zhǔn)。用戶可以使用同一網(wǎng)絡(luò)管理客戶軟件來(lái)管理具有不同版本的MIB的多個(gè)路由器。當(dāng)然,一個(gè)沒(méi)有新的MIB項(xiàng)目的路由器不能提供這些項(xiàng)目的信息。
圖2
2.3SNMP支持的操作
SNMP共有5種操作:
(1)GetRequest讀對(duì)象值操作,使管理站能夠從被管理設(shè)備的中檢索對(duì)象的值。
(2)GetNextRequest讀取當(dāng)前對(duì)象的下一個(gè)可讀取的對(duì)象的實(shí)例值。
(3)SetRequest管理站更新中對(duì)象的值。
(4)GetResponse對(duì)GetRequest/GetNextRequest/SetRequest3種操作的應(yīng)答。
(5)Trap向管理站發(fā)送對(duì)象值。
3基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)
利用SNMP進(jìn)行拓?fù)浒l(fā)現(xiàn)實(shí)質(zhì)上就是扮演管理者角色的工作站讀取被管理設(shè)備的MIB庫(kù)中相關(guān)信息來(lái)實(shí)現(xiàn)的。每個(gè)設(shè)備維護(hù)一個(gè)MIB庫(kù),里面由此設(shè)備相關(guān)信息,使用SNMP管理網(wǎng)絡(luò)最大的優(yōu)點(diǎn)就是可以實(shí)時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)涞淖兏灿衅渚窒扌裕幢还芾淼脑O(shè)備都要支持SNMP[2]。在網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,最主要的是路由器之間的連接關(guān)系和子網(wǎng)劃分情況,所以網(wǎng)絡(luò)拓?fù)潢P(guān)系構(gòu)建的要點(diǎn)如下:
(1)在網(wǎng)絡(luò)拓?fù)潢P(guān)系中,主要的組成元素包括網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備,如路由器、交換機(jī)以及子網(wǎng)、網(wǎng)橋、網(wǎng)絡(luò)中的主機(jī)等。
(2)路由器、交換機(jī)及其端口配置是構(gòu)建拓?fù)潢P(guān)系的關(guān)鍵。
網(wǎng)絡(luò)結(jié)構(gòu)是分層次管理的,所以拓?fù)浒l(fā)現(xiàn)也應(yīng)以分層方式來(lái)發(fā)現(xiàn)。路由器工作在網(wǎng)絡(luò)層并且通常我們稱(chēng)網(wǎng)絡(luò)層為第三層,所以以發(fā)現(xiàn)路由器和子網(wǎng)連接結(jié)構(gòu)的拓?fù)浒l(fā)現(xiàn)我們稱(chēng)作三層拓?fù)浒l(fā)現(xiàn),子網(wǎng)中主機(jī)發(fā)現(xiàn)也屬于三層拓?fù)浒l(fā)現(xiàn),因?yàn)椴捎玫姆椒ㄖ饕€是依據(jù)IP地址操作來(lái)發(fā)現(xiàn)的;而處于數(shù)據(jù)鏈路層的交換機(jī),網(wǎng)橋獲取我們可以稱(chēng)作二層拓?fù)浒l(fā)現(xiàn)。
3.1三層拓?fù)浒l(fā)現(xiàn)
三層拓?fù)浒l(fā)現(xiàn)主要是通過(guò)對(duì)路由表的讀取來(lái)獲取相關(guān)IP信息來(lái)實(shí)現(xiàn),圖3是一個(gè)路由表信息圖。
圖3路由表信息圖
Destination表示路由的目的地址網(wǎng)絡(luò)號(hào)。
Gateway表示下一跳的路由器或網(wǎng)關(guān)地址。
Genmask表示子網(wǎng)掩碼。
Iface表示此路由的出口。
數(shù)據(jù)包在路由過(guò)程中,先將它的目的IP依次和路由表中的子網(wǎng)掩碼按位與操作,然后分別和每行的目的地址網(wǎng)絡(luò)號(hào)比較,如果相同,則發(fā)到Gateway標(biāo)示的下一跳,如果沒(méi)有匹配的則發(fā)送至默認(rèn)網(wǎng)關(guān),上圖最后一行表示了此路由表的默認(rèn)網(wǎng)關(guān)為192.168.1.1。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)在其模型上實(shí)質(zhì)是一個(gè)圖結(jié)構(gòu),路由器可以看作圖的頂點(diǎn),網(wǎng)絡(luò)的連接狀況由圖的邊來(lái)表示,所以說(shuō)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn)是對(duì)圖的遍歷過(guò)程。圖的遍歷主要有兩種方法,即深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)。由于拓?fù)浒l(fā)現(xiàn)采用分層的方式,所以采用廣度優(yōu)先搜索。獲取管理工作站所在網(wǎng)絡(luò)的默認(rèn)網(wǎng)關(guān)地址(通過(guò)本地路由表獲得)。默認(rèn)網(wǎng)關(guān)的進(jìn)程返回默認(rèn)網(wǎng)關(guān)的ipRouteTable,可以獲得網(wǎng)絡(luò)中更多的路由器信息,將其放入隊(duì)列(實(shí)現(xiàn)BFS的數(shù)據(jù)結(jié)構(gòu))中,利用先進(jìn)先出的特性依次訪問(wèn)各個(gè)路由,重復(fù)這兩步。訪問(wèn)過(guò)程中根據(jù)路由器各接口的連接類(lèi)型來(lái)判斷是否直連的是局域網(wǎng)(direct類(lèi)型),記錄其子網(wǎng)號(hào)和掩碼。
實(shí)際中會(huì)對(duì)拓?fù)浒l(fā)現(xiàn)的范圍進(jìn)行限制,我們可以利用ipRouteMetric(路由器的跳數(shù))來(lái)進(jìn)行限制,獲取相應(yīng)子網(wǎng)類(lèi)型的信息可以通過(guò)MIB-II中的ifTable中的ifType字段來(lái)獲取,ifType定義如下:
ifTypeOBJECT-TYPE
SYNTAXINTEGER{
other(1),
regular1822(2),
hdh1822(3),
ddn-x25(4),
rfc877-x25(5),
ethernet-csmacd(6),
iso88023-csmacd(7),
iso88024-tokenBus(8),
iso88025-tokenRing(9),
iso88026-man(10),
starLan(11),
proteon-10Mbit(12),
proteon-80Mbit(13),
hyperchannel(14),
fddi(15),
lapb(16),
sdlc(17),
ds1(18),
e1(19),
basicISDN(20),
primaryISDN(21),
propPointToPointSerial(22),
ppp(23),
softwareLoopback(24),
eon(25),--CLNPoverIP[11]
ethernet-3Mbit(26),
nsip(27),--XNSoverIP
slip(28),--genericSLIP
ultra(29),--ULTRAtechnologies
ds3(30),--T-3
sip(31),--SMDS
frame-relay(32)
}
ACCESSread-only
STATUSmandatory
DESCRIPTION
"Thetypeofinterface,distinguishedaccordingto
thephysical/linkprotocol(s)immediately`below''''
thenetworklayerintheprotocolstack."
::={ifEntry3}
因?yàn)閕pRouteTable中的ipRouteIfIndex和ifTable中的ifIndex是一一對(duì)應(yīng)的,所以可以通過(guò)ifIndex獲得它對(duì)應(yīng)的ifType,從而獲取子網(wǎng)類(lèi)型。
子網(wǎng)內(nèi)主機(jī)的發(fā)現(xiàn),我們最常用的方法就是ping命令了,檢查目的主機(jī)是否是活動(dòng)的[3]。ping命令依靠ICMP來(lái)獲取目的主機(jī)的活動(dòng)狀態(tài)信息,前提是我們知道目的主機(jī)的IP地址,但是它的效率很低,只能通過(guò)“窮舉法”來(lái)猜測(cè),例如一個(gè)子網(wǎng)172.21.13.0/24,它可以有254臺(tái)主機(jī),如果使用ping的話我們只能一個(gè)一個(gè)的猜測(cè),可能實(shí)際中主機(jī)的數(shù)目要遠(yuǎn)遠(yuǎn)小于254(針對(duì)本例來(lái)說(shuō)),所以這種方法不可取。
MIB-II中存在一個(gè)ipNetToMediaTable對(duì)象,它記錄了網(wǎng)絡(luò)地址到物理地址的映射信息,子網(wǎng)中活動(dòng)主機(jī)必然要在其網(wǎng)關(guān)的ipNetToMediaTable中注冊(cè)自己的信息,ipNetToMediaTable定義如下:
ipNetToMediaTableOBJECT-TYPE
SYNTAXSEQUENCEOFIpNetToMediaEntry
ACCESSnot-accessible
STATUSmandatory
DESCRIPTION
"TheIPAddressTranslationtableusedformapping
fromIPaddressestophysicaladdresses."
::={ip22}
ipNetToMediaEntryOBJECT-TYPE
SYNTAXIpNetToMediaEntry
ACCESSnot-accessible
STATUSmandatory
DESCRIPTION
"EachentrycontainsoneIpAddressto`physical''''
addressequivalence."
INDEX{ipNetToMediaIfIndex,
ipNetToMediaNetAddress}
::={ipNetToMediaTable1}
IpNetToMediaEntry::=
SEQUENCE{
ipNetToMediaIfIndex----------------------對(duì)應(yīng)路由表的Iface
INTEGER,
ipNetToMediaPhysAddress---------------------主機(jī)物理地址
PhysAddress,
ipNetToMediaNetAddress---------------------主機(jī)網(wǎng)絡(luò)地址
IpAddress,
ipNetToMediaType
INTEGER
}
我們可以通過(guò)ipNetToMediaNetAddress獲取和此路由器或網(wǎng)關(guān)連接的子網(wǎng)內(nèi)所有主機(jī)的IP,然后分別和路由表中的子網(wǎng)掩碼按位與就得到了它是屬于哪個(gè)子網(wǎng)了,當(dāng)然我們也可以用ipNetToMediaIfIndex來(lái)關(guān)聯(lián)主機(jī)所屬的子網(wǎng)號(hào)。
3.2二層拓?fù)浒l(fā)現(xiàn)
子網(wǎng)中的交換機(jī)和網(wǎng)橋其工作方式是基于設(shè)備的物理地址進(jìn)行的,對(duì)于三層拓?fù)浒l(fā)現(xiàn)是透明的,所以處于數(shù)據(jù)鏈路層的網(wǎng)絡(luò)設(shè)備的發(fā)現(xiàn)原理是依據(jù)地址轉(zhuǎn)發(fā)表來(lái)收集拓?fù)湫畔⒌摹D壳暗纳虡I(yè)系統(tǒng)如HP的OpenView不支持二層拓?fù)浒l(fā)現(xiàn),僅僅依靠網(wǎng)絡(luò)層的拓?fù)浣Y(jié)構(gòu)已不能滿足現(xiàn)在網(wǎng)絡(luò)管理的要求,對(duì)于二層拓?fù)浒l(fā)現(xiàn)的研究應(yīng)早日提上日程。
支持SNMP的交換機(jī)應(yīng)該實(shí)現(xiàn)Bridge-MIB(RFC1493),當(dāng)子網(wǎng)有交換機(jī)互聯(lián)網(wǎng)絡(luò)時(shí),我們應(yīng)先獲取交換機(jī)各個(gè)端口的狀態(tài)然后才能高效地進(jìn)行拓?fù)浒l(fā)現(xiàn),MAU-MIB(RFC2239)中的ifMauTable對(duì)象的ifMauStatus記錄了交換機(jī)各端口的工作狀態(tài),一共有六種狀態(tài),我們可以根據(jù)狀態(tài)值判斷來(lái)決定收集有用端口的地址轉(zhuǎn)發(fā)信息。確定交換機(jī)的可用端口后,就可以收集端口地址轉(zhuǎn)發(fā)信息了,通過(guò)讀取交換機(jī)Bridge-MIB中的dot1dTpFdbTable表,定義如下:
dot1dTpFdbTableOBJECT-TYPE
SYNTAXSEQUENCEOFDot1dTpFdbEntry
ACCESSnot-accessible
STATUSmandatory
DESCRIPTION
"Atablethatcontainsinformationaboutunicast
entriesforwhichthebridgehasforwardingand/or
filteringinformation.Thisinformationisused
bythetransparentbridgingfunctionin
determininghowtopropagateareceivedframe."
::={dot1dTp3}
dot1dTpFdbEntryOBJECT-TYPE
SYNTAXDot1dTpFdbEntry
ACCESSnot-accessible
STATUSmandatory
DESCRIPTION
"InformationaboutaspecificunicastMACaddress
forwhichthebridgehassomeforwardingand/or
filteringinformation."
INDEX{dot1dTpFdbAddress}
::={dot1dTpFdbTable1}
Dot1dTpFdbEntry::=
SEQUENCE{
dot1dTpFdbAddress
MacAddress,
dot1dTpFdbPort
INTEGER,
dot1dTpFdbStatus
INTEGER
}
......
Dot1dTpFdbAddress表示物理地址,dot1dTpFdbPort表示源數(shù)據(jù)幀主機(jī)通信的端口,dot1dTpFdbStatus表式端口狀態(tài),共有五種。這里我們感興趣的是前兩者。然后我們將此表信息和前述ipNetToMediaTable表進(jìn)行關(guān)聯(lián),通過(guò)Dot1dTpFdbAddress是否和ipNetToMediaTable中的ipNetToMediaPhysAddress相同來(lái)獲取ipNetToMediaNetAddress(即主機(jī)IP),根據(jù)前述已經(jīng)獲得的子網(wǎng)號(hào)和各主機(jī)IP我們就可以實(shí)現(xiàn)拓?fù)浒l(fā)現(xiàn)了。
4結(jié)束語(yǔ)
拓?fù)浒l(fā)現(xiàn)是網(wǎng)絡(luò)管理中一個(gè)難點(diǎn),受限于網(wǎng)絡(luò)的復(fù)雜性和網(wǎng)絡(luò)協(xié)議的多樣性,做到對(duì)網(wǎng)絡(luò)中所有設(shè)備完整準(zhǔn)確的發(fā)現(xiàn)是非常困難的,利用SNMP進(jìn)行拓?fù)浒l(fā)現(xiàn)的優(yōu)點(diǎn)在于發(fā)現(xiàn)速度快,容易實(shí)現(xiàn),前提是要被發(fā)現(xiàn)的設(shè)備要支持SNMP協(xié)議。對(duì)于不支持SNMP的設(shè)備則無(wú)能為力,所以要想對(duì)于各種網(wǎng)絡(luò)的各種設(shè)備進(jìn)行拓?fù)浒l(fā)現(xiàn),應(yīng)該運(yùn)用多種技術(shù),比如利用traceroute來(lái)跟蹤路由過(guò)程和DNS中的設(shè)備信息發(fā)現(xiàn)新的設(shè)備集合。這些方法各有優(yōu)缺點(diǎn),應(yīng)該根據(jù)實(shí)際需要有選擇地結(jié)合它們,使得發(fā)現(xiàn)算法更加有效合理[4]。
參考文獻(xiàn)
[1]李明江著,SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議電子工業(yè)出版社2007
[2]晏明峰李靜等著,用SNMP管理互聯(lián)網(wǎng)絡(luò)中國(guó)水利水電出版社2001
[3]KevinSchmidtDouglasMauro,EssentialSNMP,2ndEditionOreilly2005
[4]MarkA.Miller,P.E.ManagingInternetworksWithSNMP(3rdEdition)