王海波
(民航空管技術(shù)裝備發(fā)展有限公司,北京 100081)
民航空管技術(shù)裝備發(fā)展有限公司自動轉(zhuǎn)報系統(tǒng)是專為民航電報通信業(yè)務(wù)設(shè)計的高性能航空固定電信網(wǎng)自動轉(zhuǎn)報系統(tǒng)。該系統(tǒng)完全遵從國際民航組織(ICAO)附件10和國際航空電信協(xié)會(SITA)B類通信標(biāo)準(zhǔn),采用雙機(jī)雙網(wǎng)雙庫帶容錯的冗余備份模式,實現(xiàn)AFTN/SITA電報數(shù)據(jù)自動交換。主要設(shè)備包括轉(zhuǎn)報服務(wù)器、轉(zhuǎn)報集中器(前置機(jī))、網(wǎng)絡(luò)交換機(jī)、異步單元、同步單元、幀中繼單元等設(shè)備,其中異步單元是數(shù)量最多、最為主要的用戶接入設(shè)備。
本文以最為常見的DMHS-H 96路無前置機(jī)的雙機(jī)雙網(wǎng)雙庫的系統(tǒng)架構(gòu)為例,詳細(xì)介紹異步單元設(shè)備在轉(zhuǎn)報系統(tǒng)中的工作原理、debug抓包及故障診斷等內(nèi)容。
異步單元是轉(zhuǎn)報系統(tǒng)中重要的通信組成單元之一,承載著用戶異步終端與轉(zhuǎn)報服務(wù)器之間的數(shù)據(jù)通信,其主要作用是負(fù)責(zé)異步終端用戶的接入,將異步終端傳送來的數(shù)據(jù)信息通過IP網(wǎng)絡(luò)傳遞給轉(zhuǎn)報服務(wù)器;以及將轉(zhuǎn)報服務(wù)器傳送來的數(shù)據(jù)信息傳遞給異步終端。異步單元與轉(zhuǎn)報服務(wù)器之間的連接方式采用IP方式,使用網(wǎng)線連接傳輸U(kuò)DP數(shù)據(jù)包;與異步終端用戶之間采用RS232或者雙流方式,使用8芯或者6芯異步線纜連接,傳送串行數(shù)據(jù)。由于雙流線路存在弊端使用越來越少,因此本文將主要討論RS232的連接方式。
每臺異步單元均提供冗余雙電源輸入,雙配置口、雙網(wǎng)口(高速100M/低速10M),可靠性高。單臺設(shè)備最多可支持16路異步端口,提供RS232接口信號,配置口和網(wǎng)口均采用RJ45接口,參考圖1。
圖1 異步單元后視圖
異步單元的主要作用是UDP數(shù)據(jù)和RS232數(shù)據(jù)相互轉(zhuǎn)換并雙向轉(zhuǎn)發(fā),當(dāng)轉(zhuǎn)報服務(wù)器的主機(jī)需要向異步單元發(fā)送信息時,會選擇向異步單元的網(wǎng)口發(fā)送UDP數(shù)據(jù)(單播點(diǎn)對點(diǎn)),異步單元接收到UDP信息后把這些信息通過RS232或雙流接口向外發(fā)送。當(dāng)異步單元從RS232或雙流端口接收到信息后,向端口設(shè)置的組播地址發(fā)送UDP組播信息,組播地址包含了轉(zhuǎn)報服務(wù)器主機(jī)和備機(jī),因此主備機(jī)都會接收到UDP信息。
當(dāng)異步單元的encapsulation udp-tunnel配置中包含seq-number參數(shù)時,轉(zhuǎn)報服務(wù)器與異步單元間傳輸?shù)拿恳粋€數(shù)據(jù)包包頭都帶有長度為4個字節(jié)的序號。這個序號只是一個數(shù)據(jù)標(biāo)識,它的主要作用是代表本數(shù)據(jù)的惟一性和數(shù)據(jù)連續(xù)性,并不能體現(xiàn)出報文的完整性。序號在單網(wǎng)結(jié)構(gòu)里作用不大,在雙網(wǎng)結(jié)構(gòu)下使用序號,增加了數(shù)據(jù)傳輸?shù)目煽啃?。異步單元向轉(zhuǎn)報服務(wù)器發(fā)送數(shù)據(jù)時,它的兩個網(wǎng)口都產(chǎn)生UDP組播數(shù)據(jù)。轉(zhuǎn)報服務(wù)器會收到兩份相同序號的數(shù)據(jù),后處理的同序號數(shù)據(jù)將被拋棄。反之,轉(zhuǎn)報服務(wù)器向異步單元發(fā)送數(shù)據(jù)時,它會以UDP點(diǎn)對點(diǎn)的方式順序向異步單元的兩個網(wǎng)絡(luò)地址發(fā)送同序號數(shù)據(jù),異步單元也是只處理先接收到的數(shù)據(jù),后接收到數(shù)據(jù)將會拋棄。
如果沒有設(shè)定seq-number參數(shù)時,轉(zhuǎn)報服務(wù)器與異步單元間傳輸普通數(shù)據(jù)。雙網(wǎng)結(jié)構(gòu)下,異步單元向轉(zhuǎn)報服務(wù)器發(fā)送數(shù)據(jù)時,轉(zhuǎn)報服務(wù)器會收到兩份完全相同的數(shù)據(jù),轉(zhuǎn)報服務(wù)器通過比較選擇保留一份數(shù)據(jù)。轉(zhuǎn)報服務(wù)器向異步單元發(fā)送數(shù)據(jù)時,只會選擇兩個網(wǎng)口地址中的一個網(wǎng)口進(jìn)行UDP點(diǎn)對點(diǎn)發(fā)送。但在異步單元雙網(wǎng)切換時,轉(zhuǎn)報服務(wù)器無法及時判斷出異步單元的網(wǎng)絡(luò)已失效,可能會造成數(shù)據(jù)丟失。
異步單元在實際運(yùn)行環(huán)境中,有時端口在收發(fā)數(shù)據(jù)時會有亂碼或丟數(shù)據(jù)的情況,或者由于軟件問題導(dǎo)致網(wǎng)口的UDP數(shù)據(jù)收發(fā)異常。因此我們需要對異步單元進(jìn)行debug抓包和跟蹤,分物理層端口和網(wǎng)絡(luò)層網(wǎng)口兩種。
通過網(wǎng)絡(luò)telnet或者配置口連接到異步單元中,并登錄到#提示符下。如果想debug第一個端口,則需要輸入命令“debug phl interface async 1/0 packets”,點(diǎn)擊回車后輸入“terminal monitor”點(diǎn)擊回車;此時開始異步單元端口async 1/0的debug監(jiān)控;關(guān)閉debug信息的命令為“no debug all”。抓包結(jié)果參考圖2:
圖2 異步單元網(wǎng)絡(luò)層debug
上圖所示I表示“輸入”:從端口async1/0接收的數(shù)據(jù),發(fā)送給轉(zhuǎn)報服務(wù)器;O表示“輸出”:轉(zhuǎn)報服務(wù)器通過異步單元從端口async1/0發(fā)出的數(shù)據(jù)。數(shù)據(jù)長度LEN之后為實際的內(nèi)容,這里顯示的是十六進(jìn)制數(shù)據(jù),需要通過碼表轉(zhuǎn)換成實際的字符。比如1表示為SOH,20表示為空格,d表示為回車,a表示為換行,3表示為ETX等。當(dāng)某一路異步端口通信出現(xiàn)問題,可以采用此debug方法判斷此端口的通信情況,進(jìn)而協(xié)助排除故障。
通過網(wǎng)口進(jìn)行網(wǎng)絡(luò)層debug,操作步驟相對復(fù)雜且只能抓取數(shù)據(jù)包的開始部分,無法抓取完整的數(shù)據(jù)包。如果需要查看完整的數(shù)據(jù)包,就需要在轉(zhuǎn)報服務(wù)器上借助LINUX系統(tǒng)中的tcpdump命令來抓包,因此網(wǎng)絡(luò)層debug用的較少。
在日常維護(hù)和排故的過程中,異步單元debug是一種最常用的方法,下面介紹幾種故障診斷及設(shè)備維護(hù)的相關(guān)內(nèi)容。
(1)故障現(xiàn)象
某64路轉(zhuǎn)報系統(tǒng)中有4臺異步單元,其中第2、3、4臺異步單元經(jīng)常死機(jī),網(wǎng)口地址無法ping通也無法登錄配置口,設(shè)備關(guān)機(jī)重啟后正常,運(yùn)行幾天后再次出現(xiàn)同樣的死機(jī)現(xiàn)象。
(2)現(xiàn)象分析
①問題出現(xiàn)之前,轉(zhuǎn)報系統(tǒng)升級增加了監(jiān)控的功能,有可能對異步單元有影響。
②4臺異步單元版本不同,第1臺為D903,第2-4臺為8B11,針對8B11版本可能有影響。
③在異步單元死機(jī)前,轉(zhuǎn)報系統(tǒng)會有內(nèi)存異常的告警信息,有可能是某些功能導(dǎo)致異步單元的內(nèi)存溢出而死機(jī)。
(3)故障查找
①登錄出現(xiàn)故障的異步單元,每隔1小時運(yùn)行查看內(nèi)存的命令,發(fā)現(xiàn)有個AAA服務(wù),占用的memory blocks在持續(xù)增長,基本上是每1秒就增長1個block,總的blocks也隨之增長。
②如果將轉(zhuǎn)報系統(tǒng)中對異步單元的監(jiān)控功能關(guān)閉,此值就不會增長,開啟監(jiān)控就持續(xù)增長,而第一臺D903版本的異步單元,這個值一直為0。
③目前異步單元的監(jiān)控間隔參數(shù)為5秒,平均每秒增長1個block,調(diào)整成30秒后,此值增長速度減緩。
(4)結(jié)論
通過以上現(xiàn)象最終判斷為轉(zhuǎn)報系統(tǒng)升級的監(jiān)控功能和異步單元8B11版本有沖突,監(jiān)控模塊登錄到異步單元獲取相關(guān)數(shù)值后,導(dǎo)致異步單元的內(nèi)存持續(xù)增長,最終崩潰死機(jī),只有重啟設(shè)備內(nèi)存清空后才恢復(fù)正常。
注意一點(diǎn),異步單元上的每個端口都有自己的緩沖區(qū),緩沖區(qū)最大能存256個包,每個包最大4K字節(jié)。如果緩沖區(qū)滿了,再向此端口發(fā)送數(shù)據(jù),就不會再放到緩沖區(qū)里了,而是直接丟掉。可以在異步單元上可以輸入show ip interface async 1/0命令,可以查看到:Que_cnt:257,IP_cnt:0,Drop_packet:301這行,如果持續(xù)向端口1/0發(fā)送數(shù)據(jù),可以看到Que_cnt這個字段持續(xù)增長,當(dāng)達(dá)到最大值257,就不會再增長了,Drop_packet這個字段的值就會增長,意味著現(xiàn)在端口緩沖區(qū)已滿,并開始丟棄數(shù)據(jù)了。
有一種情況是在進(jìn)行端口測試時,當(dāng)向端口固定發(fā)送大量同樣內(nèi)容的數(shù)據(jù)時,把端口線拔掉,然后等5秒左右再插上,理論上是要丟幾個包之后,還能正常收到后續(xù)的數(shù)據(jù)。但是實際的現(xiàn)象是,拔掉再插上線之后,就會不停的收到亂數(shù)據(jù)。最開始發(fā)送的數(shù)據(jù)包格式是有22個字節(jié)(頭)加上有2000個字節(jié)都為0x31的數(shù)據(jù)包,長度超過1024個字節(jié)。經(jīng)過debug得知問題出現(xiàn)的原因是因為串口通信格式的起始位和停止位定位出現(xiàn)了問題導(dǎo)致,具體分析如下:
當(dāng)拔掉網(wǎng)線重新插上后,中間丟了若干字節(jié),異步單元會重新找數(shù)據(jù)的起始位和停止位,然后把后面數(shù)據(jù)“00110001”中第一個1當(dāng)成起始位,后面10001010當(dāng)成數(shù)據(jù)位,也就是0x8a,后面的0當(dāng)成停止位,依次類推,就會出現(xiàn)明明發(fā)送的是0x31,但插拔線纜之后收到的卻是0x8a。但這只是由于0x31的數(shù)據(jù)特殊性導(dǎo)致的,如果換成其他的數(shù)據(jù),一般不會出現(xiàn)此問題。如果當(dāng)出現(xiàn)此問題時,在異步單元上可以輸入show interface async 1/0命令,查看到input errors數(shù)據(jù)為11,表明出現(xiàn)了11次輸入錯誤。
(1)開機(jī)后不斷的重啟:特殊情況下異步單元連接所有線纜后開機(jī),發(fā)現(xiàn)設(shè)備運(yùn)行不正常,用配置口登錄查看設(shè)備一直處于重啟的狀態(tài)。將所有外線拔掉后,再次開機(jī)設(shè)備運(yùn)行正常,可以判斷為是外接線纜的問題。測試所有外線后,最終確定為其中一個端口的地線連接問題導(dǎo)致。
(2)異步單元常用的維護(hù)命令:
①# show version:查看軟件版本等信息。
②# show interface async1/0:查看異步端口狀態(tài)信息。
③# show tcp brief:顯示tcp服務(wù)端口和活動連接信息。
④# show tcp statistics:顯示TCP統(tǒng)計信息。
⑤# show system cpu:顯示處理器占用信息。
⑥# show system mem:顯示內(nèi)存占用信息。
⑦# show tty:顯示當(dāng)前登錄的終端信息。
⑧# show clock:顯示當(dāng)前時間。
⑨# duplicate incomming-data to async 1/1:端口復(fù)制功能。
(3)常用寄存器值:配置命令需要在全局配置模式下輸入。
①ip reg 82 1:設(shè)置異步端口down時,異步接收到的數(shù)據(jù)是否處理;“0”:不處理;“1”:處理。
②ip reg 80 250:設(shè)置UDP通信狀態(tài)報告的端口號65280+XX(可設(shè)置范圍:65280~65535),默認(rèn)為65530。
還有其他寄存器ip reg 18 48、ip reg 81 18、ip reg 78 30常用于雙流單元和同步單元。
智能程控異步單元實際上是一個網(wǎng)關(guān)路由器設(shè)備,在民航自動轉(zhuǎn)報系統(tǒng)的應(yīng)用中,僅僅使用了其中小部分功能。由于篇幅所限以上涉及的內(nèi)容只針對某些技術(shù)點(diǎn)進(jìn)行討論總結(jié),希望能借此拋磚引玉,從而鞏固專業(yè)知識。在工作實踐中不斷累積經(jīng)驗,快速排查各種故障以保證整個系統(tǒng)的穩(wěn)定運(yùn)行。