SNMP的網絡拓撲發現研究論文

時間:2022-09-17 05:47:00

導語:SNMP的網絡拓撲發現研究論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

SNMP的網絡拓撲發現研究論文

摘要隨著計算機網絡的高速發展,網絡管理變的日趨復雜,為了提高網絡設備和服務管理的智能性和可操作性,對網絡拓撲高效而準確地發現成為網絡管理中重要的環節。

關鍵詞網絡拓撲;簡單網絡管理協議;管理信息庫;網絡管理;三層拓撲發現;二層拓撲發現

1引言

現代計算機網絡迅猛發展,網絡管理的任務也日趨復雜,而保證網絡管理系統高效運行的基礎正是網絡拓撲發現。網絡拓撲表現為計算機網絡中各設備之間的連接關系。網絡拓撲發現更能提高網絡故障管理、計量管理、配置和名稱管理、性能管理和安全管理的性能,其原理是利用協議收集網絡中各設備的信息,通過某種算法生成完整的拓撲結構顯示出來。本文介紹的就是基于snmp協議的網絡拓撲發現

2簡單網絡管理協議SNMP及MIB信息庫概述

2.1SNMP概述

SNMP名為“簡單網絡管理協議”,SNMP基于TCP/IP協議工作,對網絡中支持SNMP協議的設備進行管理,通過SNMP協議,管理員可以與各種類型支持SNMP協議的設備進行通信,從而進行網絡管理。在具體實現上,SNMP為管理員提供了一個網管平臺(NMS),又稱為管理站或管理器,負責網管命令發出,數據存儲及數據分析等。被監管的設備上則運行一個SNMP(Agent),又稱為器,實現設備與管理站的SNMP通信,圖1描述了SNMP協議的邏輯結構[1]。

圖1SNMP協議的邏輯結構

1990年5月,RFC1157定義了SNMP的第一個版本SNMPv1。RFC1157和另一個關于管理信息的文件RFC1155一起提供了一種監控和管理計算機網絡的系統方法。因此,SNMP得到了廣泛應用,并成為網絡管理的事實上的標準。90年代初SNMP得到了迅猛發展,同時也暴露出了明顯的不足,例如難以實現大量的數據傳輸,缺少身份驗證和加密機制。因此,1993年了SNMPv2,提高效率和性能,同時還支持分布式網絡的管理等,但是,SNMPv2并沒有完全實現預期的目標,尤其是安全性能沒有得到提高,如:身份驗證(如用戶初始接入時的身份驗證、信息完整性的分析、重復操作的預防)、加密、授權和訪問控制、適當的遠程安全配置和管理能力等都沒有實現。1996年的SNMPv2c是SNMPv2的修改版本,功能增強了,但是安全性能仍沒有得到改善,繼續使用SNMPv1的基于明文密鑰的身份驗證方式。IETFSNMPv3工作組于1998年1月提出了互聯網建議RFC2271-2275,正式形成SNMPv3。這一系列文件定義了包含SNMPv1、SNMPv2所有功能在內的體系框架和包含驗證服務和加密服務在內的全新的安全機制,同時還規定了一套專門的網絡安全和訪問控制規則。可以說,SNMPv3是在SNMPv2基礎之上增加了安全和管理機制。

2.2MIB信息庫

TCP/IP網絡管理系統的基礎是含有被管理元素信息的數據庫,其在TCP/IP和OSI環境下稱為MIB。每個被管理資源表示成一個對象,MIB是這些對象的結構化集合。MIB是一個樹型結構的數據庫。網絡中的每個系統,比如工作站,服務器,路由器等,都維護一個可以反映被管理資源在系統中狀態的信息庫,通過讀取信息庫中對象的值,管理站可以監視系統中的資源,也可以通過修改某些值來控制系統中的資源。信息庫中對象的類型,意義由MIB定義,管理站和端按同一個MIB作為接口通信,可以互相理解數據的意義,實現管理。

MIB樹的頂級對象有三個,即ccitt,iso和這兩個組織的聯合體joint-iso-ccitt(見圖2)。在iso的下面有一個美國國防部dod(DepartmentofDefense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子樹(圖中的虛線方框),并在Internet結點旁邊標注上{1.3.6.1}即可。在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB-II,故結點名現改為mib-2,其標識為{1.3.6.1.2.1},或{Internet(1).2.1}。這種標識為對象標識符。最初的結點mib將其所管理的信息分為8個類別,現在mib-2所包含的信息類別已超過40個。應當指出,MIB的定義與具體的網絡管理協議無關,這對于廠商和用戶都有利。廠商可以在產品(如路由器)中包含SNMP軟件,并保證在定義新的MIB項目后該軟件仍遵守標準。用戶可以使用同一網絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。

圖2

2.3SNMP支持的操作

SNMP共有5種操作:

(1)GetRequest讀對象值操作,使管理站能夠從被管理設備的中檢索對象的值。

(2)GetNextRequest讀取當前對象的下一個可讀取的對象的實例值。

(3)SetRequest管理站更新中對象的值。

(4)GetResponse對GetRequest/GetNextRequest/SetRequest3種操作的應答。

(5)Trap向管理站發送對象值。

3基于SNMP協議的拓撲發現

利用SNMP進行拓撲發現實質上就是扮演管理者角色的工作站讀取被管理設備的MIB庫中相關信息來實現的。每個設備維護一個MIB庫,里面由此設備相關信息,使用SNMP管理網絡最大的優點就是可以實時發現網絡拓撲的變更,但也有其局限性,即被管理的設備都要支持SNMP[2]。在網絡拓撲結構中,最主要的是路由器之間的連接關系和子網劃分情況,所以網絡拓撲關系構建的要點如下:

(1)在網絡拓撲關系中,主要的組成元素包括網絡節點設備,如路由器、交換機以及子網、網橋、網絡中的主機等。

(2)路由器、交換機及其端口配置是構建拓撲關系的關鍵。

網絡結構是分層次管理的,所以拓撲發現也應以分層方式來發現。路由器工作在網絡層并且通常我們稱網絡層為第三層,所以以發現路由器和子網連接結構的拓撲發現我們稱作三層拓撲發現,子網中主機發現也屬于三層拓撲發現,因為采用的方法主要還是依據IP地址操作來發現的;而處于數據鏈路層的交換機,網橋獲取我們可以稱作二層拓撲發現。

3.1三層拓撲發現

三層拓撲發現主要是通過對路由表的讀取來獲取相關IP信息來實現,圖3是一個路由表信息圖。

圖3路由表信息圖

Destination表示路由的目的地址網絡號。

Gateway表示下一跳的路由器或網關地址。

Genmask表示子網掩碼。

Iface表示此路由的出口。

數據包在路由過程中,先將它的目的IP依次和路由表中的子網掩碼按位與操作,然后分別和每行的目的地址網絡號比較,如果相同,則發到Gateway標示的下一跳,如果沒有匹配的則發送至默認網關,上圖最后一行表示了此路由表的默認網關為192.168.1.1。網絡拓撲結構在其模型上實質是一個圖結構,路由器可以看作圖的頂點,網絡的連接狀況由圖的邊來表示,所以說網絡拓撲結構的發現是對圖的遍歷過程。圖的遍歷主要有兩種方法,即深度優先搜索(DFS)和廣度優先搜索(BFS)。由于拓撲發現采用分層的方式,所以采用廣度優先搜索。獲取管理工作站所在網絡的默認網關地址(通過本地路由表獲得)。默認網關的進程返回默認網關的ipRouteTable,可以獲得網絡中更多的路由器信息,將其放入隊列(實現BFS的數據結構)中,利用先進先出的特性依次訪問各個路由,重復這兩步。訪問過程中根據路由器各接口的連接類型來判斷是否直連的是局域網(direct類型),記錄其子網號和掩碼。

實際中會對拓撲發現的范圍進行限制,我們可以利用ipRouteMetric(路由器的跳數)來進行限制,獲取相應子網類型的信息可以通過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,從而獲取子網類型。

子網內主機的發現,我們最常用的方法就是ping命令了,檢查目的主機是否是活動的[3]。ping命令依靠ICMP來獲取目的主機的活動狀態信息,前提是我們知道目的主機的IP地址,但是它的效率很低,只能通過“窮舉法”來猜測,例如一個子網172.21.13.0/24,它可以有254臺主機,如果使用ping的話我們只能一個一個的猜測,可能實際中主機的數目要遠遠小于254(針對本例來說),所以這種方法不可取。

MIB-II中存在一個ipNetToMediaTable對象,它記錄了網絡地址到物理地址的映射信息,子網中活動主機必然要在其網關的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---------------------主機網絡地址

IpAddress,

ipNetToMediaType

INTEGER

}

我們可以通過ipNetToMediaNetAddress獲取和此路由器或網關連接的子網內所有主機的IP,然后分別和路由表中的子網掩碼按位與就得到了它是屬于哪個子網了,當然我們也可以用ipNetToMediaIfIndex來關聯主機所屬的子網號。

3.2二層拓撲發現

子網中的交換機和網橋其工作方式是基于設備的物理地址進行的,對于三層拓撲發現是透明的,所以處于數據鏈路層的網絡設備的發現原理是依據地址轉發表來收集拓撲信息的。目前的商業系統如HP的OpenView不支持二層拓撲發現,僅僅依靠網絡層的拓撲結構已不能滿足現在網絡管理的要求,對于二層拓撲發現的研究應早日提上日程。

支持SNMP的交換機應該實現Bridge-MIB(RFC1493),當子網有交換機互聯網絡時,我們應先獲取交換機各個端口的狀態然后才能高效地進行拓撲發現,MAU-MIB(RFC2239)中的ifMauTable對象的ifMauStatus記錄了交換機各端口的工作狀態,一共有六種狀態,我們可以根據狀態值判斷來決定收集有用端口的地址轉發信息。確定交換機的可用端口后,就可以收集端口地址轉發信息了,通過讀取交換機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表示源數據幀主機通信的端口,dot1dTpFdbStatus表式端口狀態,共有五種。這里我們感興趣的是前兩者。然后我們將此表信息和前述ipNetToMediaTable表進行關聯,通過Dot1dTpFdbAddress是否和ipNetToMediaTable中的ipNetToMediaPhysAddress相同來獲取ipNetToMediaNetAddress(即主機IP),根據前述已經獲得的子網號和各主機IP我們就可以實現拓撲發現了。

4結束語

拓撲發現是網絡管理中一個難點,受限于網絡的復雜性和網絡協議的多樣性,做到對網絡中所有設備完整準確的發現是非常困難的,利用SNMP進行拓撲發現的優點在于發現速度快,容易實現,前提是要被發現的設備要支持SNMP協議。對于不支持SNMP的設備則無能為力,所以要想對于各種網絡的各種設備進行拓撲發現,應該運用多種技術,比如利用traceroute來跟蹤路由過程和DNS中的設備信息發現新的設備集合。這些方法各有優缺點,應該根據實際需要有選擇地結合它們,使得發現算法更加有效合理[4]。

參考文獻

[1]李明江著,SNMP簡單網絡管理協議電子工業出版社2007

[2]晏明峰李靜等著,用SNMP管理互聯網絡中國水利水電出版社2001

[3]KevinSchmidtDouglasMauro,EssentialSNMP,2ndEditionOreilly2005

[4]MarkA.Miller,P.E.ManagingInternetworksWithSNMP(3rdEdition)