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