有沒有覺得前兩天的網慢了?“512k”事件惹的禍

guokr發表於2014-08-15

  北京時間2014年8月12日下午4點鐘開始,全世界的網路突然都變慢了一點點。

  不幸的是,接下來還可能又會慢下去。並且,這一回錯的真的不是你,是世界。

  錯在哪呢?路由規則太多,溢位了。

 不夠用的地址

  你很可能見過譬如192.168.1.1這樣的數字串,這樣的數字就是所謂的“IP地址”。這是你平常訪問的那些網站的“真實地址”,當你輸入www.guokr.com(這叫“域名”)的時候,網路會把它轉換成真正的地址111.13.57.142,然後才能找到這個網站在哪裡。如果這個轉換系統(也就是所謂的“DNS”)出了問題,那網路就要出問題——不過不是這次這種問題,打住。

  常見的IP地址裡的數字是有規定的:四個數字,每個可以從0到255,這被稱為“IPv4”(網際網路協議第四版)。那麼一共就會有2^32次方個不同的地址,也就是將近43億。

  ……好像不是很多的樣子。都不夠一人分一個呢。

  而且這43億地址還有不少是保留的,比如所有以9開頭的原則上都是IBM的,12開頭的都是AT&T的,17開頭的則是蘋果的,18開頭的歸麻省理工……沒辦法,誰叫人家搶得早。有些厚道的組織,比如史丹佛,本來佔據了所有36開頭的,現在正把多餘的地址拿出來回饋社會,但人並不都這麼好心啊。

  2012年4月一次IPv4地址普查顯示的使用情況,黑色代表沒有資料,其他顏色代表使用率。由於調查方法問題,實際佔用率肯定會比圖中看起來更高。圖片來源:Internet Census 2012 

  所以那幫技術人員實在太目光短淺了?這還真不是,IPv4協議誕生於1981年,早在80年代末他們就預料到了這個不夠用的問題,可是新一代協議IPv6——可以提供3.4×10^38個地址——直到1998年才出臺。

  技術人員終於克服了拖延症,接下來?當然是剩下所有人開始犯拖延症。IPv6到現在整整十六年過去了,網際網路上使用IPv6的人數嘛——大概4%吧。(該數值基於訪問google的人統計,考慮到中國這個神奇國度的存在,真實數字絕對更低。)

  The ISP Column釋出的IPv6使用使用者佔各國使用者的比例圖(2013年6月)。別被顏色騙了,像法國那麼綠,其實不過5.46%。好玩的是,使用者比例最高的竟然是羅馬尼亞,10.84%。

 耍花招的後果

  為了推遲IPv4擠爆的同時又不去辛辛苦苦換新協議,我們在抓緊時間利用每一點殘存的IP空間碎片。以前大手大腳一整塊幾萬地址分給一個組織的好日子一去不復返了,就連一小撮256個地址都要寸土必爭。

  但是這對路由器來說就辛苦了。路由器依靠一個名為“路由表”的東西來快速找到方向,每一個機構拿到一段IP之後都會希望在路由表裡加一句規則來加快自己的訪問速度。但是每一條規則都要佔據同樣大小的空間,所以網上的地址越碎,需要的路由表就越大。

  路由表是個很重要的東西,所以路由器會專門留出一塊高速儲存器來存它。譬如某款路由器足夠存一百萬個條目,想來應該是足夠了吧!而且眼看IPv6必將征服市場,我留一半(512k)給v4,另一半給v6,怎麼說都沒問題吧!事實上大部分路由器生產商都想當然認為512k足夠用了,都給v4留了這麼多,算是行業標準。

  不幸的是,對於網際網路碎片化的程度,他們顯然(又)低估了。

  多年的增長已經讓路由表突破了50萬大關,而在8月12日,美國通訊公司Verizon又一口氣往v4路由表裡加了15000個條目,使總數抵達了約515000個,超過了上限(相比之下,v6還只有可憐的2萬個條目)。這些多出來的資訊必須存在更慢的普通儲存器裡,導致了速度變慢甚至區域性網路不穩定。Verizon很快發現了這個問題並把多出來的條目削了回去,但是餘波至少持續了數小時。這個事件就是所謂的“512k”事件,也許就是你那天覺得網路慢了的元凶。

  但這不是問題的結束,只是開始。怎麼說路由表都是肯定要自然增長的,沒有這些公司亂搞也早晚會自己超過這個數字。而這些問題都出在路由器這個實打實的東西上,換路由器可是要花錢的。

  誠然,我們可以繼續拆東牆補西牆,來一次廣泛的韌體升級,把更多的快速儲存器留給v4;而代價可想而知,就是進一步削減了留給v6的空間。要是早用v6取代v4,IP地址夠用的話,現在就不會出現地址碎片化、路由表過大的問題了嘛!不過考慮到ie6頑強生存了13年到現在沒有消失,連百利無一害的純軟體更新都做不到,好像也不應該對人類抱太大希望才對。

  事實上,想想之前人們還以為記憶體640k就足夠,兩位數字儲存年份就足夠,32位儲存秒數就足夠,現在又一個想當然的上限被突破帶來了麻煩,簡直就是理所應當的事情嘛。(編輯:Ent)

  當然,早晚有一天IPv6也會用光,那時候嘛……

  本文寫作過程中得到了Philip_Tzou的大力幫助,特此致謝。

相關文章