本發明涉及網絡管理技術領域,具體涉及基于snmp協議的分布式異步管理電信設備的方法和系統。
背景技術:
snmp(simplenetworkmanagementprotocol)簡單網絡管理協議,snmp就是用來規定網管工作站中的網管軟件和網絡設備的代理(agent)之間是如何傳遞管理信息的應用層協議。
snmp協議標準中定義了管理的對象和一些基本的操作,該對象是指保存在網絡設備上的管理信息庫(mib),該操作包括獲取請求(get-request)、獲取下一請求(get-next-request)、獲取響應(get-response)、設置請求(set-request)和報告(trap)。利用snmp協議對信息管理庫mib和操作的定義,網管工作站中的網管軟件可以遠程管理所有支持這種協議的網絡設備,包括監視網絡狀態、修改網絡設備配置、接收網絡事件警告等。網管軟件在對基于snmp協議的網絡設備進行管理時,使用基于snmp協議的應用編程接口api函數直接向網絡設備發送請求操作,即使用snmp協議定義的上述五種操作對網絡設備進行訪問,網絡設備上的agent處理請求,并向網管軟件返回該網絡設備的配置信息。
但是,隨著電信運營商對電信設備的要求越來越高,尤其是電信設備擴容后硬件上對設備的級聯改造,由于現有的網管只能使用公網管理電信設備,使得公網壓力較大,所以現有的管理方式不能夠在不改變公網上層拓撲結構的情況下,管理改造后的電信設備。不能提升下游級聯設備的總體性能,無法滿足更多的用戶電信業務需求。
技術實現要素:
針對現有技術中存在的缺陷,本發明的目的在于提供基于snmp協議的分布式異步管理電信設備的方法和系統,用于公網網管與私網子代理設備間的通信,從而實現電信設備的級聯管理功能。
為達到以上目的,本發明采取的技術方案是:
一種基于snmp協議的分布式異步管理電信設備的方法,包括以下步驟:
s1,網管采用snmp協議向主代理設備發送原始snmp請求報文,所述原始snmp請求報文的udp報文包頭包括主代理snmp報文共同體名、主代理的snmp版本號和原始snmp報文請求id值,根據業務需求選擇性的在主代理snmp報文共同體上加入自定義snmp共同體名;
s2,主代理設備接收原始snmp請求報文后,判斷是否存在自定義snmp共同體名,否,則進行主代理設備處理,是,則進入s3;
s3,主代理設備根據自定義snmp共同體名將原始snmp請求報文重新封裝得到新的snmp請求報文,所述新的snmp請求報文包括子代理snmp共同體名、子代理snmp協議號、新的snmp報文請求id;同時,主代理設備將udp報文包頭和新的snmp報文請求id保存到nat轉發表,形成與所述原始snmp請求報文對應的nat轉發表條目;
s4,主代理設備將新的snmp請求報文發送給子代理設備后,子代理設備生成原始snmp響應報文,并發送給主代理,所述原始snmp響應報文包括新的snmp報文請求id;
s5,主代理接收到原始snmp響應報文后,查詢nat轉發表,找到對應的nat轉發表條目,重新封裝原始snmp響應報文,得到新的snmp響應報文,并轉發給網管,所述新的snmp響應報文包括udp報文包頭。
在上述技術方案的基礎上,還包括:
s5中主代理設備以新的snmp報文請求id為索引,查詢nat轉發表。
在上述技術方案的基礎上,所述nat轉發表條目還包括原始snmp請求報文的源ip地址和原始snmp請求報文的socket信息。
在上述技術方案的基礎上,新的snmp響應報文根據所在nat轉發表條目的原始snmp請求報文的源ip地址和原始snmp請求報文的socket信息發送至網管。
在上述技術方案的基礎上,所述自定義snmp共同體名的格式為通過字段分隔符標識分隔的轉發標識、snmp協議棧版本號、snmp協議棧共同體名、子代理設備內網ip地址和子代理設備snmp協議棧偵聽端口號。
在上述技術方案的基礎上,根據所述自定義snmp共同體名解析出snmp協議棧共同體名字段值和snmp協議棧版本號字段值分別作為子代理能夠識別的子代理snmp共同體名和子代理snmp協議號。
在上述技術方案的基礎上,所述主代理設備自行分配所述新的snmp報文請求id。
基于snmp協議的分布式異步管理電信設備的系統,包括網管、主代理設備和子代理設備,所述網管內設有原始snmp請求報文生成模塊、所述主代理設備內設有代理轉發模塊,以及所述子代理設備內設置的原始snmp響應報文生成模塊;
其中,所述原始snmp請求報文生成模塊用于根據業務生成原始snmp請求報文,所述原始snmp請求報文的udp報文包頭包括主代理snmp報文共同體名、主代理的snmp版本號和原始snmp報文請求id值,根據業務需求選擇性的在主代理snmp報文共同體上加入自定義snmp共同體名;
所述代理轉發模塊用于根據自定義snmp共同體名封裝新的snmp請求報文并轉發給子代理設備,還用于將原始snmp響應報文重新封裝成新的snmp響應報文轉發給網管,所述新的snmp請求報文包括子代理共同體名、子代理snmp協議號、新的snmp報文請求id,所述新的snmp響應報文包括udp報文包頭;
所述原始snmp響應報文生成模塊用于根據所述新的snmp請求報文生成原始snmp響應報文,所述原始snmp響應報文包括新的snmp報文請求id。
在上述技術方案的基礎上,所述代理轉發模塊包括新的snmp請求報文生成模塊、nat轉發表模塊和新的snmp響應報文生成模塊;
其中,所述新的snmp請求報文生成模塊用于根據自定義snmp共同體名封裝新的snmp請求報文;
所述nat轉發表模塊用于將原始snmp請求報文的udp報文包頭和新的snmp報文請求id存儲到nat轉發表中,形成與所述原始snmp請求報文對應的nat轉發表條目;
所述新的snmp響應報文生成模塊用于根據對應的nat轉發表條目重新封裝所述原始snmp響應報文生成新的snmp響應報文。
在上述技術方案的基礎上,所述新的snmp響應報文生成模塊根據所述新的snmp報文請求id索引nat轉發表,找到對應的nat轉發表條目,根據nat轉發表條目中的udp報文包頭,重新封裝原始snmp響應報文,得到新的snmp響應報文,所述新的snmp響應報文包括udp報文包頭。
與現有技術相比,本發明的優點在于:
(1)本發明的基于snmp協議的分布式異步管理電信設備的方法通過在udp報文包頭中加入自定義snmp共同體名,主代理設備可以將原始snmp請求報文和原始snmp響應報文進行重新封裝,代替網管軟件,直接從傳輸層轉發報文給子代理設備,實現了網管與主代理設備通過公網進行通信,主代理設備與子代理設備通過私網進行通信,進而實現了不改變上層網絡拓撲結構的同時,實現了網管對子代理設備的管理,其執行效率高、異步、通用性強,具有異步、并發通信和支持分布式部署的優點。
(2)本發明的基于snmp協議的分布式異步管理電信設備的系統根據業務需求選擇在網管下發的原始snmp請求報文中添加自定義snmp共同體名,位于主代理內的代理轉發模塊根據自定義snmp共同體名將原始snmp請求報文重新封裝成新的snmp請求報文,又將子代理設備發送的原始snmp響應報文重新封裝成新的snmp響應報文,實現了主代理設備與網管公網通信,主代理設備與子代理設備之間的私網進行通信,進一步實現了部署在私網上的子代理設備的擴展和級聯,從而實現了公網網管對主代理設備下級聯的眾多私網子代理設備的管理和維護功能。
(3)本發明的基于snmp協議的分布式異步管理電信設備的系統在nat轉發表中記錄每一條下發到子代理設備的請求報文的原始信息,當子代理設備響應主代理設備某一請求報文對應的響應報文時,只需要根據新的snmp報文請求id索引nat轉發表即可得到原始信息,實現了主代理設備下發請求報文的同時可以轉發其他響應報文,實現了異步和并發通信。
附圖說明
圖1為本發明實施例的方法流程圖;
圖2為本發明實施例的系統框圖。
具體實施方式
以下結合附圖及實施例對本發明作進一步詳細說明。
參見圖1所示,本發明實施例提供一種基于snmp協議的分布式異步管理電信設備的方法,包括以下步驟:
s1,網管采用snmp協議向主代理設備發送原始snmp請求報文,原始snmp請求報文的用戶數據報協議udp報文包頭包括主代理snmp報文共同體名、主代理的snmp版本號和原始snmp報文請求id值,根據業務需求選擇性的在主代理snmp報文共同體上加入自定義snmp共同體名,若網管需要獲取私網子代理設備的狀態信息時,在主代理snmp報文共同體上加入自定義snmp共同體名,若網管需要獲取公網上主代理設備的狀態信息時,則不需要加入自定義snmp共同體名,其中,自定義snmp共同體名的格式為通過字段分隔符標識分隔的轉發標識、snmp協議棧版本號、snmp協議棧共同體名、子代理設備內網ip地址和子代理設備snmp協議棧偵聽端口號,自定義snmp共同體名的格式為轉發標識@snmp協議棧版本號@snmp協議棧共同體名@子代理設備內網ip地址@子代理設備snmp協議棧偵聽端口號;
s2,主代理設備接收原始snmp請求報文后,判斷是否存在自定義snmp共同體名,否,則進行主代理設備處理,是,則進入s3;
s3,主代理設備根據自定義snmp共同體名解析出snmp協議棧共同體名字段值和snmp協議棧版本號字段值分別作為子代理能夠識別的子代理snmp共同體名和子代理snmp協議號,結合子代理snmp共同體名和子代理snmp協議號將原始snmp請求報文重新封裝得到新的snmp請求報文,新的snmp請求報文包括子代理snmp共同體名、子代理snmp協議號、新的snmp報文請求id,其中新的snmp報文請求id由主代理設備自行分配;同時,主代理設備將udp報文包頭和新的snmp報文請求id保存到網絡地址轉換nat轉發表,形成與原始snmp請求報文對應的nat轉發表條目,其中,nat轉發表條目包括與新的snmp報文請求id對應的原始snmp請求報文的源ip地址、原始snmp請求報文的socket信息和udp報文包頭;
s4,主代理設備將新的snmp請求報文發送給子代理設備后,子代理設備生成原始snmp響應報文,并發送給主代理,原始snmp響應報文包括新的snmp報文請求id;
s5,主代理接收到原始snmp響應報文后,以新的snmp報文請求id為索引,查詢nat轉發表,找到新的snmp報文請求id對應的nat轉發表條目,得到udp報文包頭,并重新封裝原始snmp響應報文,得到新的snmp響應報文,新的snmp響應報文包括udp報文包頭,根據nat轉發表條目的原始snmp請求報文的源ip地址和原始snmp請求報文的socket信息將新的snmp響應報文轉發給網管。
參見圖2所示,本實施例提供一種基于snmp協議的分布式異步管理電信設備的系統,包括網管、主代理設備和子代理設備,網管內設有原始snmp請求報文生成模塊、主代理設備內設有代理轉發模塊,以及子代理設備內設置的原始snmp響應報文生成模塊。
其中,原始snmp請求報文生成模塊用于根據業務生成原始snmp請求報文,原始snmp請求報文的udp報文包頭包括主代理snmp報文共同體名、主代理的snmp版本號和原始snmp報文請求id值,根據業務需求選擇性的在主代理snmp報文共同體上加入自定義snmp共同體名。
代理轉發模塊用于根據自定義snmp共同體名封裝新的snmp請求報文并轉發給子代理設備,還用于將原始snmp響應報文重新封裝成新的snmp響應報文轉發給網管,新的snmp請求報文包括子代理共同體名、子代理snmp協議號、新的snmp報文請求id,新的snmp響應報文包括udp報文包頭。
原始snmp響應報文生成模塊用于根據新的snmp請求報文生成原始snmp響應報文,原始snmp響應報文包括新的snmp報文請求id,原始snmp響應報文生成模塊接收來自代理轉發模塊發送的新的snpm請求報文并進行應答,可實現分布式部署。
代理轉發模塊包括新的snmp請求報文生成模塊、nat轉發表模塊和新的snmp響應報文生成模塊。
其中,新的snmp請求報文生成模塊用于根據自定義snmp共同體名封裝新的snmp請求報文;nat轉發表模塊用于將原始snmp請求報文的udp報文包頭和新的snmp報文請求id存儲到nat轉發表中,形成與原始snmp請求報文對應的nat轉發表條目;新的snmp響應報文生成模塊根據新的snmp報文請求id索引nat轉發表,找到對應的nat轉發表條目,根據nat轉發表條目中的udp報文包頭,重新封裝原始snmp響應報文,得到新的snmp響應報文,新的snmp響應報文包括udp報文包頭。代理轉發模塊實現管理站發起的對私網設備訪問請求的解析、轉發表保存和報文轉發功能,并不需要解析snmp靜荷數據而直接從傳輸層轉發,通過nat轉發表實現類似nat功能,具有執行效率高、異步和通用性強的優點。
本發明不局限于上述實施方式,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發明的保護范圍之內。本說明書中未作詳細描述的內容屬于本領域專業技術人員公知的現有技術。