如何徹底解決「網路延遲」這個問題?
我在想,要是有可以讓全世界的人上網都不卡不延遲的技術,那一定和發明互聯網一樣了不起。這種夢想能否在有生之年實現呢?
延遲(RTT)主要是鏈路層的時鐘和令牌(不管是分時還是分頻分碼,都存在搶佔),設備間的 buffer time和設備處理時間,中轉次數,等幾個要素決定的。
上面說的這些都可以通過錢來解決的問題,比如最簡單的換設備,增加信道容量,用更好的傳輸介質都可以解決,包括架設新的海底光纜。
上面這些是最直接影響速率的東西,但是有個上限就是光速,光速一秒鐘繞地球七圈半,數據從中國到美國往返一次,差不多是繞了地球一圈了,和 1000毫秒 / 7.5 = 133毫秒。
所以 ping 美國 rtt 的理論下限是 133ms,不可能突破的。不過大部分美國伺服器到中國的 ping 值都差不多是 250ms 左右,遠遠高於這個值,說明還有很大的提升空間。
再說卡的問題,卡大分是中間設備丟包,為什麼中間設備會丟包呢?因為你告訴設備需要發送的包超過設備可以往外發的能力了。丟包又和信道擁擠程度有很大關係,忙的時候,每秒數據傳輸量接近信道容量限制,丟包就會指數上升。
有少部分情況是由於鏈路太長,中間節點過多,某些時候中間一個環節出問題(比如某個點遭受到其他方向的流量侵佔),由於設備投資不夠,缺乏優質的備選路由,所以會瞬斷個幾秒鐘。
不過還有一大半情況的卡是屬於胖管道(fat-pipe),即帶寬很高,延遲和丟包率同樣也很高,比如帶寬有餘,但中間設備短時間內被其他方向的流量侵佔,異或設備太舊 kps很低,就只能丟包,典型的情況是美國到中國,所以還有很多人黑tcp協議棧,每個往外發的包都發兩遍,丟失了就用另外一個,然後從試驗上看起來提高了美國到中國的數據傳輸速度,但其實就是在耍流氓。
上面這些丟包造成的卡 ,隨著設備更新換代,都會得到改善。然而可悲的是骨幹網建設大大落後於時代發展,大部分提速都是再提用戶接入端的速度,不願意投錢,又想賣給更多用戶,就只能讓更多人擠在一些便宜的窄窄的 「省道」 「國道」 上了。你如果自己願意花錢,租用更好的專線,或者自己從深圳拉一根線到香港 IDC 出國,那麼你相當於花錢走了高速公路,能獲得比別人更好的服務質量。
想等著電信聯通來升級骨幹網?對不起,他們還在處於比誰更流氓的時代呢,還沒進化到比誰服務更好的階段,只能想開點了,早兩年電信聯通還在互相剪光纜呢,這兩年他們已經文明了很多了。
說了那麼多,其實總結下來只有三個字:錢!錢!錢!
---------
PS: 《三體》裡面三體人和在地球的智子之間好像就使用了量子糾纏實現了超光速通信,量子糾纏是指粒子在由兩個或兩個以上粒子組成系統中相互影響的現象,這種影響不受距離的限制,即使兩個粒子分隔在直徑達10萬光年的銀河系兩端,一個粒子的變化仍會瞬間影響另外一個粒子。腦洞傳送門:量子糾纏:遠超光速的「傳輸」如何看待量子糾纏的超距作用? - 量子物理
TL;DR: 所有人都無延時上網是一個美麗的夢,在現有的技術框架和網路結構中,等那幾秒是必須付出的代價。這不僅是有沒有錢鋪多少塊光纖的問題,在網路架構的根源上還有著隊列時間的問題。 等就等吧,畢竟在宇宙蠻長的138億年中,那幾秒相當於不存在。
---------------------------------------把傳播速度延時(propagation delay)做為延時的下限,這在理論上似乎無可爭議,但這樣的條件也僅僅存在於理論,而且是一個悖論(下面會說明)。在實際情況中,我們所體驗到的上網延時,諸如打開頁面慢、載入視頻時間長、更新個iOS升級系統得等一晚上這樣的齷齪的事情,在應用層面,所使用程序的應用處理速度,雲端的響應時間,自己使用的主機的牛X 程度對延時的體驗也有影響,但這裡我們只關注普遍意義上的『上網速度』。這『上網速度』所關注的網路層面,主要要怪三個妖怪:傳播速度延時(propagation delay)、 傳輸速度延時(transmission delay)和隊列延時(queuing delay)。
這三個延時妖怪中,傳播速度延時是一個衡定輸出,但基本沒有什麼攻擊力。傳輸速度延遲是一個物理大招,而且根據你的單次數據載入量成正比的一個輸出。隊列延時是一個暴機傷害,一般都是 miss,但中了後傷起來卻蠻嚇人的。
首先是傳播速度延時。更為準確的計算應該要考慮光纖的 refractive index。目前商用的單模光纖(Single-Mode Fiber) 的 core index 是1.46,所以繞地球一圈後的最小 RTT (round trip time) 近似是 1000 ms / 7.5 * 1.46 = 195.67 ms。然後世界上也沒有什麼人會在意這0.2s 的不痛不癢的延時。(對於時間真的就是金錢的高頻交易公司的人來說,縮短這短短的傳播速度延時對他們來說也是多一大筆錢 [1])
其次是大頭的傳輸速度 delay。目前我們所花在同步文件、上傳郵件附件、緩衝視頻上等待的時間大多可以歸結在傳輸速度不足上。這速度主要是電信局說了算。
但不要立馬怪責到電信壟斷不願升級骨幹網的陰謀論上,華為、中興的銷售可每天都拍著電信局的馬屁要他們買設備升級網路,現在的運營商也愁為什麼沒有夠粗的管道 (fat pipe) 來幫他們解決流量問題。現在實現商用的骨幹光纖網路可以實現單頻道 (single channel) 100-Gbit/s 的傳輸速度 [2],如果完整的利用起 C-band (1539nm - 1565nm) 和 L-band (1565nm - 1625nm) 的波段,現有的 ITU-T 的 50-GHz 框架下一根光纖可以塞進200以上的100-Gbit/s 頻道,這樣來算是有 20-Tbit/s。這是已經商用的成果,若放眼通信業界未來幾年的路線圖,使用高階調製技術(High-order modulation format) 和超級頻道技術 (Superchannel) 來實現400G 乃至單頻道 1Tbit/s 的結果也都已經赫然紙上 [3],若加上近年來炒的超紅火的的 SDM (Spatial division multiplexing) 技術,再一根光纖里塞上 ExBit/s (1後面18個0) 的傳輸速度也不是不現實 [4]。想必未來諸如『一秒傳輸 XXX 部4K電影網速實現』的標題黨文章不愁沒有素材。
但就算能在一根光纖里塞進去這樣的速度,這個世界上目前也沒有人能夠享用到20-Tbit/s級別的網速和世界互聯。I mean, no one. 原因如下三點:
1. 一根光纖不是給你一個少年用的。一個骨幹網的光纖首先要接入一個地方局RO (Regional Office),在這個 RO 高速光纖的速度被分載成 N 份分配給各個用戶 (實際情況要複雜的多,這裡只是列舉了一個極簡模型)。再快的速度被諸如幾萬用戶分一分,能給你100-Mbps 的速度,你知道工程師們有多努力么!
2. 那說電信為什麼不多鋪一點光纖,不鋪還不是因為資本家屬性 (電信是社會主義國有企業,去他媽的資本家)。 假設我們把一根核心網的光纖鋪到了你家門口,單模 SMF 100G 全波段 20-Tbit/s,以後看片再也不用等菊花轉的幻想在我眼前浮現。但等等, 你拿什麼東西去收這信號?你得有一個 Modern 吧。一個100-Gb/s 的接收器具體 Alcatel-lucent 買多少錢我還沒到那個 level 不知道,但可以和你把裡面的設備拆解一下:首先因為100G 以上的速度都要使用相干技術,得有一個 Laser,線寬得窄一些,最好在 KHz 級別,要價在幾千刀;其次你要有高頻響帶寬的 photodiode,要價在幾千刀;再次你要有一個 sampler和高速 DSP 去處理接受的信號,要價在幾萬美元刀幾十萬美元不等。這樣算來光一個100G 的收發器就得最少花掉個還幾萬刀的,你肯么?
3. 好,我們客戶是國民老公王思聰,裝個寬頻幾萬到算什麼,給我最先進的技術,錢都不是問題,我家就要都用最好的。似乎一切都沒好了。
但這時出現的最後一道壁壘,也就是第三個延遲成分 隊列延時 (queuing delay) 和他帶來的悖論問題。隊列延時是指數據包在經過路由中轉分發是在路由器上所滯留的時間。如圖所示,假設王思聰家是 B 點,A 是直接連接王思聰家和外部 internet 的路由,視頻網站Y 和遊戲伺服器 S 分別在響應各自接收到的視頻和遊戲要求。
假設視頻網站Y的視頻文件包先到路由 A,遊戲信息S稍晚到達,按照路由分發先到先滾的原則,遊戲信息 S 被存儲在了路由器 A 本地,等待視頻文件包發送完畢後才能發送,這個遊戲信息 S 在路由器上被存儲等待的時間即為隊列時間。但王總家下載速度堪比骨幹核心網路,數據包應該秒秒鐘就送完啊?這裡出現了一個悖論:當你的流出信息流和流入信息流速度一致時,平均的隊列延時會趨近於無窮大。假設進入該路由的數據包軍事 L-bits, a 為每秒平均到達該路由的包的個數,這是流入流速為 La。我們設定流出流速為 R,定義為 La/R 流量強度(Traffic intensity)。同時我們假設抵達路由包的個數服從泊松隨機分布.....(*^%$#@#$....經過一堆你不會看我也不想仔細講的推到之後,我們可以得到 期望隊列時間 和 流量強度的關係
這也是在設計網路的時候一定要遵循的 Traffic Intensity 一定要小於1的道理。並且因為當今Internet 是構架在經典的 TCP/IP 結構上,實際物理層面負責處理、中轉 TCP/IP 數據包的是必定是路由,所以我們的用戶終端接入技術必定是應該遠小於骨幹網的速度的。
為了大家好,每個人還是都慢一點。
(現實中幾乎所有的接入流都會畢輸出流要小,但仍然會發生丟包。原因就有很多了,但歸根結底是因為隊列時間過長所至。上面只是提到了一個隊列延時的一個極端情況。)
或許現在能給我家連個1-Gbps的 FTTH,上網絕X對不會有什麼延遲,但等若干年後,你看的視頻都是4K 了,你可能就會叫不夠用,得10-Gbps。技術的增長可能終究無法滿足人類的慾望(好雞湯的話)。
所以在緩衝視頻的時候等兩秒也就等兩秒吧,畢竟前面廣告都要有60秒呢。
而且在宇宙蠻長的138億年中,那幾秒相當於不存在[1] High-Frequency Traders Find Microwaves Suit Their Need for Speed http://www.bloomberg.com/bw/articles/2014-07-24/high-frequency-traders-find-microwaves-suit-their-need-for-speed
[2] The path to 100G http://www.fujitsu.com/us/Images/Pathto100G.pdf[3] OSA | 1-Terabit/s Net Data-Rate Transceiver Based on Single-Carrier Nyquist-Shaped 124 GBaud PDM-32QAM[4] OSA | 114 Space-Division-Multiplexed Transmission over 9.8-km Weakly-Coupled-6-Mode Uncoupled-19-Core Fibers請不要挑戰基本的物理原理
「上網不卡不延遲」,和「網路延遲」是完全不同的兩個問題。前者是主觀感受,後者是物理參數。
前者其實技術容易解決,加大投資即可。比如視頻會議技術,已經基本解決這個問題。
後者只能上量子通信了,目前看無解。在韓國玩韓國遊戲通常PING不超過10ms,
國內普遍30~70,100以上就瞬移了。如果有卡頓,延遲,
一般是伺服器負載或服務端程序沒優化好,or bug。還有WIFI也是延遲的罪魁禍首,你發現插網線和用無線玩遊戲在不同距離內的表現就知道......擼啊擼的同學都知道,家裡網路沒問題,
但大家都卡了,這就跟線路沒關係了。最長聽的就是XX垃圾,馬XX是**等等,你懂的。整體來說,網路延遲由
1. 你的設備,比如用無線會有延遲,你的帶寬,
想像一下以前512k寬頻和光纖打開網頁速度。2.網路提供商的設備,路線等,看上面高票答案
3.伺服器商,內容提供商,騰訊,網易,盛大等等
在有生之年,我就不抱題主一樣的希望了。目前來看只要光速極限無法突破,長距離傳輸必然存在著物理上的延時。比如中國到美國必然存在100ms左右的延時,這個是任何技術手段都無法降低的。
本質上因為互聯網基於分組交換而不是電路交換。
請高斯來優化一下光速
雖然看得雲里霧裡的,BUT, 每天上網查資料,上外網,慢得要死,都要得焦慮症啦! 也搞不明白是電腦有問題,還是網路有問題,亦或兩者都有問題,求大神支招解求,最好有提供有償服務的解決方案。拜託~~
這個問題就好像在問,如何解決「人固有一死」的這個根本性問題(O_O)?
因為光速和信號轉換等等的限制,時延不可能到零,有個極限。
但在可預見的未來,離這極限其實還挺遠,尤其是商用的。
但物聯網、雲機器人、互聯網遙操作等等應用的發展,對延遲等又特別敏感,可能只能犧牲別的性能了~網路三個關鍵參數,吞吐量,延遲,丟包率。其實很多應用可以忍受延遲,比如視頻點播有緩衝,延遲大點也沒啥。但是扛不住吞吐量小。但是像視頻會議就要求,低延遲,低丟包,吞吐量倒是佔用不大。要滿足所有參數都好很難,除非伺服器離客戶很近。因此有了各種內容分發技術,CDN,來假裝伺服器近在咫尺。
很快會出現的。
題主!提醒你一件事!根本性問題是根本上解決不了的!
提升光速。
一會斷一會通才是攻城獅的噩夢
當然。現有設備技術就能實現,但是花錢花錢花錢。光纜隨便拉,設備隨便架。但是沒意義啊。延遲在可用範圍之內就行。花費換不來收益,運營商不會幹的。(拉光纜,換設備)企業更不可能(為了幾ms的延遲多花個幾十上百萬的)。2ms的延遲和現有技術已經能做到低延遲了,剩下就是花錢買設備的事。
沒辦法的哦,除非憋玩遊戲了
即使是一百多ms的延遲,如果穩定存在,也不會很影響體驗,打cs都ok。影響體驗的關鍵是抖動(不穩定的時延)和丟包。距離越長,經過的設備越多,遇到這種情況的概率就越大。解決辦法就是網路提供商捨得砸錢。。
除非超光速
基於光電信號的網路,都是有延時的,因為即使是光、電信號,在信道中也是有限速度的。要徹底解決延遲,需要超越這種物理介質傳輸的方式,理論上量子通訊就是無延遲的(額,不計信號處理時間)。
延遲受限於物理定律,目前看不到大幅度改善的可能性。但是穩定的延遲可以通過演算法進行補償。比如中國與美國之間傳輸文件,在專線上一樣可以跑到很高的速度。而最影響傳輸效果的不是延遲,而是丟包率,丟包率,丟包率。300ms延遲,1%丟包率的鏈路的TCP傳輸速度會遠遠好於100ms延遲,3%丟包的鏈路。而改善丟包率就只是個錢的問題了。
你要請求美國的數據,怎麼都要有100多ms的延遲,再量子通信全面普及之前,有效地解決方案是各個大陸之間按照網路規模拓補分割成多個相同的子網,這些子網的數據完全相同並且一個網路數據更新後另外所有的網路同步更新(相當於把現在的互聯網複製無數個拷貝,然後分散到各個地區),然後用戶訪問最近的子網。然而在現有技術和未來可能遇見到的技術下,達成上述結構的性價比遠遠低於保持現狀,只要不是通信工程師們腦殘了,是不可能實現的
推薦閱讀:
※浩方等對戰平台的原理是什麼?
※為什麼自我調侃、分享自己糗事的網站那麼火,而卻沒有一個分享自己好事的網站火起來?
※像qq這類的軟體怎樣實現通信的呢?
※如何看待《使命召喚14》到現在都沒有任何鎖區的現況?
※為什麼用搜索引擎搜過的東西,在上別的網站時會顯示類似的廣告?這是互聯網的陰謀嗎?