QUIC ပရိုတိုကောသည် ကြည့်ရှုရန် အလွန်စိတ်ဝင်စားစရာကောင်းသောကြောင့် ၎င်းအကြောင်းကို ရေးသားရခြင်းကို ကျွန်ုပ်တို့နှစ်သက်သည်။ သို့သော် QUIC နှင့်ပတ်သက်သော ယခင်ထုတ်ဝေမှုများသည် သမိုင်းဝင် (ဒေသခံသမိုင်း၊ သဘာဝနှင့် ဟာ့ဒ်ဝဲကို ကြိုက်နှစ်သက်ပါက)၊ ယနေ့ ကျွန်ုပ်တို့သည် မတူညီသောဘာသာပြန်တစ်ခုကို ထုတ်ဝေရန် ပျော်ရွှင်ပါသည် - 2019 ခုနှစ်တွင် ပရိုတိုကော၏ လက်တွေ့အသုံးချမှုအကြောင်း ဆွေးနွေးပါမည်။ ထို့အပြင်၊ ကျွန်ုပ်တို့သည် ကားဂိုဒေါင်တွင် အခြေခံသည့် အသေးစားအခြေခံအဆောက်အအုံအကြောင်း မပြောသော်လည်း ကမ္ဘာတစ်ဝှမ်းလုံးနီးပါးလည်ပတ်နေသည့် Uber အကြောင်း၊ ကုမ္ပဏီ၏ အင်ဂျင်နီယာများသည် QUIC ကို ထုတ်လုပ်မှုတွင် အသုံးပြုရန် မည်ကဲ့သို့ ဆုံးဖြတ်ချက် ချမှတ်ခဲ့ပုံ၊ ၎င်းတို့သည် စမ်းသပ်မှုများ ပြုလုပ်ပုံနှင့် ၎င်းကို ထုတ်လုပ်မှုတွင် လှိမ့်ထုတ်ပြီးနောက် မြင်ခဲ့ရသည်များကို ဖြတ်တောက်မှုအောက်တွင် ရှိလာခဲ့သည်။
ပုံတွေကို နှိပ်လို့ရတယ်။ ဖတ်ရှုခံစားပါ။
Uber တွင် တစ်ကမ္ဘာလုံးအတိုင်းအတာဖြင့် တည်ရှိနေသည့် မြို့ပေါင်း 600 ရှိသည့်အနက် အပလီကေးရှင်းတစ်ခုစီတွင် ဆယ်လူလာအော်ပရေတာပေါင်း 4500 ကျော်ထံမှ ကြိုးမဲ့အင်တာနက်ကို လုံးလုံးလျားလျားမှီခိုနေရပါသည်။ အသုံးပြုသူများသည် အက်ပ်အား မြန်ဆန်ရုံသာမက အချိန်နှင့်တပြေးညီ မျှော်လင့်ထားပါသည် - ၎င်းကိုရရှိရန် Uber အက်ပ်သည် latency နည်းပါးပြီး အလွန်ယုံကြည်စိတ်ချရသော ချိတ်ဆက်မှု လိုအပ်ပါသည်။ Alas, ဒါပေမယ့် stack
ပြဿနာကို ဖြေရှင်းဖို့ ကျွန်တော်တို့ လျှောက်ထားတယ်။
ကျယ်ကျယ်ပြန့်ပြန့် စမ်းသပ်ပြီးနောက်၊ ကျွန်ုပ်တို့၏ လျှောက်လွှာတွင် QUIC ကို အကောင်အထည် ဖော်ခြင်းသည် TCP နှင့် နှိုင်းယှဉ်ပါက အမြီး latencies နည်းပါးကြောင်း ကောက်ချက်ချပါသည်။ ယာဉ်မောင်းနှင့် ခရီးသည်အပလီကေးရှင်းများရှိ HTTPS အသွားအလာအတွက် 10-30% လျှော့ချမှုကို ကျွန်ုပ်တို့ တွေ့ရှိခဲ့သည်။ QUIC သည် သုံးစွဲသူ ပက်ကေ့ဂျ်များအပေါ် အဆုံးမှ အဆုံးအထိ ထိန်းချုပ်ပေးပါသည်။
ဤဆောင်းပါးတွင်၊ ကျွန်ုပ်တို့သည် QUIC ကိုပံ့ပိုးပေးသည့် stack ကိုအသုံးပြု၍ Uber အပလီကေးရှင်းများအတွက် TCP ကို အကောင်းဆုံးဖြစ်အောင်လုပ်ရာတွင် ကျွန်ုပ်တို့၏အတွေ့အကြုံကို မျှဝေပါသည်။
နောက်ဆုံးပေါ်နည်းပညာ- TCP
ယနေ့တွင်၊ TCP သည် အင်တာနက်ပေါ်တွင် HTTPS အသွားအလာကို ပို့ဆောင်ရန်အတွက် အသုံးအများဆုံး သယ်ယူပို့ဆောင်ရေးပရိုတိုကောဖြစ်သည်။ TCP သည် ယုံကြည်စိတ်ချရသော ဘိုက်စီးကြောင်းကို ပံ့ပိုးပေးသည်၊ ထို့ကြောင့် ကွန်ရက်ပိတ်ဆို့မှုနှင့် လင့်ခ်အလွှာဆုံးရှုံးမှုများကို ရင်ဆိုင်ဖြေရှင်းနိုင်သည်။ HTTPS အသွားအလာအတွက် TCP ကို ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုခြင်းသည် ယခင်၏ နေရာအနှံ့အပြားတွင် (OSတိုင်းနီးပါးတွင် TCP ပါရှိသည်)၊ အခြေခံအဆောက်အဦအများစုတွင်ရရှိနိုင်မှု (ဥပမာ load balancers၊ HTTPS proxies နှင့် CDNs) နှင့် out-of-the-box လုပ်ဆောင်နိုင်စွမ်းကြောင့်ဖြစ်သည်။ ပလက်ဖောင်းများနှင့် ကွန်ရက်အများစုနီးပါးတွင်။
သုံးစွဲသူအများစုသည် ကျွန်ုပ်တို့၏အက်ပ်ကို သွားရင်းလာရင်းအသုံးပြုကြပြီး TCP tail latencies များသည် ကျွန်ုပ်တို့၏အချိန်နှင့်တစ်ပြေးညီ HTTPS လမ်းကြောင်း၏တောင်းဆိုမှုများနှင့် နီးပါသည်။ ရိုးရှင်းစွာပြောရလျှင် ကမ္ဘာတစ်ဝှမ်းလုံးရှိ သုံးစွဲသူများသည် ယင်းကို တွေ့ကြုံခံစားခဲ့ရသည် - ပုံ 1 သည် အဓိကမြို့ကြီးများတွင် နှောင့်နှေးမှုများကို ပြသသည်-
ပုံ 1- Uber ၏ အဓိကမြို့ကြီးများတွင် အမြီးကြာချိန်သည် ကွဲပြားသည်။
Indian နှင့် Brazilian ကွန်ရက်များတွင် latency သည် US နှင့် UK ထက် ပိုများသော်လည်း tail latency သည် ပျမ်းမျှ latency ထက် သိသိသာသာ မြင့်မားသည်။ ပြီးတော့ ဒါက US နဲ့ UK အတွက်တောင် မှန်ပါတယ်။
TCP သည် လေထု၏ စွမ်းဆောင်ရည်ကို ကျော်သည်။
TCP ကို ဖန်တီးခဲ့သည်။ ကြိုးတပ်ထားသည်။ အလွန်ခန့်မှန်းနိုင်သောလင့်ခ်များကို အလေးပေးထားသည့် ကွန်ရက်များဖြစ်သည်။ သို့သော်၊ wireless ပါ ကွန်ရက်များတွင် ၎င်းတို့၏ ကိုယ်ပိုင်လက္ခဏာများနှင့် အခက်အခဲများရှိသည်။ ပထမအချက်၊ ကြိုးမဲ့ကွန်ရက်များသည် နှောင့်ယှက်မှုနှင့် အချက်ပြမှုလျော့ပါးခြင်းကြောင့် ဆုံးရှုံးမှုများကို ခံနိုင်ရည်ရှိသည်။ ဥပမာအားဖြင့်၊ Wi-Fi ကွန်ရက်များသည် မိုက်ခရိုဝေ့ဖ်များ၊ ဘလူးတုသ်နှင့် အခြားရေဒီယိုလှိုင်းများအတွက် အထိခိုက်မခံပါ။ ဆယ်လူလာကွန်ရက်များသည် အချက်ပြမှု ဆုံးရှုံးခြင်း (
Bandwidth အတက်အကျနှင့် ဆုံးရှုံးမှုများကို တိုက်ဖျက်ရန်၊ ပုံမှန်အားဖြင့် ဆယ်လူလာကွန်ရက်များသည် ယာဉ်အသွားအလာများ ပေါက်ကွဲခြင်းအတွက် ကြီးမားသော ကြားခံများကို အသုံးပြုကြသည်။ ၎င်းသည် အလွန်အကျွံ တန်းစီနေခြင်းကို ဖြစ်ပေါ်စေနိုင်သည်၊ ဆိုလိုသည်မှာ ကြာကြာနှောင့်နှေးမှု ဖြစ်စေနိုင်သည်။ မကြာခဏ TCP သည် အချိန်ပိုကြာလာသောကြောင့် ဤတန်းစီခြင်းကို ဖြုန်းတီးမှုတစ်ခုအဖြစ် သဘောထားလေ့ရှိသည်၊ ထို့ကြောင့် TCP သည် ထပ်ဆင့်ပို့လေ့ရှိပြီး ကြားခံအား ဖြည့်ပေးပါသည်။ ဒီပြဿနာကို ခေါ်တယ်။
နောက်ဆုံးတွင်၊ ဆယ်လူလာကွန်ရက်စွမ်းဆောင်ရည်သည် ဝန်ဆောင်မှုပေးသူ၊ ဒေသနှင့် အချိန်အလိုက် ကွဲပြားသည်။ ပုံ 2 တွင်၊ ကျွန်ုပ်တို့သည် 2 ကီလိုမီတာအကွာအဝေးအတွင်း ဆဲလ်များဖြတ်ကျော် HTTPS အသွားအလာ၏ ပျမ်းမျှနှောင့်နှေးမှုများကို စုစည်းထားသည်။ အိန္ဒိယနိုင်ငံ၊ ဒေလီရှိ အဓိကဆယ်လူလာအော်ပရေတာနှစ်ခုအတွက် စုဆောင်းထားသောဒေတာ။ သင်မြင်သည့်အတိုင်း၊ ဆဲလ်တစ်ခုမှတစ်ခုသို့စွမ်းဆောင်ရည်ကွဲပြားသည်။ ထို့အပြင် အော်ပရေတာတစ်ခု၏ ကုန်ထုတ်စွမ်းအားသည် ဒုတိယတစ်ခု၏ ကုန်ထုတ်စွမ်းအားနှင့် ကွာခြားသည်။ အချိန်နှင့် တည်နေရာ၊ အသုံးပြုသူ ရွေ့လျားနိုင်မှုနှင့် တာဝါတိုင်သိပ်သည်းဆနှင့် ကွန်ရက်အမျိုးအစားများ၏ အချိုးအစား (LTE၊ 3G စသည်ဖြင့်) စသည်တို့ကို ထည့်သွင်းစဉ်းစားသည့် ကွန်ရက်ဝင်ရောက်မှုပုံစံများကဲ့သို့ အချက်များကြောင့် ၎င်းကို လွှမ်းမိုးထားသည်။
ပုံ 2။ ဥပမာအနေဖြင့် 2 km အချင်းဝက်ကို အသုံးပြု၍နှောင့်နှေးခြင်း။ ဒေလီ၊ အိန္ဒိယ။
ထို့အပြင်၊ ဆယ်လူလာကွန်ရက်များ၏ စွမ်းဆောင်ရည်သည် အချိန်နှင့်အမျှ ကွဲပြားသည်။ ပုံ 3 သည် ရက်သတ္တပတ်၏ ပျမ်းမျှကြာချိန်ကို ပြသည်။ တစ်ရက်နှင့် တစ်နာရီအတွင်း သေးငယ်သော အတိုင်းအတာဖြင့် ကွဲပြားမှုများကို ကျွန်ုပ်တို့ တွေ့ရှိခဲ့သည်။
ပုံ 3. အမြီးနှောင့်နှေးမှုသည် ရက်များကြားတွင် သိသိသာသာကွဲပြားနိုင်သော်လည်း တူညီသောအော်ပရေတာအတွက်။
အထက်ပါအချက်များအားလုံးသည် ကြိုးမဲ့ကွန်ရက်များတွင် TCP စွမ်းဆောင်ရည်ကို ထိရောက်မှုမရှိစေပါ။ သို့သော်၊ TCP ၏ အခြားရွေးချယ်စရာများကို မရှာဖွေမီ၊ ကျွန်ုပ်တို့သည် အောက်ပါအချက်များနှင့် ပတ်သက်၍ တိကျသော နားလည်မှုတစ်ခုကို ဖော်ထုတ်လိုသည်-
- TCP သည် ကျွန်ုပ်တို့၏အပလီကေးရှင်းများတွင် tail latencies နောက်ကွယ်တွင် အဓိကတရားခံဖြစ်ပါသလား။
- ခေတ်မီကွန်ရက်များတွင် သိသာထင်ရှားပြီး အမျိုးမျိုးသော အသွားအပြန်နှောင့်နှေးမှုများ (RTT) ရှိပါသလား။
- RTT ၏သက်ရောက်မှုနှင့် TCP စွမ်းဆောင်ရည်အပေါ် ဆုံးရှုံးမှုကဘာလဲ။
TCP စွမ်းဆောင်ရည် ဆန်းစစ်ခြင်း
ကျွန်ုပ်တို့သည် TCP စွမ်းဆောင်ရည်ကို ပိုင်းခြားစိတ်ဖြာပုံကို နားလည်ရန်၊ TCP မှ ဒေတာပေးပို့သူမှ လက်ခံသူထံသို့ မည်ကဲ့သို့ လွှဲပြောင်းသည်ကို အမြန်ကြည့်ကြပါစို့။ ပထမဦးစွာ၊ ပေးပို့သူသည် TCP ချိတ်ဆက်မှုကို သုံးလမ်းဖြင့် လုပ်ဆောင်သည်။
အထုပ်တစ်ခု သို့မဟုတ် ACK ပျောက်ဆုံးပါက၊ ပေးပို့သူသည် အချိန်ကုန်ပြီးနောက် ပြန်လည်ပေးပို့သည် (RTO၊
ပုံ 4။ TCP/TLS မှတဆင့် ပက်ကေ့ချ်လဲလှယ်မှုတွင် ပြန်လည်ထုတ်လွှင့်မှု ယန္တရားတစ်ခု ပါဝင်သည်။
ကျွန်ုပ်တို့၏ အပလီကေးရှင်းများတွင် TCP မည်ကဲ့သို့ လုပ်ဆောင်ခဲ့သည်ကို ဆုံးဖြတ်ရန်၊ ကျွန်ုပ်တို့သည် TCP ပက်ကတ်များကို အသုံးပြု၍ စောင့်ကြည့်ခဲ့သည်။
စမ်းသပ်မှုနှစ်ခုလုံး၏ ရလဒ်များသည် တစ်ခုနှင့်တစ်ခု ကိုက်ညီနေပါသည်။ မြင့်မားသော RTT latencies ကိုကျွန်ုပ်တို့တွေ့ခဲ့ရသည်။ အမြီးတန်ဖိုးများသည် ပျမ်းမျှတန်ဖိုးထက် 6 ဆနီးပါး မြင့်မားသည်။ နှောင့်နှေးမှုများ၏ ဂဏန်းသင်္ချာပျမ်းမျှသည် 1 စက္ကန့်ထက်ပိုသည်။ ချိတ်ဆက်မှုများစွာသည် ဆုံးရှုံးသွားသောကြောင့် TCP သည် packet အားလုံး၏ 3,5% ကို ပြန်လည်ပေးပို့နိုင်စေသည်။ လေဆိပ်နှင့် ဘူတာရုံများကဲ့သို့ လူစည်ကားသောနေရာများတွင် ၇ ရာခိုင်နှုန်း ဆုံးရှုံးမှုရှိသည်။ ဤရလဒ်များသည် ဆယ်လူလာကွန်ရက်များတွင် အသုံးပြုသည့် သမားရိုးကျပညာကို သံသယဖြစ်စေသည်။
ကွန်ရက်မက်ထရစ်များ
အဓိပ်ပါယျ
RTT၊ မီလီစက္ကန့်များ [50%, 75%, 95%, 99%]
[၁၊ ၃၊ ၅၊ ၁]
RTT ကွဲပြားမှု၊ စက္ကန့်
ပျမ်းမျှ ~ 1,2 စက္ကန့်
မတည်မငြိမ်ချိတ်ဆက်မှုများတွင် ပက်ကေ့ခ်ျပျောက်ဆုံးခြင်း။
ပျမ်းမျှ ~3.5% (7% ဝန်ပိုနေသောနေရာများတွင်)
ဤချိတ်ဆက်မှုများ၏ ထက်ဝက်နီးပါးသည် အနည်းဆုံး ပက်ကေ့ချ်တစ်ခု ဆုံးရှုံးခဲ့ပြီး အများစုမှာ SYN နှင့် SYN-ACK ပက်ကတ်များဖြစ်သည်။ TCP အကောင်အထည်ဖော်မှုအများစုသည် SYN ပက်ကတ်များအတွက် 1 စက္ကန့်၏ RTO တန်ဖိုးကို အသုံးပြုသည်၊ ၎င်းသည် နောက်ဆက်တွဲဆုံးရှုံးမှုများအတွက် အဆတိုးစေသည်။ ချိတ်ဆက်မှုများကို တည်ဆောက်ရန် TCP အချိန်ပိုကြာခြင်းကြောင့် အပလီကေးရှင်းဖွင့်ချိန်များ တိုးလာနိုင်သည်။
ဒေတာပက်ကေ့ချ်များတွင်၊ မြင့်မားသော RTO တန်ဖိုးများသည် ကြိုးမဲ့ကွန်ရက်များတွင် ယာယီဆုံးရှုံးမှုများရှိနေချိန်တွင် ကွန်ရက်၏အသုံးဝင်သောအသုံးပြုမှုကို များစွာလျှော့ချပေးသည်။ အမြီးနှောင့်နှေးမှုသည် စက္ကန့် 1 နီးပါးရှိပြီး ပျမ်းမျှပြန်လည်ထုတ်လွှင့်ချိန်သည် ခန့်မှန်းခြေ 30 စက္ကန့်ဖြစ်ကြောင်း ကျွန်ုပ်တို့တွေ့ရှိခဲ့သည်။ TCP အဆင့်ရှိ ဤမြင့်မားသော latency များသည် HTTPS အချိန်ကုန်သွားခြင်းနှင့် ပြန်လည်တောင်းဆိုမှုများကို ဖြစ်ပေါ်စေပြီး ကွန်ရက် latency နှင့် ထိရောက်မှုနည်းပါးမှုကို ပိုမိုတိုးပွားစေသည်။
တိုင်းတာထားသော RTT ၏ 75th ရာခိုင်နှုန်းသည် 425 ms ဝန်းကျင်ရှိသော်လည်း TCP အတွက် 75th ရာခိုင်နှုန်းသည် 3 စက္ကန့်နီးပါးဖြစ်သည်။ ဆုံးရှုံးမှုသည် TCP ဒေတာကို အောင်မြင်စွာ ပို့လွှတ်ရန် 7-10 လက်မှတ်များ ယူဆောင်သွားကြောင်း အရိပ်အမြွက်ဖော်ပြသည်။ ၎င်းသည် ထိရောက်မှုမရှိသော RTO တွက်ချက်မှု၏ အကျိုးဆက်ဖြစ်နိုင်သည်၊ TCP ၏ ဆုံးရှုံးမှုကို လျင်မြန်စွာတုံ့ပြန်နိုင်စွမ်းမရှိခြင်း
TCP packet ဆုံးရှုံးမှုစာရင်းဇယား
အဘိုး
အနည်းဆုံး 1 ထုပ်ပိုးဆုံးရှုံးမှုနှင့် ချိတ်ဆက်မှုရာခိုင်နှုန်း
45%
ချိတ်ဆက်မှုစနစ်ထည့်သွင်းစဉ်အတွင်း ဆုံးရှုံးမှုများနှင့် ချိတ်ဆက်မှုရာခိုင်နှုန်း
30%
ဒေတာလဲလှယ်စဉ်အတွင်း ဆုံးရှုံးမှုနှင့် ချိတ်ဆက်မှုရာခိုင်နှုန်း
76%
ပြန်လည်ပေးပို့ခြင်းတွင် နှောင့်နှေးမှုများ ဖြန့်ဝေခြင်း၊ စက္ကန့် [50%, 75%, 95%, 99%] [1၊ 2.8၊ 15၊ 28]
ပက်ကတ်တစ်ခု သို့မဟုတ် TCP အပိုင်းအတွက် ပြန်လည်ထုတ်လွှင့်မှုအရေအတွက်ကို ဖြန့်ဝေခြင်း။
[1,3,6,7]
QUIC ၏လျှောက်လွှာ
မူလက Google မှ တီထွင်ထားခြင်းဖြစ်ပြီး QUIC သည် UDP ၏ထိပ်တွင် လုပ်ဆောင်သည့် လိုင်းပေါင်းစုံ ခေတ်မီသယ်ယူပို့ဆောင်ရေးပရိုတိုကောတစ်ခုဖြစ်သည်။ လောလောဆယ် QUIC ရှိသည်။
ပုံ 5- QUIC သည် HTTP/3 အောက်တွင် အလုပ်လုပ်သည်၊ ယခင်က HTTP/2 အောက်ရှိ TLS ကို အစားထိုးသည်။
TCP ချဲ့ထွင်မှုအတွက် QUIC ကို အသုံးပြုရန် ကျွန်ုပ်တို့အား တွန်းအားပေးသည့် အကြောင်းရင်းများမှာ အောက်ပါတို့ဖြစ်သည်-
- 0-RTT ချိတ်ဆက်မှု တည်ထောင်ခြင်း။ QUIC သည် ယခင်ချိတ်ဆက်မှုများမှ ခွင့်ပြုချက်များကို ပြန်လည်အသုံးပြုခြင်းကို ခွင့်ပြုပြီး လုံခြုံရေးလက်ဆွဲနှုတ်ဆက်ခြင်းအရေအတွက်ကို လျှော့ချပေးသည်။ အနာဂတ္မွာ
TLS1.3 0-RTT ကို ပံ့ပိုးပေးမည်ဖြစ်သော်လည်း သုံးလမ်းသွား TCP လက်ဆွဲနှုတ်ဆက်ရန် လိုအပ်နေသေးသည်။ - HoL ပိတ်ဆို့ခြင်းကို ကျော်လွှားခြင်း။ HTTP/2 သည် စွမ်းဆောင်ရည် မြှင့်တင်ရန်အတွက် ကလိုင်းယင့်တစ်ဦးလျှင် TCP ချိတ်ဆက်မှုကို အသုံးပြုသော်လည်း ၎င်းသည် HoL (head-of-line) ပိတ်ဆို့ခြင်းသို့ ဦးတည်သွားနိုင်သည်။ QUIC သည် multiplexing ကို ရိုးရှင်းစေပြီး အပလီကေးရှင်းသို့ တောင်းဆိုချက်များကို လွတ်လပ်စွာ ပေးပို့သည်။
- congestion ထိန်းချုပ်မှု။ QUIC သည် ကွန်ရက်ကန့်သတ်ချက်များ (ဆုံးရှုံးမှုအရေအတွက် သို့မဟုတ် RTT) ကိုအခြေခံ၍ ပေးပို့ခြင်းကို ထိန်းချုပ်သည့် ပင်မသယ်ယူပို့ဆောင်ရေးဆိုင်ရာ အယ်လဂိုရီသမ်ကို အပ်ဒိတ်လုပ်ရန် ပိုမိုလွယ်ကူစေသည်။ TCP အကောင်အထည်ဖော်မှုအများစုသည် algorithm ကိုအသုံးပြုသည်။
CUBIC latency-sensitive traffic အတွက် မသင့်လျော်ပါ။ မကြာသေးမီက တီထွင်ထားသည့် အယ်လဂိုရီသမ်များကဲ့သို့ဖြစ်သည်။BB တိုးချဲ့မှု ၊ကွန်ရက်ကို ပိုမိုတိကျစွာပုံစံထုတ်ပြီး latency ကို အကောင်းဆုံးဖြစ်အောင်လုပ်ပါ။ QUIC သည် သင့်အား BBR ကိုအသုံးပြုရန်နှင့် ၎င်းကိုအသုံးပြုထားသည့်အတိုင်း ဤအယ်လဂိုရီသမ်ကို အပ်ဒိတ်လုပ်ရန် ခွင့်ပြုသည်။တိုးတက်မှု . - ဆုံးရှုံးမှုများကို ပြန်လည်ဖြည့်ဆည်းပေးခြင်း။ QUIC သည် TLP နှစ်ခု (
tail loss probe ) RTO မစတင်မီ - ဆုံးရှုံးမှုများသည် အလွန်သိသာထင်ရှားသည့်တိုင်။ ၎င်းသည် TCP အကောင်အထည်ဖော်မှုများနှင့် ကွဲပြားသည်။ TLP သည် အဓိကအားဖြင့် နောက်ဆုံး ထုပ်ပိုးမှု (သို့မဟုတ် အသစ်တစ်ခု ရှိလျှင်) ပြန်လည် ဖြည့်တင်းမှုကို မြန်ဆန်စေသည်။ အမြီးနှောင့်နှေးမှုများကို ကိုင်တွယ်ခြင်းသည် Uber သည် ၎င်း၏ကွန်ရက်ကို တိုတောင်းသော၊ ကြိုကြားကြိုကြားနှင့် latency-sensitive ဒေတာလွှဲပြောင်းမှုများအတွက် အထူးအသုံးဝင်သည်။ - အကောင်းဆုံးဖြစ်အောင် ACK။ Packet တစ်ခုစီတွင် သီးသန့် sequence နံပါတ် ပါရှိသောကြောင့် ပြဿနာမရှိပါ။
ဂုဏ်ထူးများ packets တွေကို ပြန်ပို့တဲ့အခါ။ ACK packet များတွင် packet ကို process လုပ်ရန်နှင့် client side တွင် ACK တစ်ခုထုတ်ပေးရန် အချိန်ပါရှိပါသည်။ ဤအင်္ဂါရပ်များသည် QUIC သည် RTT ကို ပိုမိုတိကျစွာ တွက်ချက်ကြောင်း သေချာစေသည်။ QUIC တွင် ACK သည် 256 တီးဝိုင်းအထိ ပံ့ပိုးပေးသည်။NACK ၊ ပေးပို့သူအား packet shuffling လုပ်ရာတွင် ပိုမိုခံနိုင်ရည်ရှိစေရန်နှင့် လုပ်ငန်းစဉ်တွင် bytes လျှော့သုံးရန် ကူညီပေးသည်။ ရွေးချယ်ထားသော ACK (ဂုံအိတ် ) TCP သည် ကိစ္စတိုင်းတွင် ဤပြဿနာကို မဖြေရှင်းနိုင်ပါ။ - ချိတ်ဆက်မှုရွှေ့ပြောင်းခြင်း။ QUIC ချိတ်ဆက်မှုများကို 64-bit ID ဖြင့် သတ်မှတ်ဖော်ထုတ်ထားသောကြောင့် သုံးစွဲသူတစ်ဦးသည် IP လိပ်စာများကို ပြောင်းလဲပါက၊ ချိတ်ဆက်မှု ID အဟောင်းကို အနှောင့်အယှက်မရှိဘဲ IP လိပ်စာအသစ်တွင် ဆက်လက်အသုံးပြုနိုင်ပါသည်။ အသုံးပြုသူသည် Wi-Fi နှင့် ဆဲလ်လူလာချိတ်ဆက်မှုများကြားတွင် ပြောင်းလဲသည့် မိုဘိုင်းအပလီကေးရှင်းများအတွက် အလွန်အသုံးများသောအလေ့အကျင့်တစ်ခုဖြစ်သည်။
QUIC အတွက် အခြားရွေးချယ်စရာများ
QUIC ကို မရွေးချယ်မီ ပြဿနာကို ဖြေရှင်းရန် အခြားနည်းလမ်းများကို ကျွန်ုပ်တို့ စဉ်းစားခဲ့သည်။
အသုံးပြုသူများနှင့် ပိုမိုနီးစပ်သော TCP ချိတ်ဆက်မှုများကို ရပ်တန့်ရန် ပထမဆုံး ကျွန်ုပ်တို့ကြိုးစားခဲ့သည့်အရာမှာ TPC PoPs (Presence အမှတ်များ) ကို အသုံးပြုရန်ဖြစ်သည်။ အခြေခံအားဖြင့်၊ PoPs သည် ဆယ်လူလာကွန်ရက်နှင့် ပိုမိုနီးကပ်သော မိုဘိုင်းစက်ပစ္စည်းတစ်ခုနှင့် TCP ချိတ်ဆက်မှုကို ရပ်တန့်စေပြီး လမ်းကြောင်းအား မူလအခြေခံအဆောက်အအုံသို့ ပြန်လည်ရောက်ရှိစေပါသည်။ TCP ကို ပိုမိုနီးကပ်စွာပိတ်ခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် RTT ကို လျှော့ချနိုင်ပြီး TCP သည် တက်ကြွသောကြိုးမဲ့ပတ်ဝန်းကျင်ကို ပိုမိုတုံ့ပြန်ကြောင်း သေချာစေပါသည်။ သို့သော်လည်း၊ ကျွန်ုပ်တို့၏စမ်းသပ်ချက်များအရ RTT နှင့် ဆုံးရှုံးမှုအများစုသည် ဆယ်လူလာကွန်ရက်များမှလာကြောင်းနှင့် PoPs အသုံးပြုမှုသည် သိသာထင်ရှားသောစွမ်းဆောင်ရည်တိုးတက်မှုကိုမပေးကြောင်းပြသခဲ့သည်။
ကျွန်ုပ်တို့သည် TCP ဘောင်များကို ချိန်ညှိခြင်းကိုလည်း ကြည့်ရှုခဲ့သည်။ TCP သည် မတူညီသော OS ဗားရှင်းများတွင် ကွဲပြားသော အကောင်အထည်ဖော်မှုများရှိသောကြောင့် ကျွန်ုပ်တို့၏ ကွဲပြားသော အစွန်းထွက်ဆာဗာများပေါ်တွင် TCP stack တစ်ခုကို တည်ဆောက်ရာတွင် ခက်ခဲပါသည်။ ၎င်းကို အကောင်အထည်ဖော်ရန်နှင့် မတူညီသော ကွန်ရက်ဖွဲ့စည်းပုံများကို စမ်းသပ်ရန် ခက်ခဲသည်။ ခွင့်ပြုချက်များမရှိခြင်းကြောင့် မိုဘိုင်းစက်ပစ္စည်းများတွင် TCP ကို တိုက်ရိုက်သတ်မှတ်ခြင်းမှာ မဖြစ်နိုင်ပါ။ ပို၍အရေးကြီးသည်မှာ၊ 0-RTT ချိတ်ဆက်မှုများနှင့် မြှင့်တင်ထားသော RTT ခန့်မှန်းမှုကဲ့သို့သော အင်္ဂါရပ်များသည် ပရိုတိုကော၏ တည်ဆောက်ပုံအတွက် အရေးကြီးသောကြောင့် TCP တစ်ခုတည်းကို ချိန်ညှိခြင်းဖြင့် သိသာထင်ရှားသော အကျိုးကျေးဇူးများကို ရရှိရန် မဖြစ်နိုင်ပေ။
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် ဗီဒီယိုကြည့်ရှုခြင်းအား ဖြေရှင်းပေးသည့် UDP-based ပရိုတိုကောများစွာကို အကဲဖြတ်ခဲ့သည်—ကျွန်ုပ်တို့၏ကိစ္စတွင် ဤပရိုတိုကောများက အထောက်အကူဖြစ်မဖြစ် သိလိုပါသည်။ ကံမကောင်းစွာဖြင့်၊ ၎င်းတို့သည် လုံခြုံရေးဆက်တင်များစွာတွင် ဆိုးရွားစွာ ချို့တဲ့နေပြီး မက်တာဒေတာနှင့် ထိန်းချုပ်မှုအချက်အလက်အတွက် နောက်ထပ် TCP ချိတ်ဆက်မှုတစ်ခုလည်း လိုအပ်ပါသည်။
ကျွန်ုပ်တို့၏သုတေသနပြုချက်များအရ QUIC သည် လုံခြုံရေးနှင့် စွမ်းဆောင်ရည်နှစ်ခုလုံးကို ထည့်သွင်းစဉ်းစားစဉ်တွင် အင်တာနက်အသွားအလာပြဿနာကို ကူညီပေးနိုင်သည့် တစ်ခုတည်းသောပရိုတိုကောဖြစ်ကောင်းဖြစ်နိုင်သည်ဟု ကျွန်ုပ်တို့၏သုတေသနပြုချက်များအရ သိရသည်။
ပလပ်ဖောင်းသို့ QUIC ပေါင်းစပ်ခြင်း။
QUIC ကို အောင်မြင်စွာ မြှုပ်နှံပြီး ညံ့ဖျင်းသော ချိတ်ဆက်မှုပတ်ဝန်းကျင်များတွင် အပလီကေးရှင်းများ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန်အတွက်၊ ကျွန်ုပ်တို့သည် QUIC ပရိုတိုကော (HTTP/2 over TLS/TCP) အဟောင်း (HTTP/XNUMX over TLS/TCP) ကို အစားထိုးပါသည်။ ကျွန်ုပ်တို့သည် ကွန်ရက်စာကြည့်တိုက်ကို အသုံးပြုခဲ့သည်။
ကျွန်ုပ်တို့သည် QUIC အတွက် ပံ့ပိုးမှုပေါင်းထည့်ရန် Cronet ကို ကျွန်ုပ်တို့၏ Android အက်ပ်များတွင် ပထမဆုံး ပေါင်းစပ်ထားသည်။ ရွှေ့ပြောင်းသွားလာမှုစရိတ်များကို တတ်နိုင်သမျှ လျှော့ချရန် ပေါင်းစည်းခြင်းကို ဆောင်ရွက်ခဲ့ပါသည်။ ဒစ်ဂျစ်တိုက်ကို အသုံးပြုခဲ့သည့် ကွန်ရက်စနစ်ဟောင်းကို လုံးဝ အစားထိုးမည့်အစား၊
Android စက်ပစ္စည်းများအတွက် ချဉ်းကပ်ပုံအတိုင်း၊ Cronet ကို iOS ပေါ်ရှိ Uber အက်ပ်များတွင် ထည့်သွင်းပြီး ကွန်ရက်မှ HTTP လမ်းကြောင်းကို ကြားဖြတ်တားဆီးခြင်း
Google Cloud Balancers တွင် QUIC ကို ပြီးအောင်လုပ်ခြင်း။
နောက်ခံဘက်တွင်၊ QUIC ပြီးစီးမှုကို အသုံးပြုသည့် Google Cloud Load ချိန်ခွင်လျှာညီသော အခြေခံအဆောက်အဦမှ ပံ့ပိုးပေးသည်၊
စွမ်းဆောင်ရည်- ရလဒ်များ
ပိုမိုကောင်းမွန်သော ပရိုတိုကောကို ကျွန်ုပ်တို့ရှာဖွေခြင်းအတွက် အဓိကအကြောင်းရင်းသည် အထွက်စွမ်းဆောင်ရည်ဖြစ်သည်။ စစချင်းမှာ ကျွန်တော်တို့က ရပ်တည်ချက်တစ်ခုကို ဖန်တီးခဲ့ပါတယ်။
စမ်းသပ်မှု ၁
စမ်းသပ်မှုအတွက် စက်ပစ္စည်း
- ကျွန်ုပ်တို့သည် TCP နှင့် QUIC အသီးသီးတွင် HTTPS အသွားအလာကို ခွင့်ပြုကြောင်းသေချာစေရန် OkHttp နှင့် Cronet stacks ဖြင့် Android စက်ပစ္စည်းများကို စမ်းသပ်ပါ။
- Java-based emulation server သည် တုံ့ပြန်မှုများတွင် HTTPS headers အမျိုးအစားတူများကို ပေးပို့ပြီး ၎င်းတို့ထံမှ တောင်းဆိုချက်များကို လက်ခံရရှိရန် client စက်ပစ္စည်းများကို တင်ပါသည်။
- TCP နှင့် QUIC ချိတ်ဆက်မှုများကို အဆုံးသတ်ရန် India နှင့် နီးကပ်စွာတည်ရှိသော cloud proxy များ။ TCP ရပ်စဲမှုအတွက် ကျွန်ုပ်တို့သည် ပြောင်းပြန်ပရောက်စီကို ဖွင့်ထားသည်။
NGINX QUIC အတွက် open source reverse proxy ကို ရှာရခက်ပါသည်။ Chromium နှင့် အခြေခံ QUIC stack ကို အသုံးပြု၍ QUIC အတွက် ပြောင်းပြန် proxy တစ်ခုကို ကျွန်ုပ်တို့ တည်ဆောက်ခဲ့သည်။ထုတ်ဝေခဲ့သည် ၎င်းကို open source အဖြစ် ခရိုမီယမ်အဖြစ်သို့။
ပုံ 6. TCP နှင့် QUIC လမ်းစမ်းသပ်မှုအစုံတွင် OkHttp နှင့် Cronet ပါရှိသော Android စက်ပစ္စည်းများ၊ ချိတ်ဆက်မှုများကို ရပ်စဲရန်အတွက် cloud proxies နှင့် emulation server တစ်ခုတို့ပါဝင်သည်။
စမ်းသပ်မှု ၁
Google က QUIC ကို ရရှိနိုင်သောအခါ
ပုံ 7။ ဒုတိယစမ်းသပ်မှုတွင်၊ ကျွန်ုပ်တို့သည် TCP နှင့် QUIC ၏ ပြီးဆုံးချိန် latency ကို နှိုင်းယှဉ်လိုသည်မှာ- Google Cloud ကိုအသုံးပြု၍ ကျွန်ုပ်တို့၏ cloud proxy ကိုအသုံးပြုပါသည်။
ထို့ကြောင့်၊ ဗျာဒိတ်တော်များစွာ ကျွန်ုပ်တို့ကို စောင့်ကြိုနေပါသည်-
- PoP မှတစ်ဆင့် ရပ်စဲခြင်းသည် TCP စွမ်းဆောင်ရည်ကို တိုးတက်စေသည်။ ချိန်ခွင်လျှာများသည် အသုံးပြုသူများနှင့် ပိုမိုနီးစပ်သော TCP ချိတ်ဆက်မှုများကို ရပ်တန့်ကာ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ထားသောကြောင့်၊ ၎င်းသည် TCP စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးသည့် RTT များကို နည်းပါးစေသည်။ QUIC သည် ထိခိုက်မှုနည်းသော်လည်း၊ ၎င်းသည် tail latency လျှော့ချခြင်း (10-30 ရာခိုင်နှုန်း) ဖြင့် TCP ကို စွမ်းဆောင်နိုင်သေးသည်။
- အမြီးထိခိုက်တယ်။
network hops . ကျွန်ုပ်တို့၏ QUIC proxy သည် Google ၏ load balancers များထက် (50 ms ပိုမြင့်သော latency) ကို စက်များနှင့် ဝေးနေသော်လည်း၊ ၎င်းသည် အလားတူစွမ်းဆောင်ရည်ကို ပေးစွမ်းသည် - TCP အတွက် 15th ရာခိုင်နှုန်းတွင် 20% လျော့ချခြင်းနှင့် latency အတွက် 99% လျော့ချပေးပါသည်။ ၎င်းသည် နောက်ဆုံးမိုင်အကူးအပြောင်းသည် ကွန်ရက်အတွင်း ပိတ်ဆို့မှုတစ်ခုဖြစ်ကြောင်း ညွှန်ပြနေသည်။
ပုံ 8- စမ်းသပ်မှုနှစ်ခုမှ ရလဒ်များသည် QUIC သည် TCP ကို သိသိသာသာ စွမ်းဆောင်နိုင်သည်ကို ပြသသည်။
တိုက်ပွဲလမ်းကြောင်း
စမ်းသပ်မှုမှ လှုံ့ဆော်မှုဖြင့် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ Android နှင့် iOS အပလီကေးရှင်းများတွင် QUIC ပံ့ပိုးမှုကို အကောင်အထည်ဖော်ခဲ့သည်။ Uber လည်ပတ်သည့်မြို့များတွင် QUIC ၏အကျိုးသက်ရောက်မှုကို ဆုံးဖြတ်ရန် A/B စမ်းသပ်မှုများ ပြုလုပ်ခဲ့သည်။ ယေဘူယျအားဖြင့်၊ ဒေသများ၊ တယ်လီကွန်းအော်ပရေတာများနှင့် ကွန်ရက်အမျိုးအစားနှစ်ခုလုံးတွင် အမြီးနှောင့်နှေးမှုများ သိသိသာသာလျော့ကျသွားသည်ကို ကျွန်ုပ်တို့တွေ့မြင်ရပါသည်။
အောက်ဖော်ပြပါဂရပ်များသည် မက်ခရိုဒေသနှင့် မတူညီသောကွန်ရက်အမျိုးအစားများ - LTE၊ 95G၊ 99G တို့၏ အမြီးများတွင် ရာခိုင်နှုန်းတိုးတက်မှုများ (3 နှင့် 2 ရာခိုင်နှုန်း) ကိုပြသသည်။
ပုံ 9. တိုက်ပွဲစစ်ဆေးမှုများတွင် QUIC သည် latency သတ်မှတ်ချက်အရ TCP ထက် သာလွန်သည်။
ရှေ့သို့သာ
ဒါကအစပဲဖြစ်ကောင်းဖြစ်နိုင်သည် - QUIC ၏ထုတ်လုပ်မှုတွင် တည်ငြိမ်မှုနှင့် မတည်မငြိမ်ကွန်ရက်နှစ်ခုလုံးတွင် အက်ပလီကေးရှင်းစွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် အံ့သြဖွယ်အခွင့်အလမ်းများကို ပေးစွမ်းသည်-
တိုးမြှင့်လွှမ်းခြုံ
ပရိုတိုကော၏ စွမ်းဆောင်ရည်ကို ခွဲခြမ်းစိတ်ဖြာပြီးနောက်၊ စက်ရှင်များ၏ 80% ခန့်သည် QUIC အတွက် အောင်မြင်စွာ အသုံးပြုခဲ့သည်ကို ကျွန်ုပ်တို့ တွေ့ရှိရပါသည်။ всех တောင်းဆိုမှုများ၊ စက်ရှင်များ၏ 15% သည် QUIC နှင့် TCP ပေါင်းစပ်မှုကို အသုံးပြုခဲ့သည်။ ပေါင်းစပ်မှုသည် အစစ်အမှန် UDP ချို့ယွင်းမှုနှင့် ကွန်ရက်အခြေအနေများကြားတွင် ပိုင်းခြား၍မရသောကြောင့် Cronet စာကြည့်တိုက် အချိန်ကုန်သွားခြင်းကြောင့်ဟု ကျွန်ုပ်တို့ ယူဆပါသည်။ ကျွန်ုပ်တို့သည် QUIC ၏ နောက်ဆက်တွဲ အကောင်အထည်ဖော်မှုကို ဦးတည်လုပ်ဆောင်နေသောကြောင့် ဤပြဿနာအတွက် အဖြေကို လောလောဆယ် ရှာဖွေနေပါသည်။
QUIC ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း။
မိုဘိုင်းအက်ပ်များမှ သွားလာမှုမှာ latency အထိမခံနိုင်သော်လည်း bandwidth အထိမခံပါ။ ထို့အပြင် ကျွန်ုပ်တို့၏ အပလီကေးရှင်းများကို ဆယ်လူလာကွန်ရက်များတွင် အဓိကအသုံးပြုပါသည်။ စမ်းသပ်မှုများအပေါ် အခြေခံ၍ သုံးစွဲသူများနှင့် နီးစပ်သော TCP နှင့် QUIC ကို အဆုံးသတ်ရန် ပရောက်စီကို အသုံးပြုသော်လည်း အမြီးကြာချိန်များမှာ မြင့်မားနေဆဲဖြစ်သည်။ ကျွန်ုပ်တို့သည် ယာဉ်ကြောပိတ်ဆို့မှုကို ပိုမိုကောင်းမွန်စေရန်နှင့် QUIC ဆုံးရှုံးမှု ပြန်လည်ရယူခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်များ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် နည်းလမ်းများကို တက်ကြွစွာ ရှာဖွေနေပါသည်။
ဤအရာများနှင့် အခြားတိုးတက်မှုများစွာဖြင့်၊ ကျွန်ုပ်တို့သည် ကွန်ရက်နှင့် ဒေသမခွဲခြားဘဲ အသုံးပြုသူအတွေ့အကြုံကို မြှင့်တင်ရန် စီစဉ်နေပြီး ကမ္ဘာတစ်ဝှမ်းတွင် အဆင်ပြေပြေနှင့် ချောမွေ့မှုမရှိသော packet သယ်ယူပို့ဆောင်ရေးကို ပိုမိုလက်လှမ်းမီနိုင်စေရန် ကျွန်ုပ်တို့ စီစဉ်ထားပါသည်။
source: www.habr.com