1. 河豚號 > 生活百科 >

lol美服延遲高怎么解決,一招幫你快速解決

我們平常玩的很多網(wǎng)絡游戲,比如英雄聯(lián)盟/王者榮耀/PUBG等,你感覺到卡頓往往不是因為你的網(wǎng)速問題,而是因為網(wǎng)絡延時導致的,比如說LOL美服的游戲服務器在美國,而你在中國的華中地區(qū)玩著美服LOL,那么你的延遲可能會在300ms左右,因為網(wǎng)絡請求從美國到中國華中地區(qū)需要經(jīng)過很多的路由,這里面會消耗掉很多時間,如果發(fā)生了丟包,那么重發(fā)需要的延遲更是會加倍增長,而延遲往往在150ms以上時往往就會影響到你的游戲體驗了。

市面上會有一些游戲加速器,它們會在國外安置服務器,搭建一條線路,來保證你的請求能夠迅速的被處理,來降低游戲的延遲。

現(xiàn)在很多的游戲以及直播等低延遲需求的應用,一般都不會再使用原生的TCP或者UDP來進行傳輸,而是在兩者的基礎上進行擴展修改,取其優(yōu)異,比如TCP的傳輸可靠,UDP的傳輸速度。

仔細想想以前在計算機網(wǎng)絡課程中學習TCP/UDP時,就對TCP的所謂可靠傳輸感覺很怪異,真的是可靠到太過慎重了,說到慎重就不得不提這個月的一部新番《這個勇者明明超強卻過分慎重 》。

 

談談網(wǎng)絡游戲中的延遲解決方案

 

昨天看了第一話,吹爆!

說回TCP,當時覺得它的超時重傳RTO時間每次都會翻倍,如果一個包多次超時,那下次重發(fā)這個包不是需要很久,延遲這不就上來了? 還有它的重傳,丟了一個包就需要重傳之后所有的包,過分的慎重,雖然說可以保證可靠性,但是這對于我們毫秒級即時通訊之類的應用確實不太友好。

在此前提下,有了很多基于TCP或是UDP的改良,專門針對網(wǎng)絡游戲以及音視頻通話中的延遲,本篇要說的就是KCP協(xié)議。

KCP協(xié)議是什么

KCP是一個快速可靠協(xié)議,能以比 TCP浪費10%-20%的帶寬的代價,換取平均延遲降低 30%-40%,且最大延遲降低三倍的傳輸效果。

純算法實現(xiàn),并不負責底層協(xié)議(如UDP)的收發(fā),需要使用者自己定義下層數(shù)據(jù)包的發(fā)送方式,以 callback的方式提供給 KCP。

連時鐘都需要外部傳遞進來,內(nèi)部不會有任何一次系統(tǒng)調(diào)用。

有一種叫KCPtun的實現(xiàn),可以把我們的TCP請求轉(zhuǎn)化成KCP+UDP在公網(wǎng)上傳輸。

 

談談網(wǎng)絡游戲中的延遲解決方案

 

KCP與TCP的比較

TCP是為流量設計的(每秒內(nèi)可以傳輸多少KB的數(shù)據(jù)),講究的是充分利用帶寬。而 KCP是為流速設計的(單個數(shù)據(jù)包從一端發(fā)送到一端需要多少時間),以10%-20%帶寬浪費的代價換取了比 TCP快30%-40%的傳輸速度。

TCP信道是一條流速很慢,但每秒流量很大的大運河,而KCP是水流湍急的小激流。

KCP有正常模式和快速模式兩種,通過以下策略達到提高流速的結果:

RTO翻倍vs不翻倍(RTO超時重傳):

TCP超時計算是RTOx2,這樣連續(xù)丟三次包就變成RTOx8了,十分恐怖,而KCP啟動快速模式后不x2,只是x1.5(實驗證明1.5這個值相對比較好),提高了傳輸速度。

選擇性重傳 vs 全部重傳:

TCP丟包時會全部重傳從丟的那個包開始以后的數(shù)據(jù),KCP是選擇性重傳,只重傳真正丟失的數(shù)據(jù)包。

快速重傳:

發(fā)送端發(fā)送了1,2,3,4,5幾個包,然后收到遠端的ACK: 1, 3, 4, 5,當收到ACK3時,KCP知道2被跳過1次,收到ACK4時,知道2被跳過了2次,此時可以認為2號丟失,不用等超時,直接重傳2號包,大大改善了丟包時的傳輸速度。

延遲ACK vs 非延遲ACK:

TCP為了充分利用帶寬,延遲發(fā)送ACK(NODELAY都沒用),這樣超時計算會算出較大 RTT時間,延長了丟包時的判斷過程。KCP的ACK是否延遲發(fā)送可以調(diào)節(jié)。

UNA vs ACK+UNA:

ARQ模型響應有兩種,UNA(此編號前所有包已收到,如TCP)和ACK(該編號包已收到),光用UNA將導致全部重傳,光用ACK則丟失成本太高,以往協(xié)議都是二選其一,而 KCP協(xié)議中,除去單獨的 ACK包外,所有包都有UNA信息。

非退讓流控:

KCP正常模式同TCP一樣使用公平退讓法則,即發(fā)送窗口大小由:發(fā)送緩存大小、接收端剩余接收緩存大小、丟包退讓及慢啟動這四要素決定。但傳送及時性要求很高的小數(shù)據(jù)時,可選擇通過配置跳過后兩步,僅用前兩項來控制發(fā)送頻率。以犧牲部分公平性及帶寬利用率之代價,換取了開著BT都能流暢傳輸?shù)男Ч?/p>

 

談談網(wǎng)絡游戲中的延遲解決方案

 

如果網(wǎng)絡永遠不卡,那 KCP/TCP 表現(xiàn)類似,但是網(wǎng)絡本身就是不可靠的,丟包和抖動無法避免(否則還要各種可靠協(xié)議干嘛)。在內(nèi)網(wǎng)這種幾乎理想的環(huán)境里直接比較,大家都差不多,但是放到公網(wǎng)上,放到3G/4G網(wǎng)絡情況下,或者使用內(nèi)網(wǎng)丟包模擬,差距就很明顯了。公網(wǎng)在高峰期有平均接近10%的丟包,wifi/3g/4g下更糟糕,這些都會讓傳輸變卡。

本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/39483.html

聯(lián)系我們

在線咨詢:點擊這里給我發(fā)消息

微信號:15705946153

工作日:9:30-18:30,節(jié)假日休息