文獻標識碼: B
文章編號: 0258-7998(2013)12-0126-03
隨著數據業務的廣泛應用,以太網技術在通信網絡中發揮著越來越重要的作用。但是以太網技術與傳統的同步數字體系(SDH)相比,在網絡故障告警、鏈路質量、維護手段等方面都略遜一籌[1]。國際標準化組織IEEE先后推出了802.3ah(2004)和802.1ag(2007)兩個標準化協議來強化以太網在維護、告警方面的能力。802.3ah的以太網OAM主要是鏈路方面的監測和維護,是一種偏物理層的OAM,而802.1ag的以太網OAM是偏網絡和應用的OAM[2],主要用在匯聚層和核心層上[3]。
本文結合硬件,利用SNMP Trap包來實現鏈路連通性監測以及故障告警。主要是實現偏物理層的OAM功能,與802.3ah和802.1ag相比,該故障告警和鏈路檢測方法簡單、實現方便,適合于一些遠端二層交換設備。根據FPGA[4]的特點,外接一個1 000 ?滋F~2 000 ?滋F的電容,在設備突然斷電時,通過FPGA發送SNMP報文通知局端設備,局端設備記錄并上報網管,提示網管人員設備故障。
1 SNMP協議介紹
簡單網絡管理協議SNMP[5](Simple Network Management Protocol)是目前最常用的網絡管理協議。狹義上,它是一種專門用于網絡管理軟件和網絡設備之間的通信協議;廣義上,它是一組為實現網絡的自動化管理任務而制定的一系列通信標準,包括管理信息的表示與命名、通信協議等內容。
SNMP中定義了5種協議數據單元PDU(Protocal Data Unit),按照完成的功能可以分為三類:(1)查詢,設置SNMP變量;(2)應答請求;(3)事件報告,如Trap。
Trap是某種入口,到達該入口會使SNMP被管設備主動通知SNMP管理器,而不是等待SNMP管理器的再次輪詢。同時也是管理工作站向代理獲取管理信息的途徑之一。Trap消息是當代理探測到本地存在與網絡運行狀態有重要關系的事件發生時,即向工作站發送時間報告消息。由于事先在代理中指定了發送的工作管理站,也就是Trap的目的地,因此接收到Trap后,管理工作站不需要向代理發送確認消息。
2 遠端故障檢測硬件模塊設計
圖1所示為硬件總體結構示意圖,FPGA與ARM相連,在設備上電初始化完成之后,軟件就可以將手動組好的SNMP Trap數據包寫入到FPGA的寄存器中儲存起來。
圖2所示的FPGA功能示意圖中,P1~P4為4個媒體獨立接口(MII接口)。P1和P2為媒體接入控制(MAC)模式接口,用于連接2個光口物理層收發器(PHY)芯片;P3和P4為PHY模式接口,用于連接交換芯片的2個MII端口。實現P1與P3之間的報文相互轉發,和P2與P4之間的報文相互轉發。提供一個簡化的MII接口(RMII)P0為MAC模式,通過PHY芯片與交換芯片相連,用于發送各種協議報文。當電源跌落時,立即向MII_P1和MII_P2端口同時發送掉電告警幀,并定時向P0協議端口發送連通性檢測幀。
3 遠端故障檢測的軟件實現
本文實現的遠端故障檢測大致分為:遠端掉電檢測和遠端連通性檢測。兩種遠端故障檢測處理流程如圖3所示。
3.1 遠端設備掉電檢測原理
遠端設備掉電處理可以有很多種實現方案,本文的實現方案選擇硬件FPGA。由于遠端設備突然斷電時,由軟件組幀和發幀有可能來不及,因此選用硬件去實現。設備斷電時,ARM、以太網交換芯片會立刻停止工作,而FPGA會在硬件布局中通過連接一個1 000 μF~2 000 μF的電容,可以有3 ms左右的斷電緩沖時間,設備上電初始化完成之后,軟件會手動組一個SNMP Trap包,存放在FPGA的寄存器中。當設備突然斷電時,FPGA會檢測到一個電壓跌落的信號,由于FPGA有3 ms~6 ms的斷電緩沖時間,它會利用這個時間將存儲的寄存器中的數據讀取出來向網管發送,從而使網管能夠檢測到遠端設備掉電的告警。具體的遠端設備掉電處理流程圖如圖3(a)所示。軟件組包部分核心代碼為:
funIcConnect(sIC_CTL_BLK *pChip, UINT8 *pData, UINT16 len, void *para)
{ int status = DRV_SUCCESS;
UINT16 i,UINT8 value;
pChip->chipWrite(IC_ FRAME_CCF_EN, 0, para);
pChip->chipWrite(IC_ FRAME_CCF_EN, 1, para);
for(i = 0; i < len; i ++)
{
value = *(pData + i);
pChip->chipWrite(IC_FRAME_CCF_DATA, value, para);
}
pChip->chipWrite(IC_ FRAME_CCF_EN, 2, para);
}
3.2 遠端設備連通性檢測原理
設備上電鏈路檢測幀實際只檢測設備的硬件及連接到網管的這條鏈路是否正常,不包括設備上的軟件是否能正常運行。進行鏈路檢測就是區分設備失連是設備軟件問題還是硬件問題。因為在正常情況下,即使軟件出現故障,由硬件直接發出的鏈路檢測報文也應該能被網管接收到。
設備上電軟件初始化完成之后,由軟件手動組一個類SNMP Trap 包會寫入到FPGA的寄存器中,寄存器會根據FPGA開始發包時間和發包控制間隔時間信號給網管服務器發送一個連通性檢測幀,正常情況下網管可以一直收到鏈路連通性檢測幀。如果設備上電之后,網管沒有接收到任何Trap,則說明軟件出現異常;而如果設備正常運行之后,網管服務器沒有收到掉電檢測告警幀和連通性檢測幀,則可以判斷是連接網管的這條鏈路出現中斷,或者設備硬件出現故障。網管與設備會話的過程中有2個時間需要注意,(1)FPGA開始發包時間,另一個是連通性檢測幀發包時間間隔。FPGA開始發包時間是通過軟件得到1 s~30 s的任意時間點,如果設備上電之后FPGA即開始發送,而在一個PTN網絡的邊緣可能存在幾千臺甚至上萬臺的遠端設備,如果這些設備同時上電,而且都不做發包時間控制,則可能會在出現同一時間內網絡中有上萬個這樣的報文,導致網絡風暴,從而影響業務。因此發包時間由軟件控制,則同一時間網絡上出現大量鏈路檢測報文的幾率會小很多,也不會影響業務。連通性檢測幀的發包時間間隔既可以由軟件控制,也可以由硬件控制。如果發送時間間隔過小,則網管服務器需要頻繁地處理這些Trap信息,對于正常的業務監控信息會造成影響。本文由網管服務器設置發包時間間隔,將設置的時間間隔寫入硬件定時器中,控制FPGA發送連通性檢測幀的頻率。具體的連通性檢測流程圖如圖3(b)所示。軟件核心代碼為:
funAlm(sIC_ CTL_BLK *pChip, UINT8 *pData, UINT16 len,
void *para)
{ int status = DRV_SUCCESS;
UINT16 i,UINT8 value;
pChip->chipWrite(IC_ FRAME_PDAF_SET, 0, para);
pChip->chipWrite(IC_FRAME_PDAF_SET, 1, para);
for(i zhiqi= 0; i < len; i ++)
{
value = *(pData + i);
pChip->chipWrite(IC_FRAME_PDAF_DATA,value,
para);
}
pChip->chipWrite(IC _FRAME_PDAF_SET, 2, para);
}
4 實驗結果及數據
設置Trap的目的IP為10.11.2.23,設備IP為 10.11.2.158,掉電檢測幀的Destination Port 為162,鏈路連通性檢測的Destination Port為163。設備上電后,利用抓包軟件Wireshark可以得到如圖4所示的鏈路連通性檢測幀。將設備突然斷電, 通過Wireshark可以得到如圖5所示的設備掉電檢測幀。
本文根據實際環境,在實驗室對遠端設備進行了多次的突然掉電測試,在遠端到網管線路正常的情況下,掉電告警信息都能立刻上報到網管,該方案已經在九江山水電訊設備有限公司的產品中得到驗證,從而進一步完善了功能故障測試對遠端設備的管理。
參考文獻
[1] 郭祥本,羅瑩.以太網OAM原理與實現[J]. 通信技術,2009(12):42-43.
[2] 徐榮,鄧春勝.電信級以太網[M].北京:人民郵電出本社,2009.
[3] KUROSE J F,ROSE K W. Computer networking: atopdown approach,fourth edition[M].Pearson Education, 2008.
[4] 夏宇聞.Verilog數字系統設計教程[M]. 北京:北京航空航天大學出版社,2008.
[5] 劉建卿,盧融凱.基于SNMP的網絡監控系統的研究與實現[J].電子技術應用, 2012,31(10):52-54.