SNMP的網(wǎng)絡拓撲發(fā)現(xiàn)研究論文
時間:2022-09-17 05:47:00
導語:SNMP的網(wǎng)絡拓撲發(fā)現(xiàn)研究論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要隨著計算機網(wǎng)絡的高速發(fā)展,網(wǎng)絡管理變的日趨復雜,為了提高網(wǎng)絡設備和服務管理的智能性和可操作性,對網(wǎng)絡拓撲高效而準確地發(fā)現(xiàn)成為網(wǎng)絡管理中重要的環(huán)節(jié)。
關鍵詞網(wǎng)絡拓撲;簡單網(wǎng)絡管理協(xié)議;管理信息庫;網(wǎng)絡管理;三層拓撲發(fā)現(xiàn);二層拓撲發(fā)現(xiàn)
1引言
現(xiàn)代計算機網(wǎng)絡迅猛發(fā)展,網(wǎng)絡管理的任務也日趨復雜,而保證網(wǎng)絡管理系統(tǒng)高效運行的基礎正是網(wǎng)絡拓撲發(fā)現(xiàn)。網(wǎng)絡拓撲表現(xiàn)為計算機網(wǎng)絡中各設備之間的連接關系。網(wǎng)絡拓撲發(fā)現(xiàn)更能提高網(wǎng)絡故障管理、計量管理、配置和名稱管理、性能管理和安全管理的性能,其原理是利用協(xié)議收集網(wǎng)絡中各設備的信息,通過某種算法生成完整的拓撲結構顯示出來。本文介紹的就是基于snmp協(xié)議的網(wǎng)絡拓撲發(fā)現(xiàn)。
2簡單網(wǎng)絡管理協(xié)議SNMP及MIB信息庫概述
2.1SNMP概述
SNMP名為“簡單網(wǎng)絡管理協(xié)議”,SNMP基于TCP/IP協(xié)議工作,對網(wǎng)絡中支持SNMP協(xié)議的設備進行管理,通過SNMP協(xié)議,管理員可以與各種類型支持SNMP協(xié)議的設備進行通信,從而進行網(wǎng)絡管理。在具體實現(xiàn)上,SNMP為管理員提供了一個網(wǎng)管平臺(NMS),又稱為管理站或管理器,負責網(wǎng)管命令發(fā)出,數(shù)據(jù)存儲及數(shù)據(jù)分析等。被監(jiān)管的設備上則運行一個SNMP(Agent),又稱為器,實現(xiàn)設備與管理站的SNMP通信,圖1描述了SNMP協(xié)議的邏輯結構[1]。
圖1SNMP協(xié)議的邏輯結構
1990年5月,RFC1157定義了SNMP的第一個版本SNMPv1。RFC1157和另一個關于管理信息的文件RFC1155一起提供了一種監(jiān)控和管理計算機網(wǎng)絡的系統(tǒng)方法。因此,SNMP得到了廣泛應用,并成為網(wǎng)絡管理的事實上的標準。90年代初SNMP得到了迅猛發(fā)展,同時也暴露出了明顯的不足,例如難以實現(xiàn)大量的數(shù)據(jù)傳輸,缺少身份驗證和加密機制。因此,1993年了SNMPv2,提高效率和性能,同時還支持分布式網(wǎng)絡的管理等,但是,SNMPv2并沒有完全實現(xiàn)預期的目標,尤其是安全性能沒有得到提高,如:身份驗證(如用戶初始接入時的身份驗證、信息完整性的分析、重復操作的預防)、加密、授權和訪問控制、適當?shù)倪h程安全配置和管理能力等都沒有實現(xiàn)。1996年的SNMPv2c是SNMPv2的修改版本,功能增強了,但是安全性能仍沒有得到改善,繼續(xù)使用SNMPv1的基于明文密鑰的身份驗證方式。IETFSNMPv3工作組于1998年1月提出了互聯(lián)網(wǎng)建議RFC2271-2275,正式形成SNMPv3。這一系列文件定義了包含SNMPv1、SNMPv2所有功能在內(nèi)的體系框架和包含驗證服務和加密服務在內(nèi)的全新的安全機制,同時還規(guī)定了一套專門的網(wǎng)絡安全和訪問控制規(guī)則??梢哉f,SNMPv3是在SNMPv2基礎之上增加了安全和管理機制。
2.2MIB信息庫
TCP/IP網(wǎng)絡管理系統(tǒng)的基礎是含有被管理元素信息的數(shù)據(jù)庫,其在TCP/IP和OSI環(huán)境下稱為MIB。每個被管理資源表示成一個對象,MIB是這些對象的結構化集合。MIB是一個樹型結構的數(shù)據(jù)庫。網(wǎng)絡中的每個系統(tǒng),比如工作站,服務器,路由器等,都維護一個可以反映被管理資源在系統(tǒng)中狀態(tài)的信息庫,通過讀取信息庫中對象的值,管理站可以監(jiān)視系統(tǒng)中的資源,也可以通過修改某些值來控制系統(tǒng)中的資源。信息庫中對象的類型,意義由MIB定義,管理站和端按同一個MIB作為接口通信,可以互相理解數(shù)據(jù)的意義,實現(xiàn)管理。
MIB樹的頂級對象有三個,即ccitt,iso和這兩個組織的聯(lián)合體joint-iso-ccitt(見圖2)。在iso的下面有一個美國國防部dod(DepartmentofDefense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子樹(圖中的虛線方框),并在Internet結點旁邊標注上{1.3.6.1}即可。在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB-II,故結點名現(xiàn)改為mib-2,其標識為{1.3.6.1.2.1},或{Internet(1).2.1}。這種標識為對象標識符。最初的結點mib將其所管理的信息分為8個類別,現(xiàn)在mib-2所包含的信息類別已超過40個。應當指出,MIB的定義與具體的網(wǎng)絡管理協(xié)議無關,這對于廠商和用戶都有利。廠商可以在產(chǎn)品(如路由器)中包含SNMP軟件,并保證在定義新的MIB項目后該軟件仍遵守標準。用戶可以使用同一網(wǎng)絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。
圖2
2.3SNMP支持的操作
SNMP共有5種操作:
(1)GetRequest讀對象值操作,使管理站能夠從被管理設備的中檢索對象的值。
(2)GetNextRequest讀取當前對象的下一個可讀取的對象的實例值。
(3)SetRequest管理站更新中對象的值。
(4)GetResponse對GetRequest/GetNextRequest/SetRequest3種操作的應答。
(5)Trap向管理站發(fā)送對象值。
3基于SNMP協(xié)議的拓撲發(fā)現(xiàn)
利用SNMP進行拓撲發(fā)現(xiàn)實質(zhì)上就是扮演管理者角色的工作站讀取被管理設備的MIB庫中相關信息來實現(xiàn)的。每個設備維護一個MIB庫,里面由此設備相關信息,使用SNMP管理網(wǎng)絡最大的優(yōu)點就是可以實時發(fā)現(xiàn)網(wǎng)絡拓撲的變更,但也有其局限性,即被管理的設備都要支持SNMP[2]。在網(wǎng)絡拓撲結構中,最主要的是路由器之間的連接關系和子網(wǎng)劃分情況,所以網(wǎng)絡拓撲關系構建的要點如下:
(1)在網(wǎng)絡拓撲關系中,主要的組成元素包括網(wǎng)絡節(jié)點設備,如路由器、交換機以及子網(wǎng)、網(wǎng)橋、網(wǎng)絡中的主機等。
(2)路由器、交換機及其端口配置是構建拓撲關系的關鍵。
網(wǎng)絡結構是分層次管理的,所以拓撲發(fā)現(xiàn)也應以分層方式來發(fā)現(xiàn)。路由器工作在網(wǎng)絡層并且通常我們稱網(wǎng)絡層為第三層,所以以發(fā)現(xiàn)路由器和子網(wǎng)連接結構的拓撲發(fā)現(xiàn)我們稱作三層拓撲發(fā)現(xiàn),子網(wǎng)中主機發(fā)現(xiàn)也屬于三層拓撲發(fā)現(xiàn),因為采用的方法主要還是依據(jù)IP地址操作來發(fā)現(xiàn)的;而處于數(shù)據(jù)鏈路層的交換機,網(wǎng)橋獲取我們可以稱作二層拓撲發(fā)現(xiàn)。
3.1三層拓撲發(fā)現(xiàn)
三層拓撲發(fā)現(xiàn)主要是通過對路由表的讀取來獲取相關IP信息來實現(xiàn),圖3是一個路由表信息圖。
圖3路由表信息圖
Destination表示路由的目的地址網(wǎng)絡號。
Gateway表示下一跳的路由器或網(wǎng)關地址。
Genmask表示子網(wǎng)掩碼。
Iface表示此路由的出口。
數(shù)據(jù)包在路由過程中,先將它的目的IP依次和路由表中的子網(wǎng)掩碼按位與操作,然后分別和每行的目的地址網(wǎng)絡號比較,如果相同,則發(fā)到Gateway標示的下一跳,如果沒有匹配的則發(fā)送至默認網(wǎng)關,上圖最后一行表示了此路由表的默認網(wǎng)關為192.168.1.1。網(wǎng)絡拓撲結構在其模型上實質(zhì)是一個圖結構,路由器可以看作圖的頂點,網(wǎng)絡的連接狀況由圖的邊來表示,所以說網(wǎng)絡拓撲結構的發(fā)現(xiàn)是對圖的遍歷過程。圖的遍歷主要有兩種方法,即深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)。由于拓撲發(fā)現(xiàn)采用分層的方式,所以采用廣度優(yōu)先搜索。獲取管理工作站所在網(wǎng)絡的默認網(wǎng)關地址(通過本地路由表獲得)。默認網(wǎng)關的進程返回默認網(wǎng)關的ipRouteTable,可以獲得網(wǎng)絡中更多的路由器信息,將其放入隊列(實現(xiàn)BFS的數(shù)據(jù)結構)中,利用先進先出的特性依次訪問各個路由,重復這兩步。訪問過程中根據(jù)路由器各接口的連接類型來判斷是否直連的是局域網(wǎng)(direct類型),記錄其子網(wǎng)號和掩碼。
實際中會對拓撲發(fā)現(xiàn)的范圍進行限制,我們可以利用ipRouteMetric(路由器的跳數(shù))來進行限制,獲取相應子網(wǎng)類型的信息可以通過MIB-II中的ifTable中的ifType字段來獲取,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}
因為ipRouteTable中的ipRouteIfIndex和ifTable中的ifIndex是一一對應的,所以可以通過ifIndex獲得它對應的ifType,從而獲取子網(wǎng)類型。
子網(wǎng)內(nèi)主機的發(fā)現(xiàn),我們最常用的方法就是ping命令了,檢查目的主機是否是活動的[3]。ping命令依靠ICMP來獲取目的主機的活動狀態(tài)信息,前提是我們知道目的主機的IP地址,但是它的效率很低,只能通過“窮舉法”來猜測,例如一個子網(wǎng)172.21.13.0/24,它可以有254臺主機,如果使用ping的話我們只能一個一個的猜測,可能實際中主機的數(shù)目要遠遠小于254(針對本例來說),所以這種方法不可取。
MIB-II中存在一個ipNetToMediaTable對象,它記錄了網(wǎng)絡地址到物理地址的映射信息,子網(wǎng)中活動主機必然要在其網(wǎng)關的ipNetToMediaTable中注冊自己的信息,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----------------------對應路由表的Iface
INTEGER,
ipNetToMediaPhysAddress---------------------主機物理地址
PhysAddress,
ipNetToMediaNetAddress---------------------主機網(wǎng)絡地址
IpAddress,
ipNetToMediaType
INTEGER
}
我們可以通過ipNetToMediaNetAddress獲取和此路由器或網(wǎng)關連接的子網(wǎng)內(nèi)所有主機的IP,然后分別和路由表中的子網(wǎng)掩碼按位與就得到了它是屬于哪個子網(wǎng)了,當然我們也可以用ipNetToMediaIfIndex來關聯(lián)主機所屬的子網(wǎng)號。
3.2二層拓撲發(fā)現(xiàn)
子網(wǎng)中的交換機和網(wǎng)橋其工作方式是基于設備的物理地址進行的,對于三層拓撲發(fā)現(xiàn)是透明的,所以處于數(shù)據(jù)鏈路層的網(wǎng)絡設備的發(fā)現(xiàn)原理是依據(jù)地址轉(zhuǎn)發(fā)表來收集拓撲信息的。目前的商業(yè)系統(tǒng)如HP的OpenView不支持二層拓撲發(fā)現(xiàn),僅僅依靠網(wǎng)絡層的拓撲結構已不能滿足現(xiàn)在網(wǎng)絡管理的要求,對于二層拓撲發(fā)現(xiàn)的研究應早日提上日程。
支持SNMP的交換機應該實現(xiàn)Bridge-MIB(RFC1493),當子網(wǎng)有交換機互聯(lián)網(wǎng)絡時,我們應先獲取交換機各個端口的狀態(tài)然后才能高效地進行拓撲發(fā)現(xiàn),MAU-MIB(RFC2239)中的ifMauTable對象的ifMauStatus記錄了交換機各端口的工作狀態(tài),一共有六種狀態(tài),我們可以根據(jù)狀態(tài)值判斷來決定收集有用端口的地址轉(zhuǎn)發(fā)信息。確定交換機的可用端口后,就可以收集端口地址轉(zhuǎn)發(fā)信息了,通過讀取交換機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ù)幀主機通信的端口,dot1dTpFdbStatus表式端口狀態(tài),共有五種。這里我們感興趣的是前兩者。然后我們將此表信息和前述ipNetToMediaTable表進行關聯(lián),通過Dot1dTpFdbAddress是否和ipNetToMediaTable中的ipNetToMediaPhysAddress相同來獲取ipNetToMediaNetAddress(即主機IP),根據(jù)前述已經(jīng)獲得的子網(wǎng)號和各主機IP我們就可以實現(xiàn)拓撲發(fā)現(xiàn)了。
4結束語
拓撲發(fā)現(xiàn)是網(wǎng)絡管理中一個難點,受限于網(wǎng)絡的復雜性和網(wǎng)絡協(xié)議的多樣性,做到對網(wǎng)絡中所有設備完整準確的發(fā)現(xiàn)是非常困難的,利用SNMP進行拓撲發(fā)現(xiàn)的優(yōu)點在于發(fā)現(xiàn)速度快,容易實現(xiàn),前提是要被發(fā)現(xiàn)的設備要支持SNMP協(xié)議。對于不支持SNMP的設備則無能為力,所以要想對于各種網(wǎng)絡的各種設備進行拓撲發(fā)現(xiàn),應該運用多種技術,比如利用traceroute來跟蹤路由過程和DNS中的設備信息發(fā)現(xiàn)新的設備集合。這些方法各有優(yōu)缺點,應該根據(jù)實際需要有選擇地結合它們,使得發(fā)現(xiàn)算法更加有效合理[4]。
參考文獻
[1]李明江著,SNMP簡單網(wǎng)絡管理協(xié)議電子工業(yè)出版社2007
[2]晏明峰李靜等著,用SNMP管理互聯(lián)網(wǎng)絡中國水利水電出版社2001
[3]KevinSchmidtDouglasMauro,EssentialSNMP,2ndEditionOreilly2005
[4]MarkA.Miller,P.E.ManagingInternetworksWithSNMP(3rdEdition)