TCP ၏လျှို့ဝှက်လက်နက်- Network Flow Control နှင့် Network Congestion Control

TCP ယုံကြည်စိတ်ချရမှုပို့ဆောင်ရေး
ယုံကြည်စိတ်ချရသော သယ်ယူပို့ဆောင်ရေးပရိုတိုကောအဖြစ် TCP ပရိုတိုကောကို ကျွန်ုပ်တို့အားလုံး ရင်းနှီးနေကြသော်လည်း သယ်ယူပို့ဆောင်ရေး၏ ယုံကြည်စိတ်ချရမှုကို မည်သို့အာမခံနိုင်သနည်း။

ယုံကြည်စိတ်ချရသော ထုတ်လွှင့်မှုရရှိရန်၊ ဒေတာပျက်စီးခြင်း၊ ဆုံးရှုံးမှု၊ ပွားခြင်းနှင့် အော်ဒါမှမဟုတ်သော shard များကဲ့သို့သော အချက်များစွာကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။ ဤပြဿနာများကို မဖြေရှင်းနိုင်ပါက ယုံကြည်စိတ်ချရသော ပို့လွှတ်မှုကို အောင်မြင်နိုင်မည် မဟုတ်ပေ။

ထို့ကြောင့်၊ TCP သည် ယုံကြည်စိတ်ချရသော ဂီယာကိုရရှိရန် စီစဥ်နံပါတ်၊ အသိအမှတ်ပြုစာပြန်ကြားမှု၊ ထိန်းချုပ်မှုပြန်လည်ပေးပို့ရန်၊ ချိတ်ဆက်မှုစီမံခန့်ခွဲမှုနှင့် ဝင်းဒိုးထိန်းချုပ်မှုကဲ့သို့သော ယန္တရားများကို အသုံးပြုထားသည်။

ဤစာတမ်းတွင်၊ ကျွန်ုပ်တို့သည် လျှောပြတင်းပေါက်၊ စီးဆင်းမှုထိန်းချုပ်မှုနှင့် TCP ၏ပိတ်ဆို့မှုကို အာရုံစိုက်ပါမည်။ ပြန်လည်ပေးပို့ခြင်း ယန္တရားအား နောက်အပိုင်းတွင် သီးခြားစီ အကျုံးဝင်ပါသည်။

ကွန်ရက်စီးဆင်းမှု ထိန်းချုပ်ရေး
Network Flow Control သို့မဟုတ် Network Traffic Control ဟုခေါ်သည် အမှန်တကယ်တွင် ထုတ်လုပ်သူများနှင့် စားသုံးသူများကြား သိမ်မွေ့သောဆက်ဆံရေး၏ ထင်ရှားမှုတစ်ခုဖြစ်သည်။ အလုပ်မှာ ဒါမှမဟုတ် အင်တာဗျူးတွေမှာ ဒီလိုအခြေအနေမျိုး အများကြီးကြုံဖူးကြမှာပါ။ ထုတ်လုပ်သူ၏ ထုတ်လုပ်နိုင်စွမ်းသည် စားသုံးသူ၏ စားသုံးနိုင်စွမ်းအားထက် များစွာကျော်လွန်နေပါက တန်းစီခြင်းကို ရက်အကန့်အသတ်မရှိ ကြီးထွားလာစေမည်ဖြစ်သည်။ ပိုလေးနက်တဲ့ကိစ္စမှာ၊ RabbitMQ မက်ဆေ့ချ်တွေ အရမ်းများလာတဲ့အခါ MQ ဆာဗာတစ်ခုလုံးရဲ့ စွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်တယ်ဆိုတာ သင်သိနိုင်ပါတယ်။ TCP မှာလည်း အလားတူပါပဲ။ အကယ်၍ အမှတ်မထားခဲ့ပါက၊ ကွန်ရက်ထဲသို့ မက်ဆေ့ချ်များ များပြားနေမည်ဖြစ်ပြီး သုံးစွဲသူများသည် ၎င်းတို့၏ စွမ်းဆောင်ရည်ကို ကျော်လွန်သွားမည်ဖြစ်ပြီး ထုတ်လုပ်သူများသည် ကွန်ရက်၏စွမ်းဆောင်ရည်ကို များစွာထိခိုက်စေမည့် ထပ်တူမက်ဆေ့ချ်များကို ဆက်လက်ပေးပို့နေမည်ဖြစ်သည်။

ဤဖြစ်စဉ်ကိုဖြေရှင်းရန် TCP သည် ပေးပို့သူအား စီးဆင်းမှုထိန်းချုပ်မှုဟုလူသိများသည့် လက်ခံသူ၏အမှန်တကယ်လက်ခံနိုင်မှုစွမ်းရည်အပေါ်အခြေခံ၍ ပေးပို့သည့်ဒေတာပမာဏကိုထိန်းချုပ်ရန်ယန္တရားတစ်ခုပေးပါသည်။ လက်ခံသူသည် လက်ခံသည့်ဝင်းဒိုးကို ထိန်းသိမ်းထားပြီး ပေးပို့သူသည် ပေးပို့သည့်ဝင်းဒိုးကို ထိန်းသိမ်းထားသည်။ ဤ Windows များသည် TCP ချိတ်ဆက်မှုတစ်ခုတည်းအတွက်သာဖြစ်ပြီး ချိတ်ဆက်မှုအားလုံးသည် ဝင်းဒိုးကိုမျှဝေခြင်းမဟုတ်ကြောင်း သတိပြုသင့်သည်။

TCP သည် လက်ခံဝင်းဒိုးအတွက် ကိန်းရှင်တစ်ခုကို အသုံးပြုခြင်းဖြင့် စီးဆင်းမှုကို ထိန်းချုပ်ပေးပါသည်။ လက်ခံသည့်ဝင်းဒိုးသည် ပေးပို့သူအား ကက်ရှ်နေရာ မည်မျှရနိုင်သေးသည်ကို ညွှန်ပြပေးသည်။ ပေးပို့သူသည် လက်ခံသူ၏ အမှန်တကယ်လက်ခံနိုင်မှုစွမ်းရည်အရ ပေးပို့သည့်ဒေတာပမာဏကို ထိန်းချုပ်သည်။

လက်ခံသူသည် လက်ခံရရှိနိုင်သည့် ဒေတာအရွယ်အစားကို ပေးပို့သူကို အကြောင်းကြားပြီး ပေးပို့သူသည် ဤကန့်သတ်ချက်အထိ ပေးပို့သည်။ ဤကန့်သတ်ချက်သည် ဝင်းဒိုးအရွယ်အစားဖြစ်သည်၊ TCP ခေါင်းစီးကို မှတ်မိပါသလား။ လက်ခံသူသည် လက်ခံနိုင် သို့မဟုတ် လက်ခံလိုသော ဘိုက်အရေအတွက်ကို ညွှန်ပြရန်အတွက် အသုံးပြုသည့် လက်ခံဝင်းဒိုးအကွက်တစ်ခု ရှိပါသည်။

ပေးပို့သူလက်ခံသူသည် ဒေတာလက်ခံနိုင်ဆဲရှိမရှိကို သိရှိရန်အသုံးပြုသည့် window probe packet ကို အခါအားလျော်စွာ ပေးပို့မည်ဖြစ်ပါသည်။ လက်ခံသူ၏ကြားခံသည် ပြည့်လျှံမည့်အန္တရာယ်ရှိသောအခါ၊ ပေးပို့သူအား ပေးပို့သည့်ဒေတာပမာဏကို ထိန်းချုပ်ရန် ညွှန်ကြားရန် ဝင်းဒိုးအရွယ်အစားကို သေးငယ်သည့်တန်ဖိုးအဖြစ် သတ်မှတ်ထားသည်။

ဤသည်မှာ Network Flow Control diagram တစ်ခုဖြစ်သည်။

ယာဉ်ထိန်း

Network Congestion Control
congestion control ကိုမိတ်ဆက်ခြင်းမပြုမီ၊ လက်ခံ window နှင့် send window အပြင်တွင် congestion window တစ်ခုလည်းရှိပါသည်၊ ၎င်းသည် ပေးပို့သူသည် လက်ခံသည့်ဝင်းဒိုးသို့ ဒေတာပေးပို့သည့်နှုန်းဖြင့် စတင်သည့်ပြဿနာကိုဖြေရှင်းရန်အတွက် အဓိကအားဖြင့်အသုံးပြုသည့် congestion window တစ်ခုလည်းရှိသည်ကို နားလည်ရန်လိုအပ်ပါသည်။ ထို့ကြောင့်၊ ပိတ်ဆို့မှုဝင်းဒိုးကိုလည်း TCP ပေးပို့သူမှ ထိန်းသိမ်းထားသည်။ ဒေတာ မည်မျှ ပေးပို့ရန် သင့်လျော်ကြောင်း ဆုံးဖြတ်ရန် ကျွန်ုပ်တို့သည် အယ်လဂိုရီသမ်တစ်ခု လိုအပ်သည်၊ ဒေတာ နည်းပါးလွန်းသည် သို့မဟုတ် အလွန်အကျွံ ပေးပို့ခြင်းသည် စံမလောက်သောကြောင့်၊ ထို့ကြောင့် congestion window ၏ သဘောတရားဖြစ်သည်။

ယခင် ကွန်ရက်စီးဆင်းမှု ထိန်းချုပ်မှုတွင်၊ ကျွန်ုပ်တို့ ရှောင်ရှားခဲ့သည့်အရာမှာ လက်ခံသူ၏ ကက်ရှ်ကို ဒေတာဖြင့် ပေးပို့သူမှ ဖြည့်ပေးခဲ့သော်လည်း ကွန်ရက်တွင် ဘာဖြစ်နေသည်ကို ကျွန်ုပ်တို့ မသိခဲ့ပါ။ ပုံမှန်အားဖြင့်၊ ကွန်ပျူတာကွန်ရက်များသည် မျှဝေထားသောပတ်ဝန်းကျင်တွင်ရှိသည်။ ရလဒ်အနေဖြင့်၊ အခြားသော host များအကြား ဆက်သွယ်မှုများကြောင့် ကွန်ရက်ပိတ်နေခြင်း ဖြစ်နိုင်သည်။

ကွန်ရက်ပိတ်နေသောအခါတွင် ပက်ကတ်အများအပြားကို ဆက်လက်ပေးပို့ပါက၊ ကြန့်ကြာမှုနှင့် ပက်ကတ်များဆုံးရှုံးခြင်းကဲ့သို့သော ပြဿနာများကို ဖြစ်စေနိုင်သည်။ ဤအချိန်တွင် TCP သည် ဒေတာကို ပြန်လည်ပေးပို့မည်ဖြစ်သော်လည်း ပြန်လည်ပေးပို့ခြင်းသည် ကွန်ရက်ပေါ်ရှိ ဝန်ထုပ်ဝန်ပိုးကို တိုးလာစေပြီး ပိုကြီးသော နှောင့်နှေးမှုများနှင့် ပက်ကက်ဆုံးရှုံးမှုများ ပိုမိုဖြစ်ပေါ်စေပါသည်။ ၎င်းသည် ဆိုးရွားသော သံသရာသို့ ရောက်သွားနိုင်ပြီး ပိုမိုကြီးမားလာနိုင်သည်။

ထို့ကြောင့် TCP သည် ကွန်ရက်ပေါ်တွင် ဖြစ်ပျက်နေသည့်အရာကို လျစ်လျူရှု၍မရပါ။ ကွန်ရက်များ ပြည့်ကျပ်နေချိန်တွင် TCP သည် ၎င်းပေးပို့သည့် ဒေတာပမာဏကို လျှော့ချခြင်းဖြင့် သူ့ကိုယ်သူ စွန့်လွှတ်သည်။

ထို့ကြောင့် ပေးပို့သူထံမှ ဒေတာဖြင့် ကွန်ရက်တစ်ခုလုံးကို ဖြည့်သွင်းခြင်းမှ ရှောင်ရှားရန် ရည်ရွယ်သည့် ပိတ်ဆို့မှုများကို ထိန်းချုပ်ရန် အဆိုပြုထားသည်။ ပေးပို့သူပေးပို့သင့်သော ဒေတာပမာဏကို ထိန်းညှိရန် TCP သည် congestion window ဟုခေါ်သော သဘောတရားကို သတ်မှတ်သည်။ congestion control algorithm သည် network ၏ congestion degree အရ ပေးပို့သူမှ ပေးပို့သော data ပမာဏကို ထိန်းချုပ်ရန်အတွက် congestion window ၏ အရွယ်အစားကို ချိန်ညှိမည်ဖြစ်သည်။

congestion window ဆိုတာ ဘာလဲ။ ဒါက send window နဲ့ ဘာဆိုင်လဲ။

Congestion Window သည် ပေးပို့သူမှ ပေးပို့သူပေးပို့နိုင်သော ဒေတာပမာဏကို ဆုံးဖြတ်ပေးသည့် ပေးပို့သူမှ ထိန်းသိမ်းထားသော အခြေအနေတစ်ခုဖြစ်သည်။ ကွန်ရက်ပိတ်ခြင်းအဆင့်အရ ကွန်ပြူတာဝင်းဒိုးသည် အင်တိုက်အားတိုက် ပြောင်းလဲပါသည်။

Sending Window သည် လက်ခံသူလက်ခံရရှိနိုင်သည့်ဒေတာပမာဏကိုညွှန်ပြသော ပေးပို့သူနှင့်လက်ခံသူကြားရှိ ဝင်းဒိုးအရွယ်အစားပေါ်မူတည်၍ သဘောတူညီထားသည့်အတိုင်းအတာတစ်ခုဖြစ်သည်။ ပိတ်ဆို့မှုပြတင်းပေါက်နှင့် ပေးပို့သည့်ဝင်းဒိုးတို့သည် ဆက်စပ်နေပါသည်။ ပေးပို့သည့်ဝင်းဒိုးသည် အများအားဖြင့် ပိတ်ဆို့မှုနှင့် လက်ခံရရှိသည့် Windows ၏ အနည်းဆုံးနှင့် ညီမျှသည်၊ ဆိုလိုသည်မှာ swnd = min(cwnd, rwnd) ဖြစ်သည်။

congestion window cwnd သည် အောက်ပါအတိုင်း ပြောင်းလဲပါသည်။

ကွန်ရက်တွင် congestion မရှိပါက၊ ဆိုလိုသည်မှာ၊ retransmission timeout မဖြစ်ပေါ်ပါက congestion window တိုးလာပါသည်။

ကွန်ရက်တွင် ပိတ်ဆို့မှုများရှိနေပါက၊ ပိတ်နေသည့်ဝင်းဒိုး လျော့နည်းသွားပါသည်။

သတ်မှတ်ထားသောအချိန်အတွင်း ACK အသိအမှတ်ပြု packet ကို လက်ခံရရှိခြင်းရှိမရှိ စောင့်ကြည့်ခြင်းဖြင့် ပေးပို့သူသည် ကွန်ရက်ပိတ်နေခြင်းရှိမရှိ ဆုံးဖြတ်သည်။ ပေးပို့သူသည် သတ်မှတ်ထားသည့်အချိန်အတွင်း ACK အသိအမှတ်ပြု packet ကို မရရှိပါက၊ ကွန်ရက်ပိတ်နေသည်ဟု ယူဆပါသည်။

congestion window အပြင်၊ TCP congestion control algorithm ကို ဆွေးနွေးရန် အချိန်ရောက်ပါပြီ။ TCP congestion control algorithm တွင် အဓိက အပိုင်းသုံးပိုင်း ပါဝင်ပါသည်။

နှေးကွေးစွာ စတင်ခြင်း-အစပိုင်းတွင်၊ cwnd congestion window သည် အတော်လေးသေးငယ်ပြီး ပေးပို့သူသည် network ၏စွမ်းဆောင်ရည်နှင့် လျင်မြန်စွာလိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ရန်အတွက် congestion window ကို အဆတိုးပေးပါသည်။
ယာဉ်ကြောပိတ်ဆို့မှုကို ရှောင်ရှားခြင်း-ပိတ်နေသည့်ဝင်းဒိုးသည် သတ်မှတ်ထားသော ကန့်သတ်ချက်ထက်ကျော်လွန်ပြီးနောက်၊ ပေးပို့သူသည် ပိတ်နေသည့်ဝင်းဒိုး၏ ကြီးထွားနှုန်းကို နှေးကွေးစေပြီး ကွန်ရက်ကို ဝန်ပိုချခြင်းကို ရှောင်ရှားရန် လိုင်းရိုးပုံစံအတိုင်း တိုးပေးသည်။
အမြန်ပြန်လည်ရယူခြင်း-ပိတ်ဆို့မှုများဖြစ်ပေါ်ပါက၊ ပေးပို့သူသည် ပိတ်ဆို့နေသောဝင်းဒိုးကို တစ်ဝက်ဖြတ်ကာ လက်ခံရရှိထားသော ထပ်တူထားသော acks မှတစ်ဆင့် ကွန်ရက်ပြန်လည်ရယူခြင်း၏တည်နေရာကို ဆုံးဖြတ်ရန် အမြန်ပြန်လည်ရယူသည့်အခြေအနေသို့ ဝင်ရောက်ကာ၊ ထို့နောက်တွင် ပိတ်နေသောဝင်းဒိုးကို ဆက်လက်တိုးမြှင့်စေသည်။

နှေးနှေးစတင်ပါ။
TCP ချိတ်ဆက်မှုတစ်ခုကို တည်ဆောက်သောအခါ၊ ပိတ်နေသည့်ဝင်းဒိုး cwnd ကို အနိမ့်ဆုံး MSS (အမြင့်ဆုံး အပိုင်းအရွယ်အစား) တန်ဖိုးအဖြစ် ကနဦးသတ်မှတ်ထားသည်။ ဤနည်းအားဖြင့်၊ ကနဦးပေးပို့မှုနှုန်းသည် MSS/RTT bytes/second ခန့်ဖြစ်သည်။ အမှန်တကယ်ရရှိနိုင်သည့် bandwidth သည် အများအားဖြင့် MSS/RTT ထက် များစွာပိုကြီးသောကြောင့် TCP သည် အနှေး-စတင်ခြင်းဖြင့် ရရှိနိုင်သည့် အကောင်းဆုံးပေးပို့မှုနှုန်းကို ရှာဖွေလိုပါသည်။

အနှေးစတင်သည့်လုပ်ငန်းစဉ်တွင်၊ congestion window cwnd ၏တန်ဖိုးကို 1 MSS သို့ အစပြုမည်ဖြစ်ပြီး၊ transmitted packet segment ကို အသိအမှတ်ပြုလိုက်တိုင်း cwnd ၏တန်ဖိုးသည် MSS တစ်ခုမှတိုးလာမည်ဖြစ်သည်၊ ဆိုလိုသည်မှာ cwnd ၏တန်ဖိုးသည် 2 MSS ဖြစ်လာမည်ဖြစ်သည်။ ထို့နောက်တွင်၊ packet segment တစ်ခု၏ အောင်မြင်သော transmission တစ်ခုစီအတွက် cwnd ၏တန်ဖိုးသည် နှစ်ဆဖြစ်သွားသည်။ တိကျသောကြီးထွားမှုလုပ်ငန်းစဉ်ကိုအောက်ပါပုံတွင်ပြသထားသည်။

 ကွန်ရက်ပိတ်ခြင်းကို ထိန်းချုပ်ခြင်း။

သို့သော်လည်း ပေးပို့မှုနှုန်းသည် အမြဲတမ်း မကြီးထွားနိုင်ပါ။ ကြီးထွားမှုသည် တစ်ချိန်ချိန်တွင် အဆုံးသတ်ရပေမည်။ ဒါဆို ပို့ခတိုးနှုန်းက ဘယ်အချိန်မှာ ဆုံးမလဲ။ Slow-start သည် ပုံမှန်အားဖြင့် နည်းလမ်းများစွာထဲမှ တစ်ခုဖြင့် ပေးပို့မှုနှုန်းတိုးခြင်းကို အဆုံးသတ်သည်-

ပထမနည်းလမ်းမှာ စတင်နှေးကွေးသော ပေးပို့ခြင်းလုပ်ငန်းစဉ်အတွင်း ပက်ကက်ပျောက်ဆုံးခြင်းကိစ္စဖြစ်သည်။ ပက်ကက်ပျောက်ဆုံးမှုဖြစ်ပေါ်သောအခါ၊ TCP သည် ပေးပို့သူ၏ပိတ်နေသည့်ဝင်းဒိုး cwnd ကို 1 အဖြစ်သတ်မှတ်ပြီး နှေးကွေးသောစတင်မှုလုပ်ငန်းစဉ်ကို ပြန်လည်စတင်သည်။ ဤအချိန်တွင်၊ နှေးကွေးသော start threshold ssthresh ၏ သဘောတရားကို မိတ်ဆက်ထားပြီး၊ ၎င်း၏ ကနဦးတန်ဖိုးသည် ပက်ကတ်ဆုံးရှုံးမှုကို ထုတ်ပေးသည့် cwnd တန်ဖိုး၏ ထက်ဝက်ဖြစ်သည်။ ဆိုလိုသည်မှာ၊ congestion ကိုတွေ့ရှိသောအခါ၊ ssthresh ၏တန်ဖိုးသည် window value ၏တစ်ဝက်ဖြစ်သည်။

ဒုတိယနည်းလမ်းမှာ slow-start threshold ssthresh ၏တန်ဖိုးနှင့် တိုက်ရိုက်ဆက်စပ်ရန်ဖြစ်သည်။ ssthresh ၏တန်ဖိုးသည် ပိတ်ဆို့ခြင်းကို တွေ့ရှိသောအခါ ဝင်းဒိုးတန်ဖိုး၏ ထက်ဝက်ဖြစ်သောကြောင့်၊ cwnd သည် ssthresh ထက်ကြီးသောအခါ တစ်ခုစီတွင် packet ဆုံးရှုံးမှုသည် နှစ်ဆဖြစ်သွားနိုင်သည်။ ထို့ကြောင့်၊ TCP ကို ​​congestion control mode သို့ပြောင်းပြီး slow-start ကိုအဆုံးသတ်စေမည့် cwnd ကို ssthresh သို့သတ်မှတ်ခြင်းသည် အကောင်းဆုံးဖြစ်သည်။

နှေးကွေးသောစတင်မှုကို အဆုံးသတ်နိုင်သည့် နောက်ဆုံးနည်းလမ်းမှာ မလိုအပ်သည့် acks သုံးခုကို တွေ့ရှိပါက၊ TCP သည် အမြန်ပြန်လည်ပေးပို့ခြင်းကို လုပ်ဆောင်ပြီး ပြန်လည်ရယူသည့်အခြေအနေသို့ ဝင်ရောက်သည်။ (ACK packet သုံးခု အဘယ်ကြောင့် ရှိသည်ကို ရှင်းရှင်းလင်းလင်း မသိပါက၊ ၎င်းကို retransmission ယန္တရားတွင် သီးခြား ရှင်းပြပါမည်။)

ယာဉ်ကြောပိတ်ခြင်းကို ရှောင်ကြဉ်ခြင်း။
TCP သည် congestion control state သို့ဝင်ရောက်သောအခါ cwnd သည် congestion threshold ၏ တစ်ဝက်ကို ssthresh သို့ သတ်မှတ်ထားသည်။ ဆိုလိုသည်မှာ packet segment တစ်ခုလက်ခံရရှိတိုင်း cwnd ၏တန်ဖိုးသည် နှစ်ဆမဖြစ်နိုင်ပါ။ ယင်းအစား၊ ထုတ်လွှင့်မှုတစ်ခုစီပြီးသောအခါ cwnd ၏တန်ဖိုးသည် MSS (အမြင့်ဆုံး ပက်ကတ်အပိုင်းအရှည်) တစ်ခုသာတိုးလာသည့်အတွက် အတော်လေး ရှေးရိုးဆန်သောချဉ်းကပ်မှုကို လက်ခံကျင့်သုံးပါသည်။ ဥပမာအားဖြင့်၊ packet segments 10 ခုကို အသိအမှတ်ပြုလျှင်ပင် cwnd ၏တန်ဖိုးသည် MSS တစ်ခုသာ တိုးလာမည်ဖြစ်သည်။ ၎င်းသည် မျဉ်းသားကြီးထွားမှုပုံစံတစ်ခုဖြစ်ပြီး ၎င်းသည် ကြီးထွားမှုအပေါ် ကန့်သတ်ချက်လည်းရှိသည်။ packet ဆုံးရှုံးမှုဖြစ်ပေါ်သောအခါ cwnd ၏တန်ဖိုးကို MSS အဖြစ်ပြောင်းလဲပြီး ssthresh ၏တန်ဖိုးကို cwnd ၏တစ်ဝက်အဖြစ်သတ်မှတ်ထားသည်။ သို့မဟုတ် ထပ်ပြီး ACK တုံ့ပြန်မှု 3 ခုကို လက်ခံရရှိသည့်အခါ MSS ၏တိုးတက်မှုကိုလည်း ရပ်တန့်သွားမည်ဖြစ်သည်။ cwnd တန်ဖိုးကို ထက်ဝက်လျှော့ချပြီးနောက် မလိုအပ်သော acks သုံးခုကို လက်ခံရရှိဆဲဖြစ်ပါက၊ ssthresh ၏တန်ဖိုးကို cwnd ၏တန်ဖိုးထက်ဝက်အဖြစ် မှတ်တမ်းတင်ပြီး အမြန်ပြန်လည်ရယူခြင်းအခြေအနေကို ထည့်သွင်းပါသည်။

အမြန်ပြန်လည်ရယူခြင်း။
Fast Recovery အခြေအနေတွင်၊ congestion window cwnd ၏တန်ဖိုးသည် လက်ခံရရှိထားသော redundant ACK တစ်ခုစီအတွက် MSS တစ်ခုစီ တိုးလာသည်၊ ဆိုလိုသည်မှာ၊ sequence မရောက်သော ACK ဖြစ်သည် ။ ၎င်းသည် ပို့လွှတ်မှုစွမ်းဆောင်ရည်ကို တတ်နိုင်သမျှ မြှင့်တင်ရန် ကွန်ရက်အတွင်း အောင်မြင်စွာ ပို့လွှတ်ထားသော ပက်ကက်အပိုင်းများကို အသုံးပြုရန်ဖြစ်သည်။

ပျောက်ဆုံးသွားသော packet အပိုင်း၏ ACK ရောက်ရှိလာသောအခါ၊ TCP သည် cwnd ၏တန်ဖိုးကို လျှော့ချပြီးနောက် congestion ရှောင်ရှားခြင်းအခြေအနေသို့ ဝင်ရောက်သည်။ ၎င်းသည် congestion window ၏အရွယ်အစားကိုထိန်းချုပ်ရန်နှင့် network congestion ထပ်တိုးလာခြင်းကိုရှောင်ရှားရန်ဖြစ်သည်။

ပိတ်ဆို့ခြင်းထိန်းချုပ်မှုအခြေအနေပြီးနောက် အချိန်ကုန်သွားပါက၊ ကွန်ရက်အခြေအနေသည် ပိုမိုပြင်းထန်လာပြီး TCP သည် ပိတ်ဆို့မှုကင်းဝေးသည့်အခြေအနေမှ စတင်နှေးကွေးသည့်အခြေအနေသို့ ရွှေ့ပြောင်းသွားပါသည်။ ဤကိစ္စတွင်၊ congestion window cwnd ၏တန်ဖိုးကို 1 MSS၊ အမြင့်ဆုံး packet အပိုင်းအရှည်၊ နှင့် slow-start threshold ssthresh ၏တန်ဖိုးကို cwnd ၏ ထက်ဝက်အဖြစ် သတ်မှတ်ထားသည်။ ဤအရာ၏ရည်ရွယ်ချက်မှာ ကွန်ရက်ပြန်လည်ကောင်းမွန်လာပြီးနောက် ထုတ်လွှင့်မှုနှုန်းနှင့် ကွန်ရက်ပိတ်နေခြင်း၏အတိုင်းအတာကို ဟန်ချက်ညီစေရန်ဖြစ်သည်။

အကျဉ်းချုပ်
ယုံကြည်စိတ်ချရသော သယ်ယူပို့ဆောင်ရေးပရိုတိုကောတစ်ခုအနေဖြင့် TCP သည် နံပါတ်စဉ်အလိုက်၊ အသိအမှတ်ပြုမှု၊ ပြန်လည်ပေးပို့မှုထိန်းချုပ်မှု၊ ချိတ်ဆက်မှုစီမံခန့်ခွဲရေးနှင့် ဝင်းဒိုးထိန်းချုပ်မှုတို့ဖြင့် ယုံကြည်စိတ်ချရသောသယ်ယူပို့ဆောင်ရေးကို လုပ်ဆောင်သည်။ ၎င်းတို့တွင်၊ စီးဆင်းမှုထိန်းချုပ်မှုယန္တရားသည် ပေးပို့သူမှပေးပို့သော ဒေတာပမာဏကို လက်ခံသူ၏ အမှန်တကယ်လက်ခံနိုင်မှုစွမ်းရည်အတိုင်း ထိန်းချုပ်ပေးသည်၊ ၎င်းသည် ကွန်ရက်ပိတ်ခြင်းနှင့် စွမ်းဆောင်ရည်ကျဆင်းခြင်းပြဿနာများကို ရှောင်ရှားသည်။ ပေးပို့သူမှပေးပို့သောဒေတာပမာဏကို ချိန်ညှိခြင်းဖြင့် ကွန်ရက်ပိတ်ခြင်းဖြစ်ပေါ်ခြင်းကို တားဆီးပေးပါသည်။ ပိတ်နေသောဝင်းဒိုးနှင့် ပေးပို့ခြင်းဝင်းဒိုး၏ သဘောတရားများသည် တစ်ခုနှင့်တစ်ခု ဆက်စပ်နေပြီး၊ ပေးပို့သူရှိ ဒေတာပမာဏကို ပိတ်နေသည့်ဝင်းဒိုး၏ အရွယ်အစားကို ဒိုင်နမစ်ဖြင့် ချိန်ညှိခြင်းဖြင့် ထိန်းချုပ်ထားသည်။ စတင်မှု နှေးကွေးခြင်း၊ ပိတ်ဆို့မှုကို ရှောင်ရှားခြင်းနှင့် အမြန်ပြန်လည်ရယူခြင်းသည် ကွန်ရက်၏ စွမ်းဆောင်ရည်နှင့် ပိတ်ဆို့ခြင်းအဆင့်ကို လိုက်လျောညီထွေဖြစ်စေရန် ကွဲပြားသော နည်းဗျူဟာများမှတစ်ဆင့် ပိတ်ဆို့ခြင်းဝင်းဒိုး၏အရွယ်အစားကို ချိန်ညှိပေးသည့် TCP congestion control algorithm ၏ အဓိကအစိတ်အပိုင်းသုံးခုဖြစ်သည်။

နောက်အပိုင်းတွင်၊ ကျွန်ုပ်တို့သည် TCP ၏ပြန်လည်ပေးပို့ခြင်းယန္တရားကို အသေးစိတ်စစ်ဆေးပါမည်။ Retransmission ယန္တရားသည် ယုံကြည်စိတ်ချရသော ဂီယာရရှိရန် TCP ၏ အရေးကြီးသော အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ၎င်းသည် ပျောက်ဆုံးသွားသော၊ ပျက်စီးနေသော သို့မဟုတ် နှောင့်နှေးသောဒေတာကို ပြန်လည်ပေးပို့ခြင်းဖြင့် ယုံကြည်စိတ်ချရသော ဒေတာပေးပို့မှုကို သေချာစေသည်။ ပြန်လည်ဖြန့်ဖြူးရေးယန္တရား၏ အကောင်အထည်ဖော်ရေးမူနှင့် မဟာဗျူဟာကို နောက်အပိုင်းတွင် အသေးစိတ် မိတ်ဆက်ပြီး ခွဲခြမ်းစိတ်ဖြာပါမည်။ ဆက်ပြီးနားထောင်ပါ!


စာတိုက်အချိန်- ဖေဖော်ဝါရီ ၂၄-၂၀၂၅