當(dāng)?shù)貢r(shí)間7月8日凌晨,加拿大運(yùn)營(yíng)商Rogers發(fā)生重大網(wǎng)絡(luò)故障,導(dǎo)致全網(wǎng)無(wú)線、有線互聯(lián)網(wǎng)服務(wù)中斷。直到7月9日下午,Rogers才宣布網(wǎng)絡(luò)和系統(tǒng)已接近全面恢復(fù)。
路由器升級(jí)導(dǎo)致BGP中斷?
“我們?cè)趯?duì)核心網(wǎng)絡(luò)進(jìn)行維護(hù)升級(jí)后,一些路由器在周五早上出現(xiàn)了故障,并且該故障引發(fā)流量過(guò)載,導(dǎo)致整個(gè)系統(tǒng)關(guān)閉和網(wǎng)絡(luò)無(wú)法運(yùn)行。”
7月9日,Rogers首席執(zhí)行官Tony Staffieri在道歉信中表示:“問(wèn)題發(fā)生后,我們的技術(shù)人員一直通過(guò)更換問(wèn)題軟件、設(shè)備以及更改網(wǎng)絡(luò)配置來(lái)努力恢復(fù)網(wǎng)絡(luò)。”
網(wǎng)絡(luò)中斷后到處蹭網(wǎng)的Rogers用戶
事故發(fā)生后,Cloudflare公司的全球互聯(lián)網(wǎng)流量監(jiān)控顯示,從UTC時(shí)間7月8日08:45 左右開(kāi)始,來(lái)自Rogers AS的互聯(lián)網(wǎng)流量幾乎完全丟失。
數(shù)據(jù)顯示,從08:15到21:45間,Rogers AS多次通過(guò)BGP Update消息公布可用路由和撤銷路由,直到7月9日01:00之后,Rogers的互聯(lián)網(wǎng)流量才開(kāi)始逐漸恢復(fù)。
Rogers在17個(gè)小時(shí)內(nèi)頻繁BGP通告和撤銷,意味著其內(nèi)部核心網(wǎng)絡(luò)故障一直未能解決。
綜合以上信息推斷,此次事故原因可能為:
Rogers在對(duì)骨干網(wǎng)路由設(shè)備進(jìn)行升級(jí)時(shí),負(fù)責(zé)執(zhí)行BGP協(xié)議的路由器出現(xiàn)了故障,導(dǎo)致Rogers運(yùn)營(yíng)的所有網(wǎng)絡(luò)與互聯(lián)網(wǎng)失聯(lián)。
為何故障這么嚴(yán)重?
互聯(lián)網(wǎng)Internet,實(shí)際上是“interconnected network”的縮寫(xiě),它由不同的網(wǎng)絡(luò)互聯(lián)而成。這些組成Internet的“網(wǎng)絡(luò)”稱為AS(自治系統(tǒng)),準(zhǔn)確的定義為具有統(tǒng)一路由策略的巨型網(wǎng)絡(luò)或網(wǎng)絡(luò)群組。
每一家提供互聯(lián)網(wǎng)接入服務(wù)的ISP運(yùn)營(yíng)商都擁有自己的AS和ASN(AS編號(hào)),比如中國(guó)電信、中國(guó)聯(lián)通等運(yùn)營(yíng)商都有自己的ASN。我們的手機(jī)、計(jì)算機(jī)等終端設(shè)備要連接到Internet,都需首先連接一個(gè)AS。
BGP,Border Gateway Protocol(邊界網(wǎng)關(guān)協(xié)議),指用于不同AS之間實(shí)現(xiàn)互聯(lián)的協(xié)議,是目前Internet骨干網(wǎng)上常用的核心路由協(xié)議,其最主要功能在于控制路由傳播和選擇最好的路由。
通過(guò)BGP協(xié)議,AS之間會(huì)不斷相互“交談”,以確定數(shù)據(jù)在全球互聯(lián)網(wǎng)上的最佳路由。
然而,當(dāng)Rogers的骨干路由器在升級(jí)時(shí)出現(xiàn)故障后,相當(dāng)于其AS采用BGP協(xié)議告訴全球互聯(lián)網(wǎng):“您好,我們不存在了,請(qǐng)繞著我走,不要跟我說(shuō)話?。。?rdquo;
然后,所有互聯(lián)網(wǎng)流量都無(wú)法進(jìn)出Rogers擁有的任何網(wǎng)絡(luò)。也就是說(shuō),所有Rogers網(wǎng)絡(luò)下的終端設(shè)備與互聯(lián)網(wǎng)隔離了。
同樣不幸的是,BGP協(xié)議和AS互聯(lián)相當(dāng)復(fù)雜,BGP管理的路由信息非常龐大且來(lái)源復(fù)雜,路由更新和傳播慢,如果出了大問(wèn)題,恢復(fù)起來(lái)往往需要數(shù)小時(shí)甚至數(shù)天。而Rogers在Internet上只注冊(cè)了一個(gè)AS。即使有兩個(gè)AS,嘗試轉(zhuǎn)移到另一個(gè)AS也可能需要很長(zhǎng)時(shí)間,并且可能會(huì)導(dǎo)致其他問(wèn)題。
一些疑問(wèn)?
為提供連續(xù)、穩(wěn)定的互聯(lián)網(wǎng)連接服務(wù),按理說(shuō),如此重要的網(wǎng)絡(luò)節(jié)點(diǎn)都會(huì)采用冗余備份架構(gòu),如此重要的網(wǎng)絡(luò)升級(jí)也一定有周全的回退方案。
但Tony Staffieri在致歉信中表示“我們斷開(kāi)了特定設(shè)備的連接,并重定向了流量,這使得我們網(wǎng)絡(luò)和服務(wù)隨著時(shí)間推移而逐漸恢復(fù)”。
這讓人感覺(jué)此次故障并沒(méi)有回退或切換到備用的可能性,以致于他們寧可斷開(kāi)設(shè)備,讓全網(wǎng)終端無(wú)法接入互聯(lián)網(wǎng)。
此次升級(jí)應(yīng)該也沒(méi)有類似A/B測(cè)試的先小范圍測(cè)試驗(yàn)證、再整體升級(jí)的機(jī)制,否則,不至于造成全網(wǎng)范圍大故障。
此次事故也引發(fā)了行業(yè)人士熱烈討論。
一位加拿大網(wǎng)友留言道:
AS的外圍和網(wǎng)絡(luò)內(nèi)部都有路由器,當(dāng)發(fā)生鏈路增加、減少、擁塞等情況時(shí),它們會(huì)相互告知,并決定替代路徑。如果你對(duì)你自己的AS知之甚少,可能會(huì)將BGP錯(cuò)誤配置為發(fā)送本不該發(fā)送的更新,停止偵聽(tīng)本該獲取的更新,或者接受本不應(yīng)該接受的數(shù)據(jù)包,等等。這需要通過(guò)配置ACL(訪問(wèn)控制列表)、地址前綴列表等來(lái)防止錯(cuò)誤信息在網(wǎng)絡(luò)傳播。Rogers可能沒(méi)有做好配置和控制好更新。
之所以會(huì)出現(xiàn)這樣的問(wèn)題,據(jù)我所知可能是因糟糕的架構(gòu)設(shè)計(jì)、維護(hù)經(jīng)驗(yàn)不足、運(yùn)維費(fèi)用低、以及沒(méi)有完善的流程與機(jī)制等原因造成。
也有網(wǎng)友評(píng)論:
可能是對(duì)來(lái)自單一供應(yīng)商的設(shè)備打補(bǔ)丁時(shí),導(dǎo)致主設(shè)備和備份設(shè)備都出現(xiàn)了問(wèn)題。為什么Rogers不采用兩家或多家供應(yīng)商設(shè)備呢?這樣不僅不用擔(dān)心主備都掛了,而且還能通過(guò)加大競(jìng)爭(zhēng)提升產(chǎn)品和服務(wù)質(zhì)量。
“以后我們將增加網(wǎng)絡(luò)和系統(tǒng)冗余,繼續(xù)對(duì)網(wǎng)絡(luò)進(jìn)行重大投資,加強(qiáng)技術(shù)系統(tǒng)和測(cè)試,以提升網(wǎng)絡(luò)穩(wěn)定性。”對(duì)于這些疑問(wèn),或許從Tony Staffieri的致歉信中能找出些答案。