TCP pralaidumo ribų supratimas
Vieno TCP srauto realaus veikimo viršutinė riba priklauso nuo trijų nepriklausomų veiksnių sąveikos: fizinio kanalo pralaidumo, priėmimo lango dydžio ir paketų praradimo rodiklio. Šis įrankis apskaičiuoja kiekvieną iš šių ribų atskirai ir nustato, kuris veiksnys veikia kaip siauriausia maršruto vieta.
Galutinis rezultatas pateikiamas kaip Tikėtina TCP pralaidumo geba, o šalia jos esanti pastaba nurodo aktyvų apribojimą: „riboja ‹constraint›“. Šis apribojimas dinamiškai įvardijamas kaip kanalo pralaidumas, priėmimo langas arba paketų praradimas.
- Kanalo riba po pridėtinių išlaidų: Fizinė terpė negali būti visiškai užpildyta naudingaisiais duomenimis dėl protokolo pridėtinių išlaidų. Skaičiuotuvas įvertina standartinį Ethernet kadrą, pridedantį 78 baitus vienam paketui (40 baitų TCP/IP antraštėms ir 38 baitus fizinės terpės pridėtinėms išlaidoms).
- Lango ribojama pralaidumo geba: Jei imtuvas negali pakankamai greitai buferizuoti duomenų, siuntėjas privalo sustoti ir laukti patvirtinimo. Ši riba apskaičiuojama kaip priėmimo lango dydis, padalintas iš dvipusio vėlinimo laiko (RTT).
- Praradimo ribojama pralaidumo geba (Mathis): Esant paketų praradimui, TCP tai interpretuoja kaip tinklo perkrovą ir sumažina siuntimo greitį. Ši riba apskaičiuojama pagal Mathis formulę.
Pralaidumo ir vėlinimo sandauga (BDP)
Norint visiškai užpildyti tinklo maršrutą, siuntėjas turi išsiųsti pakankamai duomenų, kad užpildytų visą fizinį kelią tarp abiejų galų. Šis dydis vadinamas Pralaidumo ir vėlinimo sandauga (BDP) ir yra apskaičiuojamas pagal formulę:
BDP = sparta × RTT
Skaičiuoklėje ši reikšmė išreiškiama kaip Pralaidumo ir vėlinimo sandauga ir nurodo baitų kiekį, kuris bet kuriuo momentu turi būti „kelyje“, kad tinklo kanalas būtų visiškai išnaudotas. Remiantis šiuo skaičiumi, nustatomas Langas maršrutui užpildyti. Jei jūsų įvestas Priėmimo langas yra mažesnis už šį poreikį, įrankis pateikia pastabą, nurodančią, kad padidinus priėmimo langą iki tam tikros reikšmės, perdavimas galėtų pasiekti didesnę pralaidumo gebą.
TCP lango mastelio keitimas (RFC 7323)
Klasikinis TCP protokolas naudoja 16 bitų lauką lango dydžiui nurodyti, o tai riboja maksimalų priėmimo langą iki 65,535 baitų. Šiuolaikiniuose didelės spartos ir didelio vėlinimo maršrutuose (LFN) šio dydžio nepakanka.
Siekdama išspręsti šią problemą, interneto inžinerijos grupė (IETF) apibrėžė TCP lango mastelio keitimą standartu RFC 7323. Skaičiuotuvas automatiškai įvertina šias ribas ir pateikia atitinkamus įspėjimus:
- Jei maršrutui užpildyti reikalingas langas viršija 65,535 baitų ribą, rodoma pastaba, įspėjanti, kad abi pusės privalo suderinti TCP lango mastelio keitimą pagal RFC 7323.
- Didžiausias lango dydis, kurį TCP gali suderinti naudodamas RFC 7323 mastelio keitimą, yra 1,073,725,440 baitų. Jei reikalingas langas viršija šią ribą, rodoma pastaba, nurodanti, kad vienas srautas šiame maršrute niekada negalės viršyti nustatytos maksimalios ribos.
Paketų praradimo įtaka ir Mathis modelis
Net ir labai mažas paketų praradimo rodiklis gali drastiškai sumažinti TCP pralaidumą. Skaičiuotuvas naudoja Mathis modelį, kuris remiasi prielaida, kad praradimai yra pasiskirstę tolygiai ir yra nepriklausomi.
Mathis modelis išlieka patikimas tik esant mažesniam nei maždaug 1% praradimui. Jei įvestas Paketų praradimas (%) viršija 1%, skaičiuotuvas pateikia įspėjimą, nurodantį, kad praradimo riba turėtų būti vertinama kaip optimistinė, nes realus grupinis praradimas kenkia labiau, nei prognozuojama.
Skaičiuoklėje naudojamos formulės
Skaičiuotuvas atlieka matematinius veiksmus vietoje ir pateikia pilną reikšmių įstatymą skiltyje Formulės ir reikšmių įstatymas:
- Formulė:
pralaidumas = min(sparta × eff, window ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = sparta × RTT - Protokolo efektyvumas:
Protokolo efektyvumas = MSS ÷ (MSS + 78 B) = ‹mss› ÷ ‹frame› = ‹eff› (40 B paketo antraštės + 38 B fizinėje terpėje) - Kanalo riba:
Kanalo riba = sparta × efektyvumas = ‹rate› × ‹eff› = ‹value› - BDP:
BDP = sparta × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes› - Langas maršrutui užpildyti:
Langas maršrutui užpildyti = BDP ÷ 8 = ‹bdp› → ‹window› - Lango riba:
Lango riba = langas ÷ RTT = ‹window› ÷ ‹rtt› = ‹value› - Praradimo riba (Mathis):
Praradimo riba (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value› - Tikėtina pralaidumo geba:
Tikėtina pralaidumo geba = žemiausia iš šių ribų = ‹value› → riboja ‹constraint› - Perdavimo laikas:
Perdavimo laikas = RTT + 8 × dydis ÷ pralaidumas = ‹rtt› + 8 × ‹size› ÷ ‹throughput› = ‹time›
Duomenų apdorojimas ir privatumas
Kiekviena jūsų įvesta reikšmė skaičiuojama šioje naršyklėje — niekas niekur nesiunčiama. Visi skaičiavimai atliekami lokaliai jūsų įrenginyje, todėl įvedami tinklo parametrai ir duomenų dydžiai išlieka jūsų privačioje aplinkoje.
Dažniausiai užduodami klausimai (FAQ)
Kas yra pralaidumo ir vėlinimo sandauga (BDP) ir kodėl ji lemia lango dydį? BDP — kanalo pralaidumas × dvipusio vėlinimo laikas — yra bet kuriuo momentu siunčiamų duomenų kiekis. TCP vienu metu gali turėti daugiausiai vieną nepatvirtintą langą, todėl už BDP mažesnis langas palieka kanalą iš dalies tuščią: esant 100 Mbit/s su 50 ms RTT, kanale telpa 625 kB, o 65,535 baitų langas užpildo vos dešimtadalį jo. Štai kodėl greitiems ir ilgiems maršrutams reikalingas TCP lango mastelio keitimas (RFC 7323), kuris padidina suderinamą maksimumą nuo 65,535 baitų iki maždaug 1 GB.
Kodėl mano duomenų perdavimas yra lėtesnis nei kanalo pralaidumas, už kurį moku? Vienas TCP srautas susiduria su trimis nepriklausomomis ribomis, iš kurių mažiausia tampa lemiama. Protokolo pridėtinės išlaidos sumažina patį kanalą maždaug 5% — standartinis Ethernet kadras perneša 1,460 naudingojo krovinio baitų iš 1,538 baitų fizinėje terpėje. Priėmimo langas apriboja pralaidumo gebą iki lango dydžio ÷ RTT, todėl klasikinis 65,535 baitų langas apriboja 50 ms maršrutą iki maždaug 10.5 Mbit/s, kad ir koks greitas būtų kanalas. O paketų praradimas apriboja pralaidumą iki (MSS ÷ RTT) ÷ √praradimas. Viršuje pateiktas rezultatas nurodo, kuri riba riboja jūsų įvestus skaičius.
Kaip paketų praradimas riboja TCP pralaidumo gebą? TCP praradimą traktuoja kaip perkrovą ir perpus sumažina siuntimo greitį po kiekvieno praradimo įvykio, todėl net ir labai mažas praradimo rodiklis yra svarbus greituose maršrutuose. Mathis modelis įvertina ribą kaip (MSS ÷ RTT) ÷ √p — esant 0.01% praradimui 50 ms maršrute su 1,460 baitų MSS, tai yra maždaug 23 Mbit/s, nepriklausomai nuo kanalo greičio. Modelis daro prielaidą, kad praradimo įvykiai yra pasiskirstę tolygiai ir yra nepriklausomi; kai praradimas nesiekia maždaug 1%, jis gerai atitinka realybę, o esant grupiniam praradimui, jis yra optimistiškas.
Ar megabaitai čia yra tokie patys kaip mano failų tvarkyklėje? Ne visai. Šiame puslapyje naudojami dešimtainiai vienetai, kaip įprasta tinkluose: 1 kbit = 1,000 bitų ir 1 MB = 1,000,000 baitų. Dauguma failų tvarkyklių skaičiuoja 1024 pagrindo vienetais, dažnai klaidingai žymimais MB — „100 MB“ failas ten paprastai yra 100 MiB ≈ 104.86 dešimtainio MB, todėl jo perdavimas trunka apie 5% ilgiau, nei rodo dešimtainis skaičius. Įveskite čia 104.86 MB, kad tiksliai atitiktų.