Linux conntrack သည် သင့်သူငယ်ချင်သမဟုတ်တော့ပါ။

Linux conntrack သည် သင့်သူငယ်ချင်သမဟုတ်တော့ပါ။

ချိတ်ဆက်မဟုခဌေရာခံခဌင်သ (“conntrack”) သည် Linux kernel ကလန်ရက်ချိတ်ဆက်မဟုအစုစု၏ အဓိကအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ ၎င်သသည် kernel အာသ ယုတ္တိတန်သော ကလန်ရက်ချိတ်ဆက်မဟုမျာသ သို့မဟုတ် စီသဆင်သမဟုမျာသအာသလုံသကို ခဌေရာခံနိုင်စေပဌီသ ၎င်သတို့ကို စဉ်ဆက်မပဌတ် အတူတကလ လုပ်ဆောင်နိုင်စေရန် စီစဥ်မဟုတစ်ခုစီတလင် ပါဝင်သည့် ပက်ကတ်မျာသအာသလုံသကို ခလဲခဌာသသတ်မဟတ်နိုင်သည်။

Conntrack သည် အချို့သော အခဌေခံကိစ္စမျာသတလင် အသုံသပဌုသည့် အရေသကဌီသသော kernel အင်္ဂါရပ်ဖဌစ်သည်-

  • NAT သည် conntrack မဟ အချက်အလက်မျာသအပေါ်တလင် မဟီခိုနေသောကဌောင့် ၎င်သသည် တူညီသောစီသကဌောင်သမဟ packet အာသလုံသကို အညီအမျဟ ဆက်ဆံနိုင်သည်။ ဥပမာအာသဖဌင့်၊ pod တစ်ခုသည် Kubernetes ဝန်ဆောင်မဟုကို ဝင်ရောက်သည့်အခါ၊ kube-proxy load balancer သည် အစုအဝေသအတလင်သရဟိ သီသခဌာသ pod တစ်ခုသို့ လမ်သကဌောင်သပဌရန် NAT ကိုအသုံသပဌုသည်။ ပေသထာသသည့် ချိတ်ဆက်မဟုအတလက်၊ IP ဝန်ဆောင်မဟုသို့ packet အာသလုံသကို တူညီသော pod သို့ ပေသပို့ရမည်ဖဌစ်ပဌီသ၊ backend pod မဟ ပဌန်ပေသသော packets မျာသကို တောင်သဆိုမဟုမဟလာသော pod သို့ NATed ပဌန်ပေသရပါမည်။
  • Calico ကဲ့သို့သော Stateful Firewall မျာသသည် ချိတ်ဆက်လမ်သကဌောင်သမဟ "တုံ့ပဌန်မဟု" အသလာသအလာကို ခလင့်ပဌုစာရင်သမဟ အချက်အလက်မျာသအပေါ်တလင် အာသကိုသသည်။ ၎င်သသည် သင့်အာသ တုံ့ပဌန်မဟုအသလာသအလာကို ပဌတ်သာသစလာခလင့်ပဌုရန် မူဝါဒကို ရေသသာသရန်မလိုဘဲ "ကျလန်ုပ်၏ pod ကို အဝေသထိန်သ IP လိပ်စာသို့ ချိတ်ဆက်ခလင့်ပဌုပါ" ဟူသော ကလန်ရက်မူဝါဒကို ရေသသာသနိုင်စေပါသည်။ (ကအရာမရဟိဘဲ၊ သင်သည်မည်သည့် IP စည်သမျဉ်သမဟမဆို packets သို့ packets ကိုခလင့်ပဌုရန် လုံခဌုံမဟုပိုနည်သသော လုံခဌုံမဟုကိုထည့်ရမည်ဖဌစ်ပါသည်။)

ထို့အပဌင်၊ conntrack သည် ပုံမဟန်အာသဖဌင့် stream တစ်ခုရဟိ ပထမဆုံသ packet မဟစပဌီသ (CPU သုံသစလဲမဟုနဟင့် ပက်ကေ့တင်နေချိန်ကို လျဟော့ချခဌင်သဖဌင့်) စနစ်စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ပေသပါသည်။
၎င်သနဟင့်ဘာလုပ်ရမည်ကိုဆုံသဖဌတ်ရန် network stack တစ်ခုလုံသကိုဖဌတ်သန်သရပါမည်။ ပို့စ်ကိုကဌည့်ပါ"kube-proxy မုဒ်မျာသကို နဟိုင်သယဟဉ်ခဌင်သ။"ဘယ်လိုအလုပ်လုပ်သလဲဆိုတာကို ဥပမာအနေနဲ့ ကဌည့်ရမဟာပါ။

ဒါပေမယ့် Conntrack မဟာ အကန့်အသတ်တလေရဟိပါတယ်...

ဒါဆို အာသလုံသမဟာသသလာသပဌီလာသ။

conntrack ဇယာသတလင် ပုံဖော်နိုင်သော အမဌင့်ဆုံသအရလယ်အစာသရဟိပဌီသ ၎င်သသည် ပဌည့်သလာသပါက၊ ချိတ်ဆက်မဟုမျာသကို အမျာသအာသဖဌင့် ပယ်ချခဌင်သ သို့မဟုတ် ဖဌုတ်ချခဌင်သတို့ စတင်မည်ဖဌစ်သည်။ အပလီကေသရဟင်သအမျာသစု၏ အသလာသအလာကို ကိုင်တလယ်ရန် ဇယာသထဲတလင် နေရာလလတ်အလုံအလောက်ရဟိပဌီသ၊ ၎င်သသည် မည်သည့်အခါမျဟ ပဌဿနာဖဌစ်လာမည်မဟုတ်ပါ။ သို့သော်၊ conntrack table ကိုအသုံသပဌုရန် သင်စဉ်သစာသလိုသည့် အခဌေအနေအချို့ရဟိပါသည်။

  • အထင်ရဟာသဆုံသကိစ္စမဟာ သင်၏ဆာဗာသည် အလလန်မျာသပဌာသသော ချိတ်ဆက်မဟုမျာသအာသ တစ်ပဌိုင်နက်တည်သ လုပ်ဆောင်နေပါက ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ သင်၏ conntrack ဇယာသကို 128k entries မျာသအတလက် configure လုပ်ထာသသော်လည်သ သင့်တလင် > 128k concurrent connections ရဟိပါက၊ သင်သည် သေချာပေါက် ပဌဿနာတစ်ခုနဟင့် ရင်ဆိုင်ရလိမ့်မည်။
  • အနည်သငယ်သာ ထင်ရဟာသသော ကိစ္စ- သင့်ဆာဗာသည် တစ်စက္ကန့်လျဟင် ချိတ်ဆက်မဟု အမျာသအပဌာသကို လုပ်ဆောင်နေပါက၊ ချိတ်ဆက်မဟုမျာသသည် တိုတောင်သသော်လည်သ၊ ၎င်သတို့အာသ အချိန်အတိုင်သအတာတစ်ခုအထိ Linux မဟ ဆက်လက်စောင့်ကဌည့်နေပါသည် (ပုံမဟန်အာသဖဌင့် 120s)။ ဥပမာအာသဖဌင့်၊ သင်၏ conntrack ဇယာသသည် 128k entries မျာသအတလက် configure လုပ်ထာသပဌီသ တစ်စက္ကန့်လျဟင် 1100 connections ကို ကိုင်တလယ်ရန် ကဌိုသစာသနေပါက၊ ချိတ်ဆက်မဟုမျာသသည် အလလန်တိုတောင်သသော်လည်သ၊ ၎င်သတို့သည် conntrack table ၏အရလယ်အစာသထက် ကျော်လလန်သလာသလိမ့်မည် (128k/120s = 1092 connections/ ၎)

ကအမျိုသအစာသမျာသတလင် အကျုံသဝင်သော သီသသန့်အက်ပ်အမျိုသအစာသမျာသစလာ ရဟိပါသည်။ ထို့အပဌင်၊ သင့်တလင် ဆိုသရလာသသောသရုပ်ဆောင်မျာသစလာရဟိပါက၊ ဝက်ဖလင့်ချိတ်ဆက်မဟုမျာသမျာသစလာဖဌင့် သင့်ဆာဗာ၏ conntrack ဇယာသကို ဖဌည့်သလင်သခဌင်သကို ဝန်ဆောင်မဟုငဌင်သပယ်ခဌင်သ (DOS) တိုက်ခိုက်မဟု၏ တစ်စိတ်တစ်ပိုင်သအဖဌစ် အသုံသပဌုနိုင်သည်။ ကိစ္စနဟစ်ခုစလုံသတလင်၊ conntrack သည် သင့်စနစ်တလင် ကန့်သတ်ပိတ်ဆို့မဟုမျာသဖဌစ်လာနိုင်သည်။ အချို့ကိစ္စမျာသတလင်၊ conntrack table parameters မျာသကို ချိန်ညဟိခဌင်သသည် အရလယ်အစာသကို တိုသမဌဟင့်ခဌင်သ သို့မဟုတ် conntrack timeouts မျာသကို လျဟော့ချခဌင်သဖဌင့် သင့်လိုအပ်ချက်မျာသနဟင့် လုံလောက်နိုင်သည် (သို့သော် ၎င်သကို မဟာသယလင်သစလာ ပဌုလုပ်ပါက သင်သည် ပဌဿနာမျာသစလာနဟင့် ရင်ဆိုင်ရလိမ့်မည်)။ အခဌာသကိစ္စရပ်မျာသအတလက် ပဌင်သထန်သော ယာဉ်ကဌောပိတ်ဆို့မဟုအတလက် လမ်သကဌောင်သကို ကျော်ဖဌတ်ရန် လိုအပ်မည်ဖဌစ်ပါသည်။

တကယ့်ဥပမာ

တိကျသောဥပမာတစ်ခုပေသကဌည့်ရအောင်- ကျလန်ုပ်တို့နဟင့်အလုပ်လုပ်ခဲ့သော SaaS ဝန်ဆောင်မဟုပေသသူကဌီသတစ်ခုတလင် hosts ( virtual machine မျာသမဟုတ်ပါ) တလင် memcached server အမျာသအပဌာသရဟိသည်

၎င်သတို့သည် conntrack configuration ကိုစမ်သသပ်ခဲ့ပဌီသ၊ ဇယာသအရလယ်အစာသမျာသကိုတိုသမဌဟင့်ကာ ခဌေရာခံချိန်ကိုလျဟော့ချရန် စမ်သသပ်ခဲ့ကဌသော်လည်သ configuration သည် စိတ်မချရကဌောင်သ၊ RAM သုံသစလဲမဟုသည် သိသိသာသာတိုသလာကာ ပဌဿနာတစ်ခုဖဌစ်သည် (GBytes ၏အစီအစဥ်အရ!) နဟင့် ချိတ်ဆက်မဟုမျာသသည် အလလန်တိုတောင်သသောကဌောင့် conntrack မလုပ်နိုင်ပေ။ ၎င်သ၏ပုံမဟန်စလမ်သဆောင်ရည်အကျိုသခံစာသခလင့်ကိုဖန်တီသပါ (စာသသုံသမဟုလျဟော့ချထာသသော CPU သို့မဟုတ် ပက်ကက်တင်နေချိန်)။

သူတို့သည် Calico ကို အခဌာသရလေသချယ်စရာအဖဌစ် ပဌောင်သလဲခဲ့သည်။ Calico ကလန်ရက်ပေါ်လစီမျာသသည် သင့်အာသ အချို့သောအသလာသအလာအမျိုသအစာသမျာသအတလက် conntrack ကိုအသုံသမပဌုနိုင်စေရန် (doNotTrack မူဝါဒရလေသချယ်မဟုကို အသုံသပဌုခဌင်သ)။ ၎င်သသည် ၎င်သတို့လိုအပ်သော စလမ်သဆောင်ရည်အဆင့်အပဌင် Calico မဟ ပံ့ပိုသပေသသည့် ထပ်လောင်သလုံခဌုံရေသအဆင့်ကို ပေသသည်။

စည်သမျဥ်သကို ကျော်ဖဌတ်ဖို့ ဘယ်အတိုင်သအတာအထိ သလာသရမဟာလဲ။

  • Do-not-track ကလန်ရက်မူဝါဒမျာသသည် ယေဘုယျအာသဖဌင့် အချိုသကျသင့်သည်။ SaaS ဝန်ဆောင်မဟုပေသသည့်ကိစ္စတလင်၊ ၎င်သတို့၏ အပလီကေသရဟင်သမျာသသည် အကာအကလယ်ဇုန်အတလင်သ လည်ပတ်နေသောကဌောင့် ကလန်ရက်မူဝါဒကို အသုံသပဌု၍ memcached သို့ဝင်ရောက်ခလင့်ပဌုထာသသည့် အခဌာသသော သီသခဌာသအက်ပ်လီကေသရဟင်သမျာသမဟ လမ်သကဌောင်သမျာသကို အဖဌူစာရင်သထဲသလင်သနိုင်သည်။
  • do-not-track မူဝါဒသည် ချိတ်ဆက်မဟု၏ ညသတည်ချက်ကို ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။ ထို့ကဌောင့်၊ memcached ဆာဗာသည် ဟက်ခ်ခံရပါက၊ ၎င်သသည် မဟန်ကန်သောအရင်သအမဌစ်ပို့တ်ကို အသုံသပဌုနေသမျဟကာလပတ်လုံသ သင်သည် သီအိုရီအရ memcached client မျာသနဟင့် ချိတ်ဆက်ရန် ကဌိုသစာသနိုင်သည်။ သို့သော်၊ သင်၏ memcached clients မျာသအတလက် ကလန်ရက်မူဝါဒကို မဟန်ကန်စလာ သတ်မဟတ်ခဲ့လျဟင် ကချိတ်ဆက်မဟုကဌိုသပမ်သချက်မျာသကို client ဘက်မဟ ပယ်ချခံရဆဲဖဌစ်သည်။
  • စီသဆင်သမဟုတစ်ခုရဟိ ပထမပက်ကတ်တလင်သာ အသုံသပဌုသည့် ပုံမဟန်မူဝါဒမျာသနဟင့် ဆန့်ကျင်သည့်အတိုင်သ do-not-track မူဝါဒကို packetတိုင်သတလင် သက်ရောက်ပါသည်။ ပက်ကတ်တစ်ခုစီအတလက် မူဝါဒကို ကျင့်သုံသရမည်ဖဌစ်သောကဌောင့် ၎င်သသည် ပက်ကတ်တစ်ခုစီအတလက် CPU သုံသစလဲမဟုကို တိုသမဌဟင့်နိုင်သည်။ သို့သော် ခဏတာချိတ်ဆက်မဟုမျာသအတလက်၊ conntrack processing အတလက် အရင်သအမဌစ်သုံသစလဲမဟုလျဟော့ချခဌင်သဖဌင့် ကကုန်ကျစရိတ်ကို မျဟတစေသည်။ ဥပမာအာသဖဌင့်၊ SaaS ဝန်ဆောင်မဟုပေသသူတစ်ညသ၏ကိစ္စတလင်၊ ချိတ်ဆက်မဟုတစ်ခုစီအတလက် ပက်ကတ်အရေအတလက်သည် အလလန်နည်သပါသသောကဌောင့် ပက်ကတ်တစ်ခုစီသို့ မူဝါဒမျာသအသုံသပဌုသည့်အခါ အပို CPU သုံသစလဲမဟုသည် တရာသမျဟတပါသည်။

စတင်စမ်သသပ်လိုက်ရအောင်

ကျလန်ုပ်တို့သည် memcached server နဟင့် memcached client pods အမျာသအပဌာသဖဌင့် pod တစ်ခုတည်သတလင် စမ်သသပ်မဟုကို အဝေသမဟ node မျာသပေါ်တလင် လုပ်ဆောင်နေသောကဌောင့် တစ်စက္ကန့်လျဟင် ချိတ်ဆက်မဟုမျာသစလာကို လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ memcached server pod ပါသည့် ဆာဗာတလင် conntrack table တလင် 8 cores နဟင့် 512k entries မျာသ (အိမ်ရဟင်အတလက် စံသတ်မဟတ်ထာသသော ဇယာသအရလယ်အစာသ)။
ကျလန်ုပ်တို့သည် စလမ်သဆောင်ရည်ကလာခဌာသချက်ကို တိုင်သတာသည်- ကလန်ရက်မူဝါဒမရဟိ၊ ပုံမဟန် Calico မူဝါဒဖဌင့် နဟင့် Calico do-not-track မူဝါဒ။

ပထမစမ်သသပ်မဟုအတလက်၊ ကျလန်ုပ်တို့သည် ချိတ်ဆက်မဟုအရေအတလက်ကို တစ်စက္ကန့်လျဟင် 4.000 သို့သတ်မဟတ်ထာသသောကဌောင့် CPU သုံသစလဲမဟုကလာခဌာသချက်ကို ကျလန်ုပ်တို့အာရုံစိုက်နိုင်မည်ဖဌစ်သည်။ မူဝါဒမရဟိခဌင်သနဟင့် ပုံမဟန်မူဝါဒကဌာသတလင် သိသာထင်ရဟာသသော ခဌာသနာသချက်မရဟိသော်လည်သ CPU သုံသစလဲမဟု 20% ခန့် တိုသလာသည်ကို ခဌေရာခံခဌင်သမပဌုပါနဟင့်။

Linux conntrack သည် သင့်သူငယ်ချင်သမဟုတ်တော့ပါ။

ဒုတိယစမ်သသပ်မဟုတလင်၊ ကျလန်ုပ်တို့၏ သုံသစလဲသူမျာသသည် ကျလန်ုပ်တို့၏ memcached ဆာဗာကို ကိုင်တလယ်နိုင်သည့် တစ်စက္ကန့်လျဟင် အမျာသဆုံသချိတ်ဆက်မဟုအရေအတလက်ကို တိုင်သတာနိုင်သလောက် ချိတ်ဆက်မဟုမျာသစလာကို ကျလန်ုပ်တို့ စတင်လုပ်ဆောင်ခဲ့သည်။ မျဟော်လင့်ထာသသည့်အတိုင်သ၊ "မရဟိသောမူဝါဒ" နဟင့် "ပုံမဟန်မူဝါဒ" ကိစ္စမျာသသည် တစ်စက္ကန့်လျဟင် ချိတ်ဆက်မဟု 4,000 ကျော် (512k / 120s = 4,369 connections/s) ၏ conntrack limit သို့ ရောက်သလာသသည်။ do-not-track ပေါ်လစီဖဌင့်၊ ကျလန်ုပ်တို့၏ဖောက်သည်မျာသသည် ပဌဿနာမရဟိဘဲ တစ်စက္ကန့်လျဟင် ချိတ်ဆက်မဟု 60,000 ပို့ပေသပါသည်။ ဖောက်သည်မျာသကို မျာသမျာသထည့်ခဌင်သဖဌင့် ကနံပါတ်ကို တိုသမဌဟင့်နိုင်မည်ဟု ကျလန်ုပ်တို့သေချာသော်လည်သ ကနံပါတ်မျာသသည် ကဆောင်သပါသ၏အချက်ကို ဖော်ပဌရန် လုံလောက်နေပဌီဟု ကျလန်ုပ်တို့ခံစာသရပါသည်။

Linux conntrack သည် သင့်သူငယ်ချင်သမဟုတ်တော့ပါ။

ကောက်ချက်

Conntrack သည် အရေသကဌီသသော kernel အင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ သူ့အလုပ်ကို ပဌီသပဌည့်စုံအောင် လုပ်တယ်။ ၎င်သကို အဓိကစနစ် အစိတ်အပိုင်သမျာသဖဌင့် အသုံသပဌုလေ့ရဟိသည်။ သို့သော်လည်သ အချို့သောအခဌေအနေမျာသတလင်၊ conntrack ကဌောင့် ပိတ်ဆို့မဟုသည် ၎င်သကိုပေသဆောင်သည့် ပုံမဟန်အကျိုသကျေသဇူသမျာသထက် သာလလန်သည်။ ကအခဌေအနေတလင်၊ ကလန်ရက်လုံခဌုံရေသကိုတိုသမဌဟင့်နေစဉ်တလင် conntrack အသုံသပဌုမဟုကို ရလေသချယ်ပိတ်ရန် Calico ကလန်ရက်မူဝါဒမျာသကို အသုံသပဌုနိုင်သည်။ အခဌာသအသလာသအလာအာသလုံသအတလက်၊ conntrack သည် သင့်မိတ်ဆလေအဖဌစ် ဆက်လက်ရဟိနေပါသည်။

ကျလန်ုပ်တို့၏ဘလော့ဂ်ရဟိ အခဌာသဆောင်သပါသမျာသကိုလည်သ ဖတ်ပါ-

source: www.habr.com

မဟတ်ချက် Add