閉環(huán)
七點三十分,圍擋區(qū)配電箱的盒子準(zhǔn)時發(fā)出了確認(rèn)信號。信號波形在頻譜儀屏幕上出現(xiàn)了一組規(guī)律的脈沖序列,持續(xù)約三秒后結(jié)束。顧晏在旁邊同步記錄了信號的完整波形,將它與之前從物流園中繼器捕獲的通信樣本做了對比,確認(rèn)了信號格式的一致性。
“確認(rèn)信號已發(fā)出,時間窗口和格式都符合預(yù)期?!邦欔贪巡ㄐ斡涗洷4嫦聛恚叭绻尉S今天沒有特殊安排,這個信號就是他確認(rèn)盒子狀態(tài)正常的方式?!?/p>
陸維楨站在操作臺側(cè)面,目光在沿海備用車的gps坐標(biāo)和車輛行駛方向之間來回切換。備用車的信號顯示它已經(jīng)離開了最后一個服務(wù)區(qū),正在向沿海方向行駛。按照當(dāng)前速度,它將在上午十點左右進(jìn)入沿海城區(qū)的范圍。如果這輛備用車上載有從蓉城轉(zhuǎn)運出來的數(shù)據(jù)設(shè)備,那么它的到達(dá)時間和物流公司常規(guī)的轉(zhuǎn)運周期是吻合的。
周承岳從大廳入口方向走近,手機屏幕亮著,上面是一份剛收到的協(xié)調(diào)計劃草案?!把睾D沁叺娜艘呀?jīng)在貿(mào)易公司注冊地址附近做好了信號監(jiān)測準(zhǔn)備。專線鏈路如果被切斷,他們能在三十秒內(nèi)確認(rèn)鏈路狀態(tài)變化。物流車隊的追蹤組也已經(jīng)鎖定了那輛備用車的實時位置?!?/p>
“備用車到達(dá)沿海城區(qū)之后,它優(yōu)先去的地方是那家貿(mào)易公司的注冊地址還是樞紐樓?“陸維楨問。
周承岳低頭看了一眼手機上的反饋消息,然后抬頭說:“目前沒有確切的路線規(guī)劃。但從上一輛白色面包車的行駛記錄來看,它在到達(dá)沿海城區(qū)后先停靠了貿(mào)易公司注冊地址所在的那條街道,然后才去了樞紐樓??赡苁莾商幍攸c都需要停留?!?/p>
陸維楨在腦海里把兩處地點的時間順序過了一遍。貿(mào)易公司的注冊地址和樞紐樓相距約兩公里,如果車輛需要在兩處分別停留,每次停留時間不會太長——應(yīng)該只是放下或者取走某樣?xùn)|西??赡苜Q(mào)易公司地址處存放的是舊的數(shù)據(jù)存儲介質(zhì),而樞紐樓負(fù)責(zé)將新數(shù)據(jù)送出境。備用車到達(dá)后,先到貿(mào)易公司放下舊的介質(zhì),然后到樞紐樓接駁新的傳輸流程。
“舊介質(zhì)被替換下來后可能要回收?!瓣懢S楨說,“物流公司不只是單向運送數(shù)據(jù),它也在循環(huán)使用存儲介質(zhì)。車輛到達(dá)沿海后把舊卡取下來放在貿(mào)易公司那邊,然后帶一批新卡回蓉城繼續(xù)使用。所以備用車到貿(mào)易公司地址的停留時間用于回收舊卡,到樞紐樓的停留用于送出新數(shù)據(jù)?!?/p>
周承岳把這條邏輯快速整理成消息發(fā)給了沿海方向。大約兩分鐘之后他收到了回復(fù),回復(fù)內(nèi)容被精簡成一行:“貿(mào)易公司地址和樞紐樓兩處地點的行動可以同時執(zhí)行。備用車在貿(mào)易公司地址停靠時截停車輛,同時切斷專線——兩個操作的時間差可以控制在一分鐘以內(nèi)。“
陸維楨在白板上的“沿?!肮?jié)點下方添加了一條時間線。他在時間線上標(biāo)注了備用車預(yù)計到達(dá)的時間窗口,然后畫了兩條平行的短箭頭,分別指向“車輛截?!昂汀皩>€切斷“兩個操作標(biāo)記。他在兩個標(biāo)記之間畫了一條豎線連接,標(biāo)注了“同步執(zhí)行“。
“車輛截停后,車上帶回蓉城的舊卡如果被取走,就能進(jìn)一步確認(rèn)蓉城和沿海之間的數(shù)據(jù)流動周期。“他說,“同時專線切斷后,貿(mào)易公司那邊的數(shù)據(jù)通道就斷了,就算備用車上的新卡沒被截住,數(shù)據(jù)也無法通過專線送出?!?/p>
顧晏一直站在操作臺側(cè)面沒有坐下。她手里的頻譜儀還開著,屏幕上持續(xù)顯示著物流園中繼器的信號狀態(tài)。她看了一眼屏幕然后抬起頭來,看向陸維楨的方向:“物流園中繼器的輪詢周期是常規(guī)循環(huán),但它的主頻邊沿有一組從昨天開始出現(xiàn)的微幅波動。波動的周期和備用車的位置更新頻率接近,可能在通過中繼器同步備用車的狀態(tài)信息。“
“中繼器在監(jiān)控車輛狀態(tài)?!瓣懢S楨轉(zhuǎn)過身來,“物流園中繼器不只是接收和轉(zhuǎn)存數(shù)據(jù)——它還在跟蹤物流公司車輛的實時位置。備用車的gps信號可能被中繼器同時讀取并存儲了一份。如果我們截停了備用車,中繼器會在下一次心跳信號中檢測到車輛位置不再更新,然后觸發(fā)異常狀態(tài)?!?/p>
閉環(huán)
他快速走到操作臺前坐下,打開了物流園中繼器的遠(yuǎn)程訪問界面。利用之前從物流園中繼器存儲卡上獲取的協(xié)議樣本,他向中繼器的管理端口發(fā)送了一條“車輛狀態(tài)確認(rèn)“的查詢指令。幾秒后中繼器返回了一個數(shù)據(jù)包,包里包含了一組gps坐標(biāo)序列——備用車過去四小時的行駛軌跡,位置更新頻率均勻,最后一次更新時間在幾分鐘前。
“中繼器確實在監(jiān)控車輛位置?!瓣懢S楨把返回的數(shù)據(jù)包保存下來,“截停備用車的同時需要處理掉中繼器里的車輛定位跟蹤數(shù)據(jù)。否則中繼器會在備用車??亢蠹s十五分鐘內(nèi)向主控端發(fā)送車輛異常的警報?!?/p>
周承岳立刻接上了這句話:“處理中繼器數(shù)據(jù)需要多少時間?“
“從發(fā)送清除指令到數(shù)據(jù)被覆蓋完成,大約需要五到八秒?!瓣懢S楨看了一眼物流園中繼器的操作界面,“清除指令的格式和常規(guī)數(shù)據(jù)回傳指令相似,只需要把目標(biāo)字段替換成中繼器存儲區(qū)的緩存地址即可。我可以在備用車截停的同時遠(yuǎn)程發(fā)送清除指令,把車輛跟蹤數(shù)據(jù)從它的緩存中覆蓋掉?!?/p>
他低頭在鍵盤上快速編寫了一條針對中繼器緩存的清除指令,把指令格式和物流園中繼器支持的協(xié)議版本做了最后一次確認(rèn)。保存好之后他抬頭看了一眼墻上的時鐘——八點零七分。
“備用車預(yù)計到達(dá)沿海城區(qū)的時間在十點到十點半之間?!瓣懢S楨說,“距現(xiàn)在還有大約兩個小時。這段時間內(nèi)我需要確認(rèn)清除指令是否會觸發(fā)中繼器自身的安全告警機制。如果會,就需要在發(fā)送清除指令之前做一次協(xié)議層的掩蓋?!?/p>
顧晏端著頻譜儀的探頭靠近工作站的天線接口,聯(lián)機讀取了物流園中繼器的底層協(xié)議狀態(tài)。她的目光掃過屏幕上展開的協(xié)議棧分段圖,用一只手在鍵盤上快速敲擊了幾行指令,然后松開手讓結(jié)果自己運行。幾秒后,屏幕上的協(xié)議棧被折疊成了一行簡潔的狀態(tài)摘要,摘要末尾標(biāo)著兩行小字:“清除指令對中繼器主控協(xié)議來說屬于常規(guī)系統(tǒng)維護(hù)指令序列的一部分,不會觸發(fā)單獨的安全告警。主控端只有在收不到預(yù)期心跳信號時才會啟動檢查流程,而清除指令本身不改變心跳信號的發(fā)送間隔?!?/p>
陸維楨把那行摘要內(nèi)容記在了筆記本上。他站起來重新面向白板,在“車輛截?!昂汀皩>€切斷“兩個標(biāo)記旁邊各添了一個小字:“清緩存“和“斷鏈路“。四個操作形成一個閉環(huán),在時間線上并列排開。然后用一條線把它們?nèi)靠蛟谝黄?,在線框的末尾寫了兩個字:“九點五十——行動啟動倒計時。“
他把筆放下,退后一步,看著白板上那個完整的操作計劃圖。所有節(jié)點都在上面了——從蓉城研究所內(nèi)部的光纖分流口開始,經(jīng)過弱電間、會議室、圍擋區(qū)、公交站臺、物流園,通過物流公司的車輛體系延伸到沿海城市,再通過貿(mào)易公司的專線出境。鏈條上的每一個點現(xiàn)在都被識別并且對應(yīng)了具體的切斷或清除措施。整條線將在今天上午十點左右被同時打斷,從中間和末端兩個方向同時施加切斷力,使鏈條無法形成完整的回路。
光屏在他的視野里亮了一行字,字體比以前明亮,邊緣帶著一絲淡藍(lán)的輝光:“建議在行動開始前再次確認(rèn)備用車的位置及其是否載有原定從蓉城轉(zhuǎn)運的數(shù)據(jù)設(shè)備。如果備用車只是空車補給,截停行動的意義會降低?!瓣懢S楨沒有抬頭,他的目光落在白板上的全圖上。那條從蓉城延伸出去直到港口的線條,每一個節(jié)點都對應(yīng)著他親手標(biāo)注的內(nèi)容和記錄。他盯著那個錨點看了幾秒鐘,然后視線向下移到了操作臺上的海岸線地圖上,地圖上沿海城市那片灰色建筑群的輪廓在屏幕光線下顯得清晰可見,灰色的屋頂連成一排延伸向港口的方向。