TCP թողունակության սահմանաչափերի հասկացումը
Մեկ TCP հոսքի իրական արագությունը գրեթե երբեք չի հասնում կապուղու տեսական առավելագույնին: Դա պայմանավորված է նրանով, որ տվյալների հաղորդման արագությունը սահմանափակվում է երեք անկախ գործոններից ամենացածրով՝ կապուղու թողունակություն, ընդունման պատուհան և փաթեթների կորուստ: Այս գործոնների փոխազդեցությունը որոշում է ցանցի իրական արդյունավետությունը:
Երբ տվյալները հաղորդվում են ցանցով, TCP արձանագրությունը պահանջում է ստացման հաստատում (ACK) ուղարկողին հետ վերադարձնել: Եթե ցանցի երկկողմանի ուշացումը (RTT) մեծ է, իսկ ընդունող կողմի բուֆերը՝ փոքր, ուղարկողը ստիպված է լինում կանգ առնել և սպասել հաստատմանը՝ չկարողանալով ամբողջությամբ ծանրաբեռնել առկա կապուղին: Բացի այդ, ֆիզիկական հաղորդակցուղու վրա առկա ցանկացած փաթեթների կորուստ ստիպում է TCP-ին կրճատել հաղորդման արագությունը, քանի որ արձանագրությունը կորուստը դիտարկում է որպես ցանցի ծանրաբեռնվածության նշան:
Թողունակության և հապաղման արտադրյալը (BDP)
Ցանցային ուղու հնարավորությունները գնահատելու հիմնարար մեծությունը թողունակության և հապաղման արտադրյալն է (BDP): Այն ցույց է տալիս տվյալների այն ծավալը, որը կարող է միաժամանակ գտնվել հաղորդման մեջ («on the wire») կապուղու լիարժեք ծանրաբեռնվածության դեպքում:
BDP-ի հաշվարկման բանաձևն է՝
BDP = արագություն × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes›
Եթե ընդունման պատուհանը փոքր է BDP արժեքից, ապա կապուղին կմնա թերծանրաբեռնված: Ուղին լրացնելու համար անհրաժեշտ պատուհանի չափը որոշվում է հետևյալ կերպ՝
Ճանապարհը լրացնելու պատուհան = BDP ÷ 8 = ‹bdp› → ‹window›
TCP պատուհանի մասշտաբավորում (RFC 7323)
Համաձայն TCP արձանագրության սկզբնական ստանդարտի՝ ընդունման պատուհանի առավելագույն չափը կարող է լինել 65,535 բայթ: Ժամանակակից արագագործ և մեծ հապաղում ունեցող կապուղիներում (Long Fat Networks կամ LFN) այս չափը բավարար չէ ալիքը լրացնելու համար:
Այս խնդիրը լուծելու համար օգտագործվում է RFC 7323 ստանդարտով սահմանված TCP պատուհանի մասշտաբավորումը (Window Scaling): Այն թույլ է տալիս ընդլայնել պատուհանի առավելագույն չափը մինչև 1,073,725,440 բայթ:
- Եթե ուղին լրացնելու համար անհրաժեշտ պատուհանը գերազանցում է 65,535 բայթը, համակարգը ցուցադրում է հետևյալ ծանուցումը. «Այս ուղին լրացնելու համար անհրաժեշտ է
‹window›պատուհան — ինչը գերազանցում է 65,535 բայթ չմասշտաբավորված առավելագույնը, ուստի երկու կողմերն էլ պետք է համաձայնեցնեն TCP պատուհանի մասշտաբավորումը (RFC 7323):» - Եթե պահանջվող պատուհանը գերազանցում է RFC 7323-ի սահմանաչափը, ցուցադրվում է հետևյալ հաղորդագրությունը. «Այս ուղին լրացնելու համար անհրաժեշտ է
‹window›— ինչը գերազանցում է ամենամեծ պատուհանը, որը TCP-ն կարող է համաձայնեցնել (1,073,725,440 բայթ): Այս ուղու վրա մեկ հոսքը երբեք չի կարող գերազանցել‹value›-ը:» - Այն դեպքում, երբ ընդունման պատուհանի մեծացումը կարող է բարելավել արդյունքը, գործում է հետևյալ հուշումը. «Ընդունման պատուհանը մինչև
‹window›մեծացնելը թույլ կտա այս փոխանցմանը հասնել մինչև‹value›-ի:»
Փաթեթների կորստի ազդեցությունը և Mathis մոդելը
Փաթեթների նույնիսկ չնչին կորուստը կտրուկ նվազեցնում է TCP հոսքի արագությունը: Կորստի ազդեցությունը գնահատելու համար օգտագործվում է Mathis բանաձևը, որը հիմնված է առավելագույն սեգմենտի չափի (MSS), հետադարձի ժամանակի (RTT) և կորստի հավանականության (p) վրա:
Կորստի սահմանաչափ (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value›
Mathis մոդելը ենթադրում է հավասարաչափ բաշխված, անկախ կորուստներ և հուսալի է միայն 1%-ից ցածր արժեքների դեպքում: Եթե մուտքագրված կորուստը գերազանցում է 1%-ը, համակարգը զգուշացնում է. «1%-ից բարձր կորուստը դուրս է Mathis մոդելի հուսալի տիրույթից — կորստի սահմանաչափը դիտարկեք որպես լավատեսական գնահատական:»
Արձանագրության օվերհեդ և ցանցային միավորներ
Ցանցով տվյալներ փոխանցելիս օգտակար բեռից բացի հաղորդվում են նաև արձանագրությունների վերնագրերը: Ստանդարտ Ethernet ցանցերում յուրաքանչյուր փաթեթին ավելանում է 78 բայթ օվերհեդ (40 բայթ TCP/IP վերնագրեր և 38 բայթ ֆիզիկական հաղորդակցուղու մակարդակում):
Արձանագրության արդյունավետությունը հաշվարկվում է հետևյալ կերպ՝
Արձանագրության արդյունավետություն = MSS ÷ (MSS + 78 B) = ‹mss› ÷ ‹frame› = ‹eff› (40 B փաթեթի վերնագրեր + 38 B ֆիզիկական հաղորդակցուղում)
Կապուղու իրական սահմանաչափը օվերհեդը հաշվի առնելուց հետո կազմում է՝
Կապուղու սահմանաչափ = արագություն × արդյունավետություն = ‹rate› × ‹eff› = ‹value›
Միավորների հաշվարկման ժամանակ անհրաժեշտ է հաշվի առնել, որ ցանցային տեխնոլոգիաներում բոլոր միավորները տասնորդական են (1 kbit = 1,000 բիթ, 1 MB = 1,000,000 բայթ): Ֆայլային մենեջերները սովորաբար օգտագործում են 1024-ի վրա հիմնված երկուական համակարգը (որտեղ 100 MB ֆայլը իրականում 100 MiB է կամ մոտավորապես 104.86 տասնորդական MB):
Թողունակության հաշվարկման բանաձևեր
Հաշվիչն իրականացնում է համակարգված վերլուծություն՝ կիրառելով հետևյալ բանաձևերը.
- Հիմնական բանաձև:
թողունակություն = min(rate × eff, window ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = rate × RTT - Պատուհանի սահմանաչափ:
Պատուհանի սահմանաչափ = պատուհան ÷ RTT = ‹window› ÷ ‹rtt› = ‹value› - Սպասվող թողունակություն:
Սպասվող թողունակություն = այս սահմանաչափերից ամենացածրը = ‹value› → սահմանափակված է հետևյալով՝ ‹constraint› - Փոխանցման ժամանակ:
Փոխանցման ժամանակ = RTT + 8 × չափս ÷ թողունակություն = ‹rtt› + 8 × ‹size› ÷ ‹throughput› = ‹time›
Գաղտնիություն և տվյալների մշակում
Ձեր մուտքագրած յուրաքանչյուր արժեք հաշվարկվում է այս բրաուզերում. ոչինչ ոչ մի տեղ չի ուղարկվում: Բոլոր հաշվարկները կատարվում են բացառապես տեղային եղանակով՝ ապահովելով տվյալների գաղտնիությունը:
Հաճախ տրվող հարցեր (FAQ)
Ի՞նչ է թողունակության և հապաղման արտադրյալը (BDP), և ինչո՞ւ է այն որոշում պատուհանի չափսը: BDP-ն — կապուղու արագություն × հետադարձի ժամանակ (RTT) — տվյալ պահին հաղորդման մեջ գտնվող տվյալների քանակն է: TCP-ն կարող է ունենալ առավելագույնը մեկ չհաստատված պատուհան հաղորդման մեջ, ուստի BDP-ից փոքր պատուհանը թողնում է կապուղին մասամբ դատարկ. 100 Mbit/s արագության և 50 ms RTT-ի դեպքում կապուղին տեղավորում է 625 kB, իսկ 65,535 բայթանոց պատուհանը լրացնում է դրա հազիվ մեկ տասներորդը: Ահա թե ինչու արագ և երկար ճանապարհներին անհրաժեշտ է TCP պատուհանի մասշտաբավորում (RFC 7323), որը բարձրացնում է համաձայնեցվող առավելագույնը 65,535 բայթից մինչև մոտ 1 GB:
Ինչո՞ւ է իմ փոխանցումն ավելի դանդաղ, քան այն կապուղու արագությունը, որի համար վճարում եմ: Մեկ TCP հոսքը բախվում է երեք անկախ սահմանաչափերի, և հաղթում է ամենացածրը: Արձանագրության հավելյալ ծախսերը կրճատում են հենց կապուղին մոտ 5%-ով — ստանդարտ Ethernet կադրը տեղափոխում է 1,460 օգտակար բայթ ֆիզիկական հաղորդակցուղու 1,538 բայթից: Ընդունման պատուհանը սահմանափակում է թողունակությունը պատուհան ÷ RTT հարաբերակցությամբ, ուստի դասական 65,535 բայթանոց պատուհանը սահմանափակում է 50 ms հապաղմամբ ճանապարհը մոտ 10.5 Mbit/s-ով՝ անկախ կապուղու արագությունից: Իսկ կորուստը սահմանափակում է այն (MSS ÷ RTT) ÷ √կորուստ բանաձևով: Վերոնշյալ արդյունքը ցույց է տալիս, թե որ սահմանաչափն է որոշիչ Ձեր թվերի համար:
Ինչպե՞ս է փաթեթների կորուստը սահմանափակում TCP թողունակությունը: TCP-ն կորուստը դիտարկում է որպես ծանրաբեռնվածություն և կիսով չափ կրճատում է իր ուղարկման արագությունը յուրաքանչյուր կորստի դեպքում, ուստի նույնիսկ չնչին կորստի գործակիցները նշանակություն ունեն արագ ճանապարհների վրա: Mathis մոդելը գնահատում է սահմանաչափը որպես (MSS ÷ RTT) ÷ √p — 50 ms հապաղմամբ և 1,460 բայթ MSS-ով ճանապարհին 0.01% կորստի դեպքում դա կազմում է մոտ 23 Mbit/s՝ անկախ կապուղու արագությունից: Մոդելը ենթադրում է հավասարաչափ բաշխված, անկախ կորստի դեպքեր. մոտավորապես 1%-ից ցածր այն լավ արտացոլում է իրականությունը, իսկ խմբային կորուստների դեպքում այն լավատեսական է:
Արդյո՞ք այստեղի մեգաբայթերը նույնն են, ինչ իմ ֆայլային մենեջերում: Ոչ լիովին: Այս էջն օգտագործում է տասնորդական միավորներ՝ համաձայն ցանցային կոնվենցիայի՝ 1 kbit = 1,000 բիթ և 1 MB = 1,000,000 բայթ: Ֆայլային մենեջերների մեծ մասը հաշվում է 1024-ի վրա հիմնված միավորներով, որոնք հաճախ սխալմամբ նշվում են որպես MB — այնտեղ «100 MB» ֆայլը սովորաբար 100 MiB է ≈ 104.86 տասնորդական MB, ուստի դրա տեղափոխումը տևում է մոտ 5%-ով ավելի երկար, քան ենթադրում է տասնորդական թիվը: Մուտքագրեք 104.86 MB այստեղ՝ դրան ճշգրիտ համապատասխանեցնելու համար: