TCP-suorituskyvyn pullonkaulojen tunnistaminen
Yksittäisen TCP-vuon todellinen siirtonopeus jää usein huomattavasti liittymän teoreettista nimellisnopeutta alhaisemmaksi. Kun tietoa siirretään IP-verkkojen yli, suorituskykyyn vaikuttavat samanaikaisesti fyysinen yhteysnopeus, verkon etäisyydestä johtuva kiertoviive, vastaanottavan laitteen puskurointikyky sekä siirtotiellä tapahtuva pakettihävikki.
Network Latency Bandwidth Calculator on työkalu, joka laskee verkkopolun todellisen suorituskykykaton syötettyjen parametrien perusteella. Syöttämällä polun ominaisuudet laskin ilmoittaa arvon ”Odotettu TCP-suorituskyky” sekä yksilöi aktiivisen pullonkaulan ilmoituksella ”rajoittava tekijä: ‹constraint›”, jossa rajoittavana tekijänä on joko ”yhteyskapasiteetti”, ”vastaanottoikkuna” tai ”pakettihävikki”.
Laskimen syötteet ja parametrit
Laskimen toiminta perustuu kuuteen keskeiseen syötekenttään, joiden avulla mallinnetaan siirtotien fyysiset rajat ja protokollatason asetukset:
- Yhteysnopeus: Yhteyden hitain osuus — usein liittymäsi ilmoitettu nopeus. Arvon on oltava suurempi kuin nolla.
- Kiertoviive (RTT): Ping-aika vastapuolelle — käytä suurinta kuormituksen alaisena odottamaasi arvoa. Arvon on oltava suurempi kuin nolla.
- Tietomäärä: Siirrettävä hyötykuorma — tiedosto, varmuuskopio tai tietoaineisto. Arvon on oltava suurempi kuin nolla.
- Vastaanottoikkuna: Tavut, jotka vastaanottaja voi puskuroida. Arvon on oltava suurempi kuin nolla, eikä se saa ylittää RFC 7323 -standardin mukaista enimmäiskokoa eli 1 073 725 440 tavua. Jos kenttä jätetään tyhjäksi, laskenta suoritetaan ilman ikkunarajoitusta.
- MSS (tavua): Hyötytavuja pakettia kohden — 1,460 täyttää tavallisen Ethernet-kehyksen. Arvon on oltava kokonaisluku välillä 1–65 495. Jos kenttä jätetään tyhjäksi, protokollan yleiskustannuksia ja hävikkiä ei oteta huomioon.
- Pakettihävikki (%): Keskimääräinen pakettihävikkin todennäköisyys. Arvon on oltava välillä 0–100 prosenttia. Tyhjä tai 0 tarkoittaa, ettei hävikkirajoitusta ole.
Käyttöliittymässä on myös painike ”Lataa esimerkki” kenttien täyttämiseksi malliarvoilla sekä painike ”Tyhjennä” syötteiden nollaamiseksi. Tulosten tarkkuutta voidaan säätää valinnalla ”Näytettävät desimaalit”.
Suorituskyvyn ja siirtoajan tulokset
Laskin tuottaa kattavan analyysin verkkoyhteyden suorituskyvystä ja jakaa tulokset seuraaviin mittareihin:
- Odotettu TCP-suorituskyky: Todellinen odotettavissa oleva siirtonopeus, jota rajoittaa matalin laskennallisista katoista.
- Siirtoaika: Kokonaisaika, joka sisältää viiveen ja tiedonsiirron.
- Aika ensimmäiseen tavuun (1 RTT): Yhteyden muodostumiseen ja ensimmäisen paketin saapumiseen kuluva aika.
- Massasiirtoaika: Varsinaisen datan siirtoon kuluva aika ilman ensimmäisen kiertoviiveen vaikutusta.
- Kaistanleveys-viive-tulo: Siirtotiellä kullakin hetkellä olevan datan määrä.
- Ikkuna polun täyttämiseksi: Vastaanottopuskurin koko, joka vaaditaan yhteysnopeuden täysimääräiseen hyödyntämiseen.
- Ikkunarajoitteinen suorituskyky: Enimmäisnopeus, jonka käytössä oleva vastaanottoikkuna sallii kyseisellä kiertoviiveellä.
- Hävikkirajoitteinen suorituskyky (Mathis): Pakettihävikin asettama teoreettinen yläraja suorituskyvylle.
- Yhteyskatto yleiskustannusten jälkeen: Suurin mahdollinen hyötykuorman siirtonopeus, kun fyysisestä nopeudesta vähennetään protokollakehysten vaatimat tavut.
- Protokollan tehokkuus: Hyötydatan suhde kokonaisliikenteeseen siirtotiellä.
Laskettujen tietojen tallentamista varten käyttöliittymässä on painike ”Kopioi tulos”.
Kaavat ja matemaattinen mallinnus
Laskimen osio ”Kaavat ja sijoitukset” näyttää yksityiskohtaisesti, miten välitulokset ja lopullinen suorituskyky johdetaan syötetyistä arvoista:
- Pääkaava:
suorituskyky = min(nopeus × tehokkuus, ikkuna ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = nopeus × RTT - Protokollan tehokkuus:
Protokollan tehokkuus = MSS ÷ (MSS + 78 B) = ‹mss› ÷ ‹frame› = ‹eff› (40 B paketin otsikkotiedot + 38 B siirtotiellä)Malli olettaa standardin Ethernet-kehyksen, jossa pakettikohtaiseksi yleiskustannuksesemme lasketaan 78 tavua (40 tavua TCP/IP-otsikkotiedoille ja 38 tavua fyysisen siirtotien varauksille). - Yhteyskatto:
Yhteyskatto = nopeus × tehokkuus = ‹rate› × ‹eff› = ‹value› - Kaistanleveys-viive-tulo (BDP):
BDP = nopeus × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes› - Ikkuna polun täyttämiseksi:
Ikkuna polun täyttämiseksi = BDP ÷ 8 = ‹bdp› → ‹window› - Ikkunakatto:
Ikkunakatto = ikkuna ÷ RTT = ‹window› ÷ ‹rtt› = ‹value› - Hävikkikatto (Mathis):
Hävikkikatto (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value› - Odotettu suorituskyky:
Odotettu suorituskyky = matalin näistä katoista = ‹value› → rajoittava tekijä: ‹constraint› - Siirtoaika:
Siirtoaika = RTT + 8 × koko ÷ suorituskyky = ‹rtt› + 8 × ‹size› ÷ ‹throughput› = ‹time›
Järjestelmän huomautukset ja poikkeustilanteet
Laskin analysoi syötettyjä arvoja ja näyttää dynaamisia huomautuksia verkkopolun erityispiirteistä:
- Jos polun täyttäminen vaatii yli 65 535 tavun puskuria, laskin ilmoittaa: ”Tämän polun täyttäminen vaatii
‹window›ikkunan — tämä ylittää 65,535-tavun skaalaamattoman enimmäiskoon, joten molempien osapuolten on neuvoteltava TCP-ikkunan skaalaus (RFC 7323).” - Jos vaadittu ikkuna ylittää TCP-protokollan absoluuttisen rajan, laskin ilmoittaa: ”Tämän polun täyttäminen vaatii
‹window›— tämä ylittää suurimman ikkunan, jonka TCP voi neuvotella (1,073,725,440 tavua). Yksittäinen vuo tällä polulla ei voi koskaan ylittää arvoa‹value›.” - Jos vastaanottoikkuna on asetettu liian pieneksi suhteessa yhteysnopeuteen, laskin ehdottaa: ”Vastaanottoikkunan nostaminen arvoon
‹window›sallisi tämän siirron saavuttaa jopa arvon‹value›.” - Jos pakettihävikki ylittää yhden prosentin, laskin varoittaa: ”Yli 1% hävikki on Mathisin mallin luotettavan alueen ulkopuolella — käsittele hävikkikattoa optimistisena arviona.”
Mallin rajaukset ja virhetilanteet
Laskennassa käytettävät mallit kuvaavat vakaassa tilassa olevaa yksittäistä TCP-vuota. Todelliset verkkosiirrot alkavat hitaammin ja voivat jäädä laskettujen arvojen alapuolelle, sillä malli ei huomioi TCP:n hidasta aloitusta (slow start), ruuhkanhallinnan dynaamista hienosäätöä, vastaanottavan laitteen prosessointihidastuksia tai TLS-kättelyiden vaatimia ylimääräisiä viiveitä.
Virheelliset syötteet estävät laskennan ja tuottavat jonkin seuraavista virheilmoituksista:
- Jos syöte ei ole numeerinen:
"‹field›: “‹token›” ei ole luku." - Jos yhteysnopeus on nolla tai negatiivinen:
"Yhteysnopeuden on oltava suurempi kuin nolla." - Jos kiertoviive on nolla tai negatiivinen:
"Kiertoviiveen on oltava suurempi kuin nolla." - Jos tietomäärä on nolla tai negatiivinen:
"Tietomäärän on oltava suurempi kuin nolla." - Jos vastaanottoikkuna on nolla tai negatiivinen:
"Vastaanottoikkunan on oltava suurempi kuin nolla." - Jos vastaanottoikkuna ylittää standardin rajan:
"TCP ei voi neuvotella yli 1,073,725,440 tavun ikkunaa (RFC 7323 -ikkunan skaalaus)." - Jos MSS on sallitun alueen ulkopuolella:
"MSS:n on oltava kokonaisluku välillä 1–65,495 tavua." - Jos pakettihävikki on virheellinen:
"Hävikkisuhteen on oltava välillä 0–100 prosenttia." - Jos laskenta ylittää järjestelmän rajat:
"Arvo tai välitulos ylittää tuetun lukualueen."
Tietosuoja ja tietojen käsittely
Käyttäjän syöttämien tietojen yksityisyys on suojattu suoritusarkkitehtuurilla. Jokainen syöttämäsi arvo lasketaan tässä selaimessa — mitään tietoja ei lähetetä minnekään. Laskenta tapahtuu kokonaan paikallisesti käyttäjän omassa päätelaitteessa.
Usein kysytyt kysymykset
Mikä on kaistanleveys-viive-tulo (BDP), ja miksi se määrittää ikkunan koon?
BDP — yhteysnopeus × kiertoviive — on siirtotiellä kullakin hetkellä olevan datan määrä. TCP:llä voi olla kerrallaan korkeintaan yhden kuittaamattoman ikkunan verran dataa matkalla, joten BDP:tä pienempi ikkuna jättää siirtotien osittain tyhjäksi: 100 Mbit/s nopeudella ja 50 ms RTT-viiveellä siirtotie vetää 625 kB, ja 65,535-tavun ikkuna täyttää siitä hädin tuskin kymmenesosan. Siksi nopeat ja pitkät yhteydet vaativat TCP-ikkunan skaalausta (RFC 7323), joka nostaa neuvoteltavissa olevan enimmäiskoon 65,535 tavusta noin 1 gigatavuun.
Miksi siirtoni on hitaampi kuin yhteysnopeus, josta maksan?
Yksittäinen TCP-vuo kohtaa kolme toisistaan riippumatonta kattoa, joista matalin määrittää lopullisen nopeuden. Protokollan yleiskustannukset leikkaavat itse yhteydestä noin 5% — tavallinen Ethernet-kehys kuljettaa 1,460 hyötytavua siirtotien 1,538 tavusta. Vastaanottoikkuna rajoittaa suorituskyvyn arvoon ikkuna ÷ RTT, joten perinteinen 65,535-tavun ikkuna rajoittaa 50 ms viiveellä varustetun polun noin 10.5 Mbit/s nopeuteen riippumatta siitä, kuinka nopea itse yhteys on. Hävikki puolestaan rajoittaa sen arvoon (MSS ÷ RTT) ÷ √hävikki. Yllä oleva tulos nimeää, mikä näistä katoista rajoittaa syöttämiäsi arvoja.
Miten pakettihävikki rajoittaa TCP-suorituskykyä?
TCP tulkitsee hävikin ruuhkautumiseksi ja puolittaa lähetysnopeutensa jokaisen hävikkipisteen kohdalla, joten pienikin hävikki vaikuttaa merkittävästi nopeilla yhteyksillä. Mathisin malli arvioi katoksi (MSS ÷ RTT) ÷ √p — 0.01% hävikillä 50 ms viiveen polulla 1,460-tavun MSS-arvolla tämä on noin 23 Mbit/s yhteysnopeudesta riippumatta. Malli olettaa hävikkitapahtumien olevan tasaisesti jakautuneita ja toisistaan riippumattomia; alle 1% hävikillä se vastaa hyvin todellisuutta, ja ryöppyilevälle hävikille se antaa optimistisen arvion.
Ovatko tässä käytetyt megatavut samoja kuin tiedostonhallinnassani?
Ei aivan. Tämä sivu käyttää tietoliikenteessä yleisiä kymmenjärjestelmän yksiköitä: 1 kbit = 1,000 bittiä ja 1 MB = 1,000,000 tavua. Useimmat tiedostonhallintaohjelmat laskevat koot 1024-kantaisina yksikköinä, vaikka ne usein merkitään virheellisesti MB-muodossa — siellä ”100 MB” tiedosto on yleensä 100 MiB ≈ 104.86 kymmenjärjestelmän megatavua (MB), joten sen siirtäminen kestää noin 5% pidempään kuin kymmenjärjestelmän luku antaa ymmärtää. Syötä tähän 104.86 MB saadaksesi täysin vastaavan tuloksen.