網管框架設計管理論文

時間:2022-06-30 03:10:00

導語:網管框架設計管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

網管框架設計管理論文

伴隨Internet時代的到來,網絡技術的迅猛發展,越來越多的企業、政府、學校、個人等都融入互聯網當中,網絡已經與人們的學習、工作及生活密不可分。而作為整個互聯網的基礎,電信網穩定、高效、準確的運行就顯得極為重要。要做到這一點,除了要依靠網絡設備本身和網絡架構的可靠性之外,還必須依靠一套有效的網絡管理手段來監測和管理整個網絡,而傳統的單層網絡管理模式已經無法適應現代網絡管理的需求。為了有效合理地管理現代網絡,國際電信聯盟電信標準化部門(ITU-T)于1988年,參考OSI系統管理框架提出了具有標準協議、接口和體系結構的管理網絡--電信管理網(TelecommunicationManagementNet,TMN),作為管理現代電信網的基礎。考慮將提供業務的電信網及其管理功能進行分離,使管理功能從電信網中獨立出來單獨組成一個網,即TMN。TMN制定了一系列的標準和管理功能,包括被管網元和網絡管理系統之間的接口均被標準化了。只要被管網元和網絡管理系統之間遵循TMN標準,完成一定的管理功能,就能夠實現不同廠商的不同設備以及不同網絡管理系統之間的互連互通操作。TMN體系結構按照不同的管理需求將整個電信網管理功能從低到高分作5層:網元層(NEL)、網元管理層(EML)、網絡管理層(NML)、業務管理層(SML)、事務管理層(BML)。

目前,由于實際技術水平和應用條件的限制,網絡管理主要集中在網元管理層和網絡管理層,真正業務級的管理還只停留在理論研究階段。網元管理層直接管理物理網絡,是整個管理系統的基礎。對電信網絡運營商來說,隨著通信業務量需求的成倍增長,網絡規模的日益膨脹,網元設備的種類和數量不斷增加,各個網元都有自己的管理系統,這給網絡的管理維護帶來了很多困難。為了提高網絡管理的效率,很有必要對各網元進行集中管理,實現在一個統一的平臺上管理各種設備。為了適應網絡管理系統可擴展性的要求,我們將設計模式的思想融入網絡管理框架設計中,保證該框架具有良好的靈活性和可擴展性。

2網絡管理協議

當前最典型的網絡管理協議有基于OSI七層模型的公共管理信息協議(CMIP)和基于TCP/IP的簡單網絡管理協議(SNMP)。OSI/CMIP系統管理模型是目前理論上最完備的網絡管理模型,是其他網絡管理模型的基本參考。但由于該模型比較復雜,實現代價高,因此并沒有得到廣泛的應用。相反,當初只是為了管理TCP/IP網絡的SNMP卻得到了迅速的發展和廣泛應用。SNMP網絡管理模型的突出特點是簡單、易于實現,因而得到了廠商的支持。特別是在Internet上的成功應用,使得它的重要性越來越突出,已經成為事實上的工業標準。

SNMP主要包括SMI(管理信息結構)、MIB(管理信息庫)和SNMP協議幾部分。SMI給出了管理對象定義的一般框架。MIB是設備所維護的全部被管理對象的結構集合。SNMP協議包括SNMP操作、SNMP信息的格式以及如何在應用程序和設備間交換消息。SNMP采用/管理站模型進行網絡管理。

3基于SNMP的統一網管框架設計

3.1總體結構設計

統一網管平臺提供一個高分布性,高擴展性的架構來保證應用的開發者可以用不同的方法來布置他們的網元管理系統。從橫向分層的角度來看,平臺可以分為支撐層(SupportLayer)、框架層(FrameworkLayer)和應用層(ApplicationLayer)。

統一網管平臺從軟件結構上講仍是C/S結構,包括網管服務器和網管終端兩大部分,通過網管服務器的級聯構成多級網管,實現多級網管的無縫集成。其中框架層和支撐層位于服務器端,應用層位于客戶端。

3.2支撐層的設計

支撐層作為系統支撐平臺為應用提供系統級的服務,包括消息服務、數據庫訪問和SNMP接口。支撐層是整個統一網管平臺的基礎。

3.2.1消息服務

消息服務為系統中所有模塊的交互提供支持,實現消息的路由轉發,根據消息類型,轉發到相應的處理模塊。消息的格式如下所示:

版本號

消息頭

消息數據

消息頭的定義如下:

typedefstructmsg{

void*mlink;//指向結構的指針,形成消息鏈表

PIDsender_pid;//發送進程標識

PIDreceiver_pid;//接收進程標識

BYTEmsg_type;//消息類型(2或3,表示同步或異步進程消息)

WORDevent_type;//事件類型

WORDmsg_length;//消息長度,不包括頭

}MSG_HEAD;

我們的系統使用的是非阻塞的異步消息機制,系統維護一個消息隊列,這個消息隊列用來存放系統各個模塊產生的消息。程序中有一小段程序代碼,叫做消息循環,用來從隊列中取出消息,并且將它們發送給相應的消息處理程序。代碼片斷如下:

while(GetNmMessage(&msg,NULL,0,0))

{

TranslateNmMessage(&msg);

DispatchNmMessage(&msg);

}

3.2.2數據庫訪問

數據庫訪問模塊提供所有訪問數據庫的接口調用,并維護數據庫連接池,其他模塊只需向其申請數據庫連接即可。

3.2.3SNMP接口

網管系統與網元的交互是基于SNMP協議的,在SNMP協議棧的實現中,我們采用了被廣泛使用的CMU(CarnegieMellonUniversity)開發的開放源代碼CMU-SNMP軟件包,該軟件包對SNMPv2c做了很好的實現。但是對于上層的開發人員來說,調用起來不是很方便。例如,一次SNMP操作,就要先后調用以下這些函數:

char*winsock_startup(void);

voidsnmp_synch_setup(structsnmp_session*Session);

structsnmp_session*snmp_open(structsnmp_session*session);

structsnmp_pdu*snmp_pdu_create(intcommand);

intsnmp_synch_response(structsnmp_session*Session,structsnmp_pdu*PDU,structsnmp_pdu**ResponsePDUP);

intsnmp_close(structsnmp_session*session);

為了方便業務開發人員,我們對該協議棧進行了簡單封裝。將CMU格式的SNMP消息結構轉換為本網管平臺內部使用的數據結構,并提供一系列便于使用的SNMP原子命令接口和其它輔助功能接口,為其上層應用和Trap監聽進程提供統一的支持。

通常,通過SNMP協議向SNMP發送請求,是通過使用MIB中定義的對象標識符(OID)來標識的。OID是用句點隔開的一組整數,使用起來很不方便,我們可以通過MIB樹中葉子的名稱來訪問和設置MIB樹中的數據,而不是通過枯燥的數字,方便開發人員進行開發。

以RFC1213定義的MIB-Ⅱ中的..dod.internet.mgmt.mib-2.system.sysName為例,其定義如下:

sysNameOBJECT-TYPE

SYNTAXDisplayString(SIZE(0..255))

MAX-ACCESSread-write

STATUScurrent

DESCRIPTION

"Anadministratively-assignednameforthismanagednode.

Byconvention,thisisthenode''''sfully-qualifieddomain

name.Ifthenameisunknown,thevalueisthezero-length

string."

::={system5}

如果我們要查詢系統的名稱,我們在發送GetRequest命令時需要使用1.3.6.1.2.1.1.5.0去向SNMP檢索它,這一長串的OID字符串在程序中的可讀性很差。我們采取的措施是建立一個Hash表,在SNMP模塊初始化的時候先對程序所使用的MIB進行分析,對sysName這個字符串進行Hash操作,將sysName、OID和DisplayString保存在Hash表中。在向上層應用提供的SNMPAPI中只需要對sysName.0進行操作,就能查詢到sysName的值,而不是通過枯燥的數字,方便開發人員進行開發。MakeHash函數如下所示:

ULONGMakeHash(char*str,ULONGlen)

{

ULONGn;

n=0;

#defineHASHCn=*str+++65587*n

if(len>0)

{

intloop;

loop=(len+8-1)>>3;

switch(len&(8-1))

{

case0:

do

{

HASHC;

case7:HASHC;

case6:HASHC;

case5:HASHC;

case4:HASHC;

case3:HASHC;

case2:HASHC;

case1:HASHC;

}while(--loop);

}

}

returnn;

}

另外,由于我們使用的CMU的SNMP協議棧是非線程安全的,而我們的上層應用是基于多線程的,因此,我們在對其進行封裝的過程中一個重要的任務就是使其線程安全,目前我們采取的方法是采用事件機制,每個SNMP原子命令執行前,都調用系統的同步機制函數等待一個事件對象mm_hSnmpEvent的觸發。

3.3框架層和應用層

針對網管系統這個特定的應用領域,我們抽取出一些公共的軟件框架,這些程序框架統稱為框架層。所有具體的管理應用都應該基于這個框架層提供的全部或者部分框架來開發。在具體的應用中,我們通過框架導出的API進行二次開發,如圖1所示。框架層分為公共服務功能、公共應用功能、工作站功能和網元中介功能四個部分。公共服務功能提供網管系統所公有的,和具體網元無關的服務功能,如安全、日志等。和網元相關的管理功能,如告警、性能、配置等,抽取其中的公共部分稱為公共應用功能。工作站功能實現客戶端GUI的展現功能,并提供圖形控件。網元中介功能實現網管系統和網元之間的接口轉換和適配功能。

應用層就是在平臺框架層的基礎上,提供具體的管理應用功能,如配置管理、性能管理、故障管理、安全管理等。這些功能都是可以拆卸的,應用在使用統一網絡管理平臺的時候,可以根據自己的具體需要來選擇需要裝載那些管理功能。

4結束語

本文介紹了針對網元層的基于SNMP的網絡管理框架,該框架是在Windows平臺上利用VisualC++開發出來的,實現了在一個統一平臺上對各種網元進行管理,具有良好的靈活性和可擴展性。通過對各網元進行集中管理,極大地提高了網絡管理的效率。但是本系統依賴于Windows平臺,在移植性上尚存諸多不足。目前,Java平臺在移植性上做得比較成功,但是對于電信級的網管平臺來說,其性能并不能滿足要求,與此同時,CORBA應用日益成熟,C++領域高性能的分布式網絡框架ACE的異軍突起,為我們提供了跨平臺的最好選擇。我們可以用Java開發客戶端GUI,用ACE框架來實現服務器端的網管功能,用CORBA實現客戶端與服務器端的通信,從而真正實現高性能,可移植的網絡管理框架。

參考文獻

[1]ManiSubramanian.網絡管理-原理與實踐(影印版).北京:高等教育出版社,2001

[2]郭軍.網絡管理[M].北京:北京郵電大學出版社,2001

[3]賢道,安常青.網絡管理協議及應用開發[M].北京:清華大學出版社,1998

[4]DouglasMauro,KevinSchmidt.EssentialSNMP[M].O′Reilly&Associates,2001

[5]RFC1157.ASimpleNetworkManagementProtocol[S]

DesignandImplementationoftheUniformNetworkManagementSystemBasedonSNMP

(ComputerCenterofEastChinaNormalUniversity,ShangHai,200062)

Abstract:Afterthebriefintroductionofnetworkmanagement,thispaperdesignsandimplementstheuniformnetworkmanagementsystembasedonobject-orientedtechnology.