「中央社:傳學術網路封鎖Bilibili 教育部:網段路由轉送異常。」
要理解發生了什麼事,我們先一起想像這個情境。
假設你面前有一疊撲克牌,一疊一共有52張。現在出現了一個請求,要你從這一疊撲克牌,將「梅花三」這一張抽掉,讓整疊撲克牌只剩下51張。
五秒鐘後,新的請求來了,要求你將「梅花三」放回去,讓這一疊撲克牌又變成52張。
接下來每五秒鐘不斷重複這個要求,要求你五秒鐘後抽出「梅花三」出來,五秒鐘後再放回去。
我讀到這裡已經感到有點厭煩了,我相信你也是。現在這個假設的狀況下,一疊撲克牌只有52張紙牌。雖然有點煩人,卻也不是做不到。但是當我將問題放大成這一疊撲克牌,總共有一百萬張牌呢?一樣的要求你五秒鐘後抽出「梅花三」出來,五秒鐘後再放回去,不斷重複。我們一定感覺得到,這將是多麼龐大而惱人的操作呢!
路由表
在全世界的Internet(後面通稱「網際網路」)上,路由器和路由器之間,會彼此同步路由資訊。路由資訊大概長這樣。包含封包可能的目的地網段定義、若符合的話,應該從哪一個下一站轉送封包出去。
(路由表範例)封包目的地落在網段 172.16.16.0/24 內,請經由 10.10.10.25轉送
封包目的地落在網段 172.31.130.0/16 內,請經由 10.10.10.3轉送
問題的產生
路由器轉送每個封包時,會抓取封包的目的地,再依據路由表所定義的選路規則,選擇轉送到哪個下一站。在全世界的網際網路上,這樣的路由器有數十萬數百萬台,分別由數萬家不同的公司、或組織來各自管理。同時這樣的路由資訊,不重複的才算一筆,今天已經超過一百萬筆。假設今天網際網路上突然出現了一個「害群之馬」,因為該公司的設定或是內部線路的問題,對著其他公司的鄰居路由器,重複的,每五秒鐘請求鄰居「刪除規則999」、「加入規則999」,也就是跟前面的例子一樣的「抽出梅花三」、「放回梅花三」,這種垃圾請求擴散出去後,所有數十萬數百萬台的路由器,就跟著這個「害群之馬」反覆的「抽出來」、「放回去」,這豈不是在浪費全體路由器的處理資源嗎?
拍動Flapping
這樣的重複指定某一筆路由資訊「抽出來」、「放回去」,如同這一筆路由資訊一會兒「上」,一會兒「下」,上上下下,就好像是鳥類的翅膀上上下下地拍動,因此這個現象被稱為「路由拍動」(Route Flapping)。
持續而重複的拍動會癱瘓小型路由器
更何況,很多公司或組織,原本路由器的硬體處理效能只能應付平常的工作,就已經不夠快,沒有多餘的硬體資源了。一旦網際網路上面出現了這種害群之馬,路由器的處理器肯定承擔不起這些意外的、完全無意義、又浪費處理資源的額外操作。最後路由器不是封包傳送效能越變越慢,就是路由器用光了緩存記憶體後直接整台重開機。所有穿越這套路由器的封包,無論目的地是不是「害群之馬」的封包,當下就全部都過不去,全部都斷線了。
一個「害群之馬」,影響到全體的流量。
自我保護機制:(遲滯)阻尼Dampening
因此,路由器設計時都會內建一個自我保護功能。當某一筆路由資訊更動太過於頻繁,路由器就會自動將這一筆路由資訊標記為「黑名單」:這一筆路由資訊將不被路由器參照使用,如同這筆路由資訊完全不存在一樣,所有目的地往這個網段的封包全都丟棄。路由器不需要浪費資源去跟著重複「抽出來」、「放回去」,讓路由器還能維持「游刃有餘」的工作。簡單的說,就是放棄掉「害群之馬」,來讓其他正常使用者還可以繼續正常工作。等候經過一個冷靜期,如果「拍動」的狀況解除了,這一筆路由資訊才會再度被回頭參照使用,進到封包查詢的路由表中,這個網段才會恢復連線。
要冷靜多久才算狀況解除,如何評估,整個機制通稱為「阻尼Dampening」。
通常是處理速度越慢的路由器,越需要阻尼的自我保護。這個功能可以透過設定開啟、調整敏感度、或是關閉。處理效能越好的路由器,通常可以設定成比較不敏感,或是設定成平時關閉,必要時才手動打開。
回到台灣學術網路無法連線B站問題
其實根本原因就是因為「B站」自己發出的路由資訊,最近因為不明原因持續產生路由拍動,當這個現象擴散到台灣學術網路的路由器,觸發了阻尼這道自我保護的機制。因此,在這段阻尼自動啟動的時間當中,無法經由台灣學術網路連上「B站」。
我目前的觀察,外人很難要求「B站」立刻自己解決拍動的問題,只能等待「B站」的善意回應。台灣學術網路這裡,我建議可以考慮在路由器硬體還能負擔的前提下,調整阻尼設定,設成比較不敏感。或者是,乾脆多編一些預算給教育部,比照商業電信公司(例如中華電信、台灣大、遠傳),儘快大幅升級路由器硬體的效能。
One more thing…
話說回來,台灣學術網路TANet原本就是為了學術研究而存在,例如很多國際間的學術論文查閱系統,都透過台灣學術網路連接。台灣學術網路運作的費用,全部由台灣的教育部贊助,幾乎不跟各連線學校另外收取國際流量的費用,如果只用來欣賞休閒娛樂的影片,實在有點可惜。
每個學校、學生宿舍原本都可以自由的、自行決定要不要付費租用商用電信公司的網路,或者是個人的手機網路,完全沒有任何限制。看不到「B站」,硬要將話說成是「箝制言論自由」,說這種話的人真的太誇張了。
另外,我的記憶還停留在,台灣學術網路並不開放例如YouTube這類的影音播放服務,照道理也不應該開放「B站」才正確。國際流量使用太高的學校,當年還會定期被公告檢討,真的很丟臉。很有可能,現在已經越來越開放了。今天的學生,都要惜福啊!
在網際網路上面,跨公司的路由器跟路由器之間的路由資訊交換協定,是全世界通用的BGP (Border Gateway Protocol) 協定。我前面提到的阻尼自我保護機制,BGP協定裏面都有定義。我這裡刻意略過複雜的技術內容,讓更多人知道到底發生了什麼事。如果大家對BGP協定有興趣,我就放在其他篇幅更深入討論BGP。
這篇文章主要說明的路由器自我保護機制是什麼?
滑鼠點開來看答案。
阻尼Dampening
0 意見:
張貼留言
小技巧:也可以 匿名 留言!