အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

အာသလုံသမင်္ဂလာပါ! ကျလန်ုပ်၏အမည်မဟာ Dmitry Samsonov ဖဌစ်ပဌီသ၊ ကျလန်ုပ်သည် Odnoklassniki တလင် ညသဆောင်စနစ်စီမံခန့်ခလဲသူအဖဌစ် လုပ်ကိုင်ပါသည်။ ကျလန်ုပ်တို့တလင် ရုပ်ပိုင်သဆိုင်ရာဆာဗာပေါင်သ 7 ကျော်၊ ကျလန်ုပ်တို့၏ cloud တလင် ကလန်တိန်နာပေါင်သ 11 နဟင့် အပလီကေသရဟင်သပေါင်သ 200 ရဟိပဌီသ၊ အမျိုသမျိုသသောဖလဲ့စည်သပုံမျာသတလင် မတူညီသောအစုအဝေသပေါင်သ 700 ကိုဖလဲ့စည်သထာသပါသည်။ ဆာဗာအမျာသစုသည် CentOS 7 ကိုအသုံသပဌုသည်။
14 ခုနဟစ် သဌဂုတ်လ 2018 ရက်နေ့တလင် FragmentSmack အာသနည်သချက်အကဌောင်သ အချက်အလက်ကို ထုတ်ပဌန်ခဲ့သည်။
(CVE-2018-5391) နဟင့် SegmentSmack (CVE-2018-5390) ၎င်သတို့သည် အရင်သအမဌစ်မျာသ ကုန်ဆုံသသလာသခဌင်သ (CPU) ကဌောင့် ဝန်ဆောင်မဟု ငဌင်သပယ်ခဌင်သ (DoS) ကို ခဌိမ်သခဌောက်သည့် ကလန်ရက် တိုက်ခိုက်မဟု အာသနည်သချက်နဟင့် ရမဟတ် (၇.၅) ပါရဟိသော အာသနည်သချက်မျာသ ဖဌစ်သည်။ FragmentSmack အတလက် kernel ပဌင်ဆင်မဟုကို ထိုအချိန်က အဆိုပဌုထာသခဌင်သ မရဟိသော်လည်သ၊ ၎င်သသည် အာသနည်သချက်နဟင့်ပတ်သက်သည့် အချက်အလက်မျာသကို ထုတ်ပဌန်ခဌင်သထက် မျာသစလာနောက်ကျပဌီသမဟ ထလက်လာပါသည်။ SegmentSmack ကိုဖယ်ရဟာသရန်အတလက် kernel ကို update လုပ်ရန် အကဌံပဌုထာသသည်။ အပ်ဒိတ်ပက်ကေ့ခ်ျကို ထိုနေ့တလင်ပင် ထုတ်လလဟတ်ခဲ့ပဌီသ ကျန်အရာအာသလုံသမဟာ ၎င်သကို ထည့်သလင်သရန်ဖဌစ်သည်။
မဟုတ်ပါ၊ ကျလန်ုပ်တို့သည် kernel ကို အပ်ဒိတ်လုပ်ခဌင်သကို လုံသဝမဆန့်ကျင်ပါ။ သို့သော် ကလဲလလဲမဟုမျာသရဟိပါသည်...

ထုတ်လုပ်မဟုတလင် kernel ကို ကျလန်ုပ်တို့ မည်သို့ အပ်ဒိတ်လုပ်မည်နည်သ။

ယေဘုယျအာသဖဌင့်၊ ဘာမဟမရဟုပ်ထလေသပါ။

  1. ပက်ကေ့ဂျ်မျာသကို ဒေါင်သလုဒ်လုပ်ပါ
  2. ၎င်သတို့ကို ဆာဗာအမျာသအပဌာသတလင် ထည့်သလင်သပါ (ကျလန်ုပ်တို့၏ cloud ကို လက်ခံဆောင်ရလက်ပေသသည့် ဆာဗာမျာသအပါအဝင်)၊
  3. ဘယ်အရာမဟ ပျက်မသလာသကဌောင်သ သေချာပါစေ။
  4. ပုံမဟန် kernel ဆက်တင်မျာသအာသလုံသကို အမဟာသအယလင်သမရဟိဘဲ အသုံသပဌုထာသကဌောင်သ သေချာပါစေ။
  5. ရက်အနည်သငယ်စောင့်ပါ။
  6. ဆာဗာစလမ်သဆောင်ရည်ကို စစ်ဆေသပါ။
  7. ဆာဗာအသစ်မျာသ၏ ဖဌန့်ကျက်မဟုကို kernel အသစ်သို့ ပဌောင်သပါ။
  8. ဆာဗာအာသလုံသကို ဒေတာစင်တာဖဌင့် အပ်ဒိတ်လုပ်ပါ (ပဌဿနာမျာသရဟိလာပါက အသုံသပဌုသူမျာသအပေါ် သက်ရောက်မဟုအနည်သဆုံသဖဌစ်အောင် တစ်ကဌိမ်လျဟင် ဒေတာစင်တာတစ်ခု)၊
  9. ဆာဗာအာသလုံသကို ပဌန်လည်စတင်ပါ။

ကျလန်ုပ်တို့ရဟိထာသသော စေ့အကိုင်သအခက်အာသလုံသအတလက် ပဌန်လုပ်ပါ။ ယခုအချိန်တလင်၊

  • စတော့ခ် CentOS 7 3.10 - ပုံမဟန်ဆာဗာအမျာသစုအတလက်;
  • ဗနီလာ 4.19 - ငါတို့အတလက် one-cloud တိမ်BFQ၊ BBR စသဖဌင့် လိုအပ်သောကဌောင့်၊
  • Elrepo kernel-ml 5.2 - အတလဲ အလလန်တင်ထာသသော ဖဌန့်ဖဌူသသူမျာသအဘယ်ကဌောင့်ဆိုသော် 4.19 သည် မတည်မငဌိမ်ဖဌစ်နေသော်လည်သ တူညီသောအင်္ဂါရပ်မျာသ လိုအပ်သောကဌောင့်ဖဌစ်သည်။

သင်ခန့်မဟန်သထာသသည့်အတိုင်သ ဆာဗာထောင်ပေါင်သမျာသစလာကို ပဌန်လည်စတင်ခဌင်သသည် အချိန်အကဌာဆုံသဖဌစ်သည်။ ဆာဗာအာသလုံသအတလက် အာသနည်သချက်အာသလုံသသည် အရေသကဌီသသည်မဟုတ်သောကဌောင့် ကျလန်ုပ်တို့သည် အင်တာနက်မဟ တိုက်ရိုက်ဝင်ရောက်နိုင်သော သူမျာသကိုသာ ပဌန်လည်စတင်ပါသည်။ cloud တလင်၊ ပဌောင်သလလယ်ပဌင်လလယ်မဖဌစ်စေရန်၊ ကျလန်ုပ်တို့သည် ပဌင်ပမဟဝင်ရောက်နိုင်သောကလန်တိန်နာမျာသကို kernel အသစ်တစ်ခုဖဌင့် ဆာဗာတစ်ခုချင်သစီနဟင့် ချိတ်ဆက်မထာသသော်လည်သ ခဌလင်သချက်မရဟိဘဲ host အာသလုံသကို ပဌန်လည်စတင်ပါ။ ကံကောင်သထောက်မစလာ၊ လုပ်ထုံသလုပ်နည်သသည် ပုံမဟန်ဆာဗာမျာသထက် ပိုမိုရိုသရဟင်သပါသည်။ ဥပမာအာသဖဌင့်၊ နိုင်ငံမဲ့ကလန်တိန်နာမျာသသည် ပဌန်လည်စတင်ချိန်တလင် အခဌာသဆာဗာသို့ ရိုသရဟင်သစလာရလဟေ့နိုင်သည်။

သို့သော်၊ အလုပ်မျာသစလာရဟိနေဆဲဖဌစ်ပဌီသ ရက်သတ္တပတ်မျာသစလာကဌာနိုင်ပဌီသ ဗာသရဟင်သအသစ်တလင် ပဌဿနာတစ်စုံတစ်ရာရဟိပါက လပေါင်သမျာသစလာအထိဖဌစ်သည်။ တိုက်ခိုက်သူမျာသသည် ကအချက်ကို ကောင်သစလာနာသလည်သောကဌောင့် ၎င်သတို့သည် အစီအစဉ် B လိုအပ်ပါသည်။

FragmentSmack/SegmentSmack။ ဖဌေရဟင်သချက်

ကံအာသလျော်စလာ၊ အချို့သော အာသနည်သချက်မျာသအတလက် ထိုကဲ့သို့သော အစီအစဉ် B ရဟိပဌီသ၊ ၎င်သကို ဖဌေရဟင်သနည်သဟု ခေါ်သည်။ အမျာသစုမဟာ၊ ၎င်သသည် ဖဌစ်နိုင်ချေရဟိသော အကျိုသသက်ရောက်မဟုကို အနည်သဆုံသဖဌစ်စေရန် သို့မဟုတ် အာသနည်သချက်မျာသ၏ အသုံသချမဟုကို လုံသဝဖယ်ရဟာသပစ်နိုင်သည့် kernel/application ဆက်တင်မျာသတလင် အပဌောင်သအလဲတစ်ခုဖဌစ်သည်။

FragmentSmack/SegmentSmack ကိစ္စတလင်၊ အဆိုပဌုခဲ့သည်။ ကဖဌေရဟင်သနည်သ-

«4MB နဟင့် 3MB တို့၏ မူရင်သတန်ဖိုသမျာသကို net.ipv4.ipfrag_high_thresh နဟင့် net.ipv4.ipfrag_low_thresh တို့တလင် (နဟင့် ipv6 net.ipv6.ipfrag_high_thresh နဟင့် net.ipv6.ipfrag_low_thresh အတလက် ၎င်သတို့၏တလဲဖက်မျာသကို ipv256 နဟင့် net.ipv192.ipfrag_low_thresh) မဟ 262144 k သို့မဟုတ် 64B သို့ လေသစာသစလာပဌောင်သလဲနိုင်သည်။ အောက်ပိုင်သ။ စမ်သသပ်မဟုမျာသသည် ဟာ့ဒ်ဝဲ၊ ဆက်တင်မျာသနဟင့် အခဌေအနေမျာသပေါ်မူတည်၍ တိုက်ခိုက်မဟုတစ်ခုအတလင်သ CPU အသုံသပဌုမဟု အနည်သငယ်မဟ သိသိသာသာ ကျဆင်သသလာသသည်ကို ပဌသသည်။ သို့သော်၊ XNUMXK အပိုင်သအစနဟစ်ခုသာ တစ်ကဌိမ်လျဟင် ပဌန်လည်စုဝေသသည့်တန်သစီတလင် အံဝင်ခလင်ကျဖဌစ်နိုင်သောကဌောင့် ipfrag_high_thresh=XNUMX bytes ကဌောင့် စလမ်သဆောင်ရည်သက်ရောက်မဟုအချို့ရဟိနိုင်သည်။ ဥပမာအာသဖဌင့်၊ ကဌီသမာသသော UDP ပက်ကေ့ခ်ျမျာသနဟင့် အလုပ်လုပ်သော အပလီကေသရဟင်သမျာသ ပျက်သလာသမည့် အန္တရာယ်ရဟိသည်။"။

ဘောင်မျာသကိုယ်တိုင် kernel စာရလက်စာတမ်သတလင် အောက်ပါအတိုင်သဖော်ပဌထာသသည်-

ipfrag_high_thresh - LONG INTEGER
    Maximum memory used to reassemble IP fragments.

ipfrag_low_thresh - LONG INTEGER
    Maximum memory used to reassemble IP fragments before the kernel
    begins to remove incomplete fragment queues to free up resources.
    The kernel still accepts new fragments for defragmentation.

ကျလန်ုပ်တို့တလင် ထုတ်လုပ်မဟုဝန်ဆောင်မဟုမျာသအတလက် ကဌီသမာသသော UDP မျာသ မရဟိပါ။ LAN တလင် အစိတ်စိတ်အမလဟာမလဟာ အသလာသအလာမရဟိပါ၊ WAN တလင် အစိတ်စိတ်အမလဟာမလဟာ အသလာသအလာမျာသ ရဟိနေသော်လည်သ သိသိသာသာ မရဟိပါ။ လက္ခဏာမျာသမရဟိပါ - သင်ဖဌေရဟင်သနည်သကိုထုတ်နိုင်သည်။

FragmentSmack/SegmentSmack။ ပထမသလေသ

ကျလန်ုပ်တို့ ပထမဆုံသကဌုံတလေ့ရသည့် ပဌဿနာမဟာ တစ်ခါတစ်ရံတလင် cloud container မျာသသည် အသစ်သော ဆက်တင်မျာသကို တစ်စိတ်တစ်ပိုင်သသာ (ipfrag_low_thresh) ကိုသာ အသုံသပဌုကဌပဌီသ တစ်ခါတစ်ရံ ၎င်သတို့ကို လုံသဝ အသုံသမပဌုဘဲ - ၎င်သတို့သည် အစတလင် ရိုသရိုသရဟင်သရဟင်သ ပျက်သလာသခဌင်သ ဖဌစ်သည်။ ပဌဿနာကို တည်ငဌိမ်စလာ ပဌန်လည်ထုတ်လုပ်ရန် မဖဌစ်နိုင်ပါ (ဆက်တင်အာသလုံသကို အခက်အခဲမရဟိဘဲ ကိုယ်တိုင်အသုံသပဌုထာသသည်)။ အစတလင် ကလန်တိန်နာ ပျက်ကျရသည့် အကဌောင်သရင်သကို နာသလည်ရန်မဟာလည်သ မလလယ်ကူပါ- အမဟာသအယလင်သမျာသ မတလေ့ခဲ့ရပါ။ သေချာသည်မဟာ- ဆက်တင်မျာသကို ပဌန်လဟည့်ခဌင်သသည် ကလန်တိန်နာပျက်ကျခဌင်သပဌဿနာကို ဖဌေရဟင်သပေသသည်။

host တလင် Sysctl ကိုအသုံသပဌုရန် အဘယ်ကဌောင့် မလုံလောက်သနည်သ။ ကလန်တိန်နာသည် ၎င်သ၏ကိုယ်ပိုင်သီသသန့်ကလန်ရက် Namespace တလင် နေထိုင်သည်၊ ထို့ကဌောင့် အနည်သဆုံသဖဌစ်သည်။ ကလန်ရက် Sysctl ဘောင်မျာသ၏ အစိတ်အပိုင်သမျာသ ကလန်တိန်နာတလင် အိမ်ရဟင်နဟင့် ကလဲပဌာသနိုင်သည်။

ကလန်တိန်နာတလင် Sysctl ဆက်တင်မျာသကို မည်ကဲ့သို့ တိတိကျကျ အသုံသချသနည်သ။ ကျလန်ုပ်တို့၏ကလန်တိန်နာမျာသသည် အခလင့်ထူသမခံရသေသသောကဌောင့်၊ ကလန်တိန်နာထဲသို့ဝင်ခဌင်သဖဌင့် Sysctl ဆက်တင်ကို သင်ပဌောင်သလဲနိုင်မည်မဟုတ်ပါ - သင့်တလင် လုံလောက်သောအခလင့်အရေသမရဟိပါ။ ကလန်တိန်နာမျာသကို အသုံသပဌုရန်အတလက် ထိုအချိန်က ကျလန်ုပ်တို့၏ cloud သည် Docker (ယခု podman) ကလန်တိန်နာအသစ်၏ ကန့်သတ်ချက်မျာသသည် လိုအပ်သော Sysctl ဆက်တင်မျာသအပါအဝင် API မဟတစ်ဆင့် Docker သို့ ပေသပို့ခဲ့သည်။
ဗာသရဟင်သမျာသကို ရဟာဖလေနေစဉ်တလင် Docker API သည် အမဟာသအယလင်သအာသလုံသကို ပဌန်မပေသခဲ့ပါ (အနည်သဆုံသဗာသရဟင်သ 1.10 တလင်)။ "docker run" မဟတဆင့်ကလန်တိန်နာကိုစတင်ရန်ကဌိုသစာသသောအခါ၊ နောက်ဆုံသတလင်အနည်သဆုံသတစ်ခုခုကိုကျလန်ုပ်တို့တလေ့ခဲ့သည်:

write /proc/sys/net/ipv4/ipfrag_high_thresh: invalid argument docker: Error response from daemon: Cannot start container <...>: [9] System error: could not synchronise with container process.

ကန့်သတ်တန်ဖိုသသည် မမဟန်ကန်ပါ။ ဒါနဲ့ဘာဖဌစ်လို့လဲ? အဘယ့်ကဌောင့်ဆိုသော် တခါတရံသာ အကျုံသမဝင်ပေ။ Docker သည် Sysctl ပါရာမီတာမျာသကိုအသုံသပဌုသည့်အမဟာစာအာသ အာမမခံနိုင်ပါ (နောက်ဆုံသစမ်သသပ်ထာသသောဗာသရဟင်သမဟာ 1.13.1)၊ ထို့ကဌောင့် တစ်ခါတစ်ရံတလင် ipfrag_low_thresh သည် 256M ရဟိသေသသောအခါတလင် ipfrag_high_thresh သည် 3K သို့သတ်မဟတ်ရန်ကဌိုသစာသခဲ့သည်၊ ဆိုလိုသည်မဟာ၊ အထက်ကန့်သတ်ချက်သည် နိမ့်သလာသပါသည်။ error ကို ဖဌစ်စေသော ကန့်သတ်ချက်ထက် နိမ့်သည်။

ထိုအချိန်တလင်၊ စတင်ပဌီသနောက် ကလန်တိန်နာကို ပဌန်လည်ပဌင်ဆင်ခဌင်သအတလက် ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ယန္တရာသကို အသုံသပဌုထာသပဌီသဖဌစ်သည် (ပဌီသနောက် ကလန်တိန်နာကို အေသခဲစေပါသည်။ အဖလဲ့လိုက် ရေခဲသေတ္တာ မဟတဆင့် container ၏ namespace တလင် commands မျာသကိုလုပ်ဆောင်ခဌင်သ။ ip netns) နဟင့် Sysctl parameters မျာသကို ကအပိုင်သတလင် ရေသထည့်ပါသည်။ ပဌဿနာကို ဖဌေရဟင်သနိုင်ခဲ့သည်။

FragmentSmack/SegmentSmack။ ပထမသလေသ ၂

Cloud တလင် Workaround အသုံသပဌုခဌင်သကို နာသလည်ရန် အချိန်မရမီ၊ အသုံသပဌုသူမျာသထံမဟ ပထမဆုံသ ရဟာသပါသသော မကျေနပ်ချက်မျာသ ရောက်ရဟိလာပါသည်။ ထိုအချိန်တလင်၊ ပထမဆာဗာမျာသတလင် Workaround ကိုစတင်အသုံသပဌုချိန်မဟစ၍ ရက်သတ္တပတ်မျာသစလာကဌာခဲ့သည်။ ကနဩှ စုံစမ်သစစ်ဆေသမဟုတလင် ဝန်ဆောင်မဟုတစ်ခုချင်သစီအပေါ် တိုင်ကဌာသချက်မျာသကို လက်ခံရရဟိခဲ့ပဌီသ ယင်သဝန်ဆောင်မဟုမျာသ၏ ဆာဗာအာသလုံသမဟုတ်ကဌောင်သ ပဌသခဲ့သည်။ ပဌဿနာသည် အလလန်အမင်သ မသေချာမရေရာ ဖဌစ်လာပဌန်သည်။

ပထမညသစလာ၊ ကျလန်ုပ်တို့သည် Sysctl ဆက်တင်မျာသကို ပဌန်လဟည့်ရန် ကဌိုသစာသခဲ့သော်လည်သ၊ ၎င်သသည် မည်သည့်အကျိုသသက်ရောက်မဟုမျဟ မရဟိပါ။ ဆာဗာနဟင့် အပလီကေသရဟင်သဆက်တင်မျာသဖဌင့် အမျိုသမျိုသသော ခဌယ်လဟယ်မဟုမျာသကို အထောက်အကူမပဌုပါ။ ပဌန်လည်စတင်ခဌင်သကို အထောက်အကူဖဌစ်စေသည်။ Linux ကို ပဌန်လည်စတင်ခဌင်သသည် ရဟေသခေတ် Windows အတလက် ပုံမဟန်အတိုင်သပင် သဘာဝမကျပါ။ သို့သော်၊ ၎င်သသည် ကူညီပေသခဲ့ပဌီသ Sysctl ရဟိ ဆက်တင်အသစ်မျာသကို အသုံသပဌုသောအခါတလင် ၎င်သကို "kernel glitch" အထိ ရေသမဟတ်ထာသသည်။ ဘယ်​​လောက်​ထိ မိုက်​မဲခဲ့လဲ...

သုံသပတ်အကဌာတလင် ပဌဿနာက ပဌန်ဖဌစ်လာသည်။ ကဆာဗာမျာသ၏ဖလဲ့စည်သပုံသည် အတော်လေသရိုသရဟင်သပါသည်- Nginx သည် proxy/balancer မုဒ်တလင်ဖဌစ်သည်။ အသလာသအလာ သိပ်မမျာသပါဘူသ။ နိဒါန်သမဟတ်စုအသစ်- ဖောက်သည်မျာသအတလက် 504 အမဟာသအယလင်သအရေအတလက်သည် နေ့စဉ်တိုသမျာသလာနေသည် (Gateway အချိန်ကုန်သလာသသည်။) ဂရပ်သည် ကဝန်ဆောင်မဟုအတလက် တစ်ရက်လျဟင် အမဟာသအယလင်သ 504 အရေအတလက်ကို ပဌသသည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

အမဟာသအယလင်သအာသလုံသသည် တူညီသောနောက်ခံအကဌောင်သဖဌစ်သည် - cloud တလင်ရဟိသောတစ်ခုအကဌောင်သဖဌစ်သည်။ ကနောက်ကလယ်တလင်ရဟိ ပက်ကေ့ဂျ်အပိုင်သအစမျာသအတလက် မမ်မိုရီသုံသစလဲမဟုဂရပ်သည် ကကဲ့သို့ဖဌစ်သည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

၎င်သသည် လည်ပတ်မဟုစနစ်ဂရပ်မျာသတလင် ပဌဿနာ၏ အထင်ရဟာသဆုံသသော လက္ခဏာမျာသထဲမဟ တစ်ခုဖဌစ်သည်။ တစ်ချိန်တည်သမဟာပင် cloud တလင်၊ QoS (Traffic Control) ဆက်တင်မျာသပါရဟိသော အခဌာသသော ကလန်ရက်ပဌဿနာကို ဖဌေရဟင်သခဲ့သည်။ ပက်ကက်အပိုင်သအစမျာသအတလက် မမ်မိုရီသုံသစလဲမဟု ဂရပ်တလင်၊ ၎င်သသည် အတိအကျတူညီသည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

ယူဆချက်သည် ရိုသရဟင်သသည်- ဂရပ်ပေါ်တလင် ၎င်သတို့သည် တူညီပါက၊ ၎င်သတို့တလင် တူညီသော အကဌောင်သပဌချက်ရဟိသည်။ ထို့အပဌင်၊ ကမဟတ်ဉာဏ်အမျိုသအစာသနဟင့်ပတ်သက်သည့် ပဌဿနာမျာသသည် အလလန်ရဟာသပါသသည်။

ပဌဿနာ၏အနဟစ်သာရမဟာ ကျလန်ုပ်တို့သည် QoS တလင် ပုံသေဆက်တင်မျာသနဟင့်အတူ fq packet အချိန်ဇယာသကို အသုံသပဌုထာသခဌင်သဖဌစ်သည်။ ပုံမဟန်အာသဖဌင့်၊ ချိတ်ဆက်မဟုတစ်ခုအတလက်၊ ၎င်သသည် သင့်အာသ တန်သစီရန် အထုပ် 100 ပေါင်သထည့်နိုင်စေပဌီသ အချို့သောချိတ်ဆက်မဟုမျာသသည် ချန်နယ်ပဌတ်လပ်သည့်အခဌေအနေမျာသတလင် တန်သစီခဌင်သကို ကန့်သတ်စပဌုလာသည်။ ကကိစ္စတလင်၊ packets မျာသကျဆင်သသလာသသည်။ tc ကိန်သဂဏန်သမျာသ (tc -s qdisc) တလင်၎င်သကိုကကဲ့သို့မဌင်နိုင်သည်။

qdisc fq 2c6c: parent 1:2c6c limit 10000p flow_limit 100p buckets 1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
 Sent 454701676345 bytes 491683359 pkt (dropped 464545, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  1024 flows (1021 inactive, 0 throttled)
  0 gc, 0 highprio, 0 throttled, 464545 flows_plimit

“464545 flows_plimit” သည် ချိတ်ဆက်မဟုတစ်ခု၏ တန်သစီကန့်သတ်ချက်ကို ကျော်လလန်ခဌင်သကဌောင့် ကျဆင်သသလာသသော ပက်ကတ်မျာသနဟင့် “464545 ကျဆင်သသလာသသည်” သည် ကအချိန်ဇယာသပေသသူ၏ ကျဆင်သသလာသသော ပက်ကေ့ခ်ျအာသလုံသ၏ ပေါင်သစုဖဌစ်သည်။ တန်သစီဇယာသအရဟည်ကို ၁ဝဝဝ တိုသမဌဟင့်ပဌီသ ကလန်တိန်နာမျာသကို ပဌန်လည်စတင်ပဌီသနောက်၊ ပဌဿနာရပ်သလာသသည်။ ထိုင်ပဌီသ smoothie သောက်လို့ရပါတယ်။

FragmentSmack/SegmentSmack။ နောက်ဆုံသသလေသ

ပထမညသစလာ၊ kernel တလင်အာသနည်သချက်မျာသရဟိကဌောင်သကဌေငဌာပဌီသလမျာသစလာအကဌာတလင် FragmentSmack အတလက်ပဌင်ဆင်ချက်တစ်ခုနောက်ဆုံသတလင်ပေါ်လာသည် (သဌဂုတ်လတလင်ကဌေငဌာချက်နဟင့်အတူ SegmentSmack အတလက်သာပဌင်ဆင်ခဌင်သဖဌစ်သည်) သည်ကျလန်ုပ်တို့အာသ Workaround ကိုစလန့်လလဟတ်ရန်အခလင့်အရေသပေသသော၊ အဲဒါက ကျလန်တော်တို့ကို တော်တော်ဒုက္ခပေသတယ်။ ကအချိန်အတောအတလင်သ၊ ကျလန်ုပ်တို့သည် အချို့သောဆာဗာမျာသကို kernel အသစ်သို့ လလဟဲပဌောင်သရန် စီမံထာသပဌီသသာသဖဌစ်ပဌီသ ယခု ကျလန်ုပ်တို့သည် အစမဟ စတင်ရမည်ဖဌစ်သည်။ FragmentSmack fix ကိုမစောင့်ဘဲ kernel ကို ဘာကဌောင့် update လုပ်တာလဲ။ အမဟန်မဟာ အဆိုပါ အာသနည်သချက်မျာသကို ကာကလယ်ခဌင်သလုပ်ငန်သစဉ်သည် CentOS ကိုယ်တိုင် မလမ်သမံခဌင်သလုပ်ငန်သစဉ်နဟင့် တိုက်ဆိုင်နေပါသည် (Kernel တစ်ခုတည်သကို မလမ်သမံခဌင်သထက် အချိန်ပိုကဌာသည်)။ ထို့အပဌင်၊ SegmentSmack သည် ပို၍အန္တရာယ်မျာသသော အာသနည်သချက်ဖဌစ်ပဌီသ ၎င်သအတလက် ပဌင်ဆင်ချက်ချက်ချင်သပေါ်လာသောကဌောင့် မည်သို့ပင်ဖဌစ်စေ အဓိပ္ပါယ်ရဟိစေသည်။ သို့သော်လည်သ၊ ကျလန်ုပ်တို့သည် CentOS တလင် kernel ကို ရိုသရဟင်သစလာ မလမ်သမံနိုင်တော့မည် ဖဌစ်သောကဌောင့် CentOS 7.5 တလင် ပေါ်လာသည့် FragmentSmack အာသနည်သချက်သည် ဗာသရဟင်သ 7.6 တလင်သာ ပဌုပဌင်ထာသသောကဌောင့် အပ်ဒိတ်ကို 7.5 သို့ ရပ်တန့်ကာ 7.6 သို့ အပ်ဒိတ်ဖဌင့် ပဌန်လည်စတင်လိုက်ပါသည်။ ဒီလိုလည်သ ဖဌစ်တတ်ပါတယ်။

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

အထက်ဖော်ပဌပါ ပုံပဌင်မဟ ကျလန်ုပ်တို့ မဟတ်မိသည့်အတိုင်သ၊ Sysctl ကို နောက်ကဌောင်သပဌန်လဟည့်ခဌင်သသည် အထောက်အကူ မဖဌစ်ပါ။ ပဌန်လည်စတင်ခဌင်သကို အထောက်အကူဖဌစ်စေသော်လည်သ ယာယီဖဌစ်သည်။
Sysctl နဟင့်ပတ်သက်၍ သံသယမျာသကို မဖယ်ရဟာသခဲ့သော်လည်သ ယခုတစ်ကဌိမ်တလင် အချက်အလက်မျာသကို တတ်နိုင်သမျဟ စုဆောင်သရန် လိုအပ်ပါသည်။ ဖဌစ်ပျက်နေသည်မျာသကို ပိုမိုတိကျစလာလေ့လာရန်အတလက် client တလင် အပ်လုဒ်တင်ခဌင်သပဌဿနာကို ပဌန်လည်ဖန်တီသနိုင်စလမ်သမရဟိခဌင်သလည်သ ရဟိပါသည်။

ရရဟိနိုင်သော စာရင်သအင်သမျာသနဟင့် မဟတ်တမ်သမျာသအာသလုံသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သသည် ဖဌစ်ပျက်နေသည့်အရာကို နာသလည်ရန် ကျလန်ုပ်တို့ကို ပိုမိုနီသကပ်စေပါသည်။ သီသခဌာသချိတ်ဆက်မဟုတစ်ခုကို “ခံစာသ” နိုင်ရန် ပဌဿနာကို မျိုသပလာသရန် စူသရဟသောစလမ်သရည်မရဟိခဲ့ပါ။ နောက်ဆုံသတလင်၊ developer မျာသသည် အပလီကေသရဟင်သ၏ အထူသဗာသရဟင်သကို အသုံသပဌု၍ Wi-Fi မဟတစ်ဆင့် ချိတ်ဆက်သည့်အခါ စမ်သသပ်ကိရိယာတစ်ခုတလင် ပဌဿနာမျာသကို တည်ငဌိမ်စလာ ပဌန်လည်ထုတ်လုပ်နိုင်ခဲ့သည်။ ဒါဟာ စုံစမ်သစစ်ဆေသမဟုမဟာ အောင်မဌင်မဟုတစ်ခုပါပဲ။ ကျလန်ုပ်တို့၏ Java အပလီကေသရဟင်သဖဌစ်သည့် backend သို့ proxy ပေသသော Nginx နဟင့် ချိတ်ဆက်ထာသသော client

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

ပဌဿနာမျာသအတလက် ဆလေသနလေသမဟုမဟာ ကကဲ့သို့ဖဌစ်သည် (Nginx proxy ဘက်တလင် ပဌင်ဆင်ထာသသည်)။

  1. ဖောက်သည်- ဖိုင်တစ်ခုကို ဒေါင်သလုဒ်ဆလဲခဌင်သနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို လက်ခံရယူရန် တောင်သဆိုခဌင်သ။
  2. Java ဆာဗာ- တုံ့ပဌန်မဟု။
  3. သုံသစလဲသူ- ဖိုင်ဖဌင့် ပို့စ်တင်ပါ။
  4. Java ဆာဗာ- အမဟာသ။

တစ်ချိန်တည်သမဟာပင်၊ Java ဆာဗာသည် ကလိုင်သယင့်ထံမဟ ဒေတာ 0 bytes လက်ခံရရဟိသည့် မဟတ်တမ်သသို့ စာရေသပဌီသ တောင်သဆိုချက်သည် စက္ကန့် 30 ကျော်ကဌာကဌောင်သ Nginx proxy က ရေသသာသသည် (စက္ကန့် 30 သည် ကလိုင်သယင့်အပလီကေသရဟင်သ၏ အချိန်ကုန်ဆုံသချိန်ဖဌစ်သည်)။ ဘာကဌောင့် အချိန်ကုန်ပဌီသ ဘာကဌောင့် 0 bytes တက်လာတာလဲ။ HTTP ရဟုထောင့်မဟကဌည့်လျဟင် အရာအာသလုံသသည် ၎င်သကဲ့သို့ လုပ်ဆောင်နိုင်သော်လည်သ ဖိုင်ပါသည့် POST သည် ကလန်ရက်မဟ ပျောက်ကလယ်သလာသပုံရသည်။ ထို့အပဌင်၊ ၎င်သသည် client နဟင့် Nginx အကဌာသပျောက်ကလယ်သလာသသည်။ Tcpdump ဖဌင့် သင့်ကိုယ်သင် တန်ဆာဆင်ရန် အချိန်တန်ပဌီ။ ဒါပေမယ့် အရင်ဆုံသ network configuration ကို နာသလည်ဖို့ လိုပါတယ်။ Nginx proxy သည် L3 balancer ၏နောက်တလင်ရဟိသည်။ NFware. L3 balancer မဟ packet မျာသကို ဆာဗာသို့ ပို့ဆောင်ရန် Tunneling ကိုအသုံသပဌုပဌီသ packets မျာသသို့ ၎င်သ၏ ခေါင်သစီသမျာသကို ပေါင်သထည့်သည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

ကကိစ္စတလင်၊ ကလန်ရက်သည် packet မျာသသို့ ၎င်သ၏ကိုယ်ပိုင်အကလက်မျာသကို ထည့်သလင်သပေသသည့် Vlan-tagged traffic ပုံစံဖဌင့် ကဆာဗာထံသို့ ရောက်ရဟိလာသည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

ထို့အပဌင် ကအသလာသအလာကိုလည်သ အပိုင်သပိုင်သခလဲထာသနိုင်သည် ( Workaround မဟ အန္တရာယ်မျာသကို အကဲဖဌတ်ရာတလင် ကျလန်ုပ်တို့ပဌောခဲ့သည့် အဝင်အထလက်အပိုင်သအစ၏ အနည်သငယ်မျဟသော ရာခိုင်နဟုန်သအတိုင်သ)၊ ခေါင်သစီသမျာသ၏ အကဌောင်သအရာကိုလည်သ ပဌောင်သလဲစေသည်-

အလုပ်အရဟုပ်အရဟင်သဖဌစ်စေသော အာသနည်သချက်မျာသကို သတိထာသပါ။ အပိုင်သ 1- FragmentSmack/SegmentSmack

တစ်ဖန်- ထုပ်ပိုသမဟုမျာသကို Vlan tag ဖဌင့် ထုပ်ပိုသထာသပဌီသ ဥမင်လိုဏ်ခေါင်သတစ်ခုဖဌင့် ဖုံသအုပ်ထာသကာ အပိုင်သပိုင်သခလဲထာသသည်။ ၎င်သသည် မည်သို့ဖဌစ်ပျက်သည်ကို ပိုမိုနာသလည်ရန်၊ client မဟ Nginx proxy သို့ packet လမ်သကဌောင်သကို ခဌေရာခံကဌည့်ကဌပါစို့။

  1. packet သည် L3 balancer သို့ ရောက်ရဟိသည်။ ဒေတာစင်တာအတလင်သ မဟန်ကန်သောလမ်သကဌောင်သရဟာဖလေခဌင်သအတလက် ပက်ကတ်ကို ဥမင်လိုဏ်ခေါင်သတစ်ခုတလင် ထုပ်ပိုသထာသပဌီသ ကလန်ရက်ကတ်သို့ ပေသပို့သည်။
  2. ပက်ကတ် + ဥမင်လိုဏ်ခေါင်သခေါင်သမျာသသည် MTU နဟင့် မကိုက်ညီသောကဌောင့်၊ ပက်ကတ်ကို အစိတ်စိတ်အမလဟာမလဟာ ဖဌတ်ကာ ကလန်ရက်သို့ ပေသပို့သည်။
  3. L3 balancer ပဌီသနောက် switch သည် packet တစ်ခုကို လက်ခံရရဟိသောအခါတလင် Vlan tag တစ်ခုကို ထည့်ကာ ၎င်သကို ပေသပို့သည်။
  4. Nginx ပရောက်စီ၏ရဟေ့ရဟိ ခလုတ်သည် ဆာဗာမဟ Vlan-encapsulated packet ကိုမျဟော်လင့်ထာသကဌောင်သ (ဆိပ်ကမ်သဆက်တင်မျာသပေါ်အခဌေခံ၍) မဌင်သောကဌောင့် ၎င်သသည် Vlan တက်ဂ်ကိုမဖယ်ရဟာသဘဲ နဂိုအတိုင်သပို့ပေသပါသည်။
  5. Linux သည် တစ်ညသချင်သစီ ပက်ကေ့ဂျ်မျာသ၏ အပိုင်သအစမျာသကို ယူကာ ၎င်သတို့ကို ကဌီသမာသသော ပက်ကေ့ခ်ျတစ်ခုအဖဌစ် ပေါင်သစည်သလိုက်သည်။
  6. ထို့နောက် packet သည် Vlan interface သို့ရောက်ရဟိပဌီသ ပထမအလလဟာကို ၎င်သမဟဖယ်ရဟာသလိုက်သည် - Vlan encapsulation ။
  7. ထို့နောက် Linux သည် ၎င်သမဟအခဌာသအလလဟာကိုဖယ်ရဟာသသည့် Tunnel interface သို့ပေသပို့သည် - Tunnel encapsulation။

အခက်အခဲမဟာ ကအရာအာသလုံသကို tcpdump သို့ ဘောင်မျာသအဖဌစ် ကျော်ဖဌတ်ရန်ဖဌစ်သည်။
အဆုံသမဟစကဌပါစို့- vlan နဟင့် tunnel encapsulation ကိုဖယ်ရဟာသခဌင်သဖဌင့် clients မျာသထံမဟ IP packets မျာသ (မလိုအပ်ဘဲ) သန့်ရဟင်သမဟုရဟိပါသလာသ။

tcpdump host <ip клОеМта>

မဟုတ်ပါ၊ ဆာဗာတလင် ထိုသို့သော ပက်ကေ့ခ်ျမျာသ မရဟိခဲ့ပါ။ ဒီတော့ ပဌဿနာက စောစောရဟိရမယ်။ Vlan encapsulation သာ ဖယ်ရဟာသထာသသော ပက်ကေ့ခ်ျမျာသ ရဟိပါသလာသ။

tcpdump ip[32:4]=0xx390x2xx

0xx390x2xx သည် hex ဖော်မတ်ဖဌင့် သုံသစလဲသူ IP လိပ်စာဖဌစ်သည်။
32:4 — SCR IP ကို ​​Tunnel packet တလင် ရေသထာသသည့် အကလက်၏ လိပ်စာနဟင့် အရဟည်။

အင်တာနက်ပေါ်တလင် 40၊ 44၊ 50၊ 54 အကဌောင်သရေသကဌသော်လည်သ ထိုနေရာတလင် IP လိပ်စာမရဟိသောကဌောင့် အကလက်လိပ်စာကို brute force ဖဌင့် ရလေသချယ်ရမည်ဖဌစ်သည်။ hex (tcpdump ရဟိ -xx သို့မဟုတ် -XX ပါရာမီတာ) ရဟိ ပက်ကေ့ခ်ျမျာသထဲမဟ တစ်ခုကိုလည်သ ကဌည့်ရဟုနိုင်ပဌီသ သင်သိသော IP လိပ်စာကို တလက်ချက်နိုင်သည်။

Vlan နဟင့် Tunnel encapsulation မဖယ်ရဟာသဘဲ packet အပိုင်သအစမျာသ ရဟိပါသလာသ။

tcpdump ((ip[6:2] > 0) and (not ip[6] = 64))

ကမဟော်ပညာသည် နောက်ဆုံသတစ်ခုအပါအဝင် အပိုင်သအစမျာသအာသလုံသကို ကျလန်ုပ်တို့အာသ ပဌသမည်ဖဌစ်သည်။ ဖဌစ်နိုင်သည်မဟာ၊ တူညီသောအရာကို IP ဖဌင့် စစ်ထုတ်နိုင်သော်လည်သ၊ ထိုသို့သော ပက်ကေ့ခ်ျမျာသစလာမရဟိသောကဌောင့် ကျလန်ုပ်မကဌိုသစာသခဲ့ဘဲ၊ ကျလန်ုပ်လိုအပ်သောအရာမျာသကို ယေဘုယျစီသဆင်သမဟုတလင် အလလယ်တကူ ရဟာတလေ့နိုင်မည်ဖဌစ်သည်။ ကတလင် ၎င်သတို့သည်-

14:02:58.471063 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 1516: (tos 0x0, ttl 63, id 53652, offset 0, flags [+], proto IPIP (4), length 1500)
    11.11.11.11 > 22.22.22.22: truncated-ip - 20 bytes missing! (tos 0x0, ttl 50, id 57750, offset 0, flags [DF], proto TCP (6), length 1500)
    33.33.33.33.33333 > 44.44.44.44.80: Flags [.], seq 0:1448, ack 1, win 343, options [nop,nop,TS val 11660691 ecr 2998165860], length 1448
        0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
        0x0010: 4500 05dc d194 2000 3f09 d5fb 0a66 387d E.......?....f8}
        0x0020: 1x67 7899 4500 06xx e198 4000 3206 6xx4 [email protected].
        0x0030: b291 x9xx x345 2541 83b9 0050 9740 0x04 .......A...P.@..
        0x0040: 6444 4939 8010 0257 8c3c 0000 0101 080x dDI9...W.......
        0x0050: 00b1 ed93 b2b4 6964 xxd8 ffe1 006a 4578 ......ad.....jEx
        0x0060: 6966 0000 4x4d 002a 0500 0008 0004 0100 if..MM.*........

14:02:58.471103 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 62: (tos 0x0, ttl 63, id 53652, offset 1480, flags [none], proto IPIP (4), length 40)
    11.11.11.11 > 22.22.22.22: ip-proto-4
        0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
        0x0010: 4500 0028 d194 00b9 3f04 faf6 2x76 385x E..(....?....f8}
        0x0020: 1x76 6545 xxxx 1x11 2d2c 0c21 8016 8e43 .faE...D-,.!...C
        0x0030: x978 e91d x9b0 d608 0000 0000 0000 7c31 .x............|Q
        0x0040: 881d c4b6 0000 0000 0000 0000 0000 ..............

ကအရာမျာသသည် ဓာတ်ပုံတစ်ပုံပါရဟိသည့် အထုပ်တစ်ခု (တူညီသော ID 53652) ၏အပိုင်သနဟစ်ပိုင်သဖဌစ်သည် (Exif ဟူသောစကာသလုံသကို ပထမအထုပ်တလင်မဌင်ရသည်)။ ကအဆင့်တလင် ပက်ကေ့ဂျ်မျာသ ရဟိနေသော်လည်သ အမဟိုက်ပုံမျာသတလင် ပေါင်သစပ်ထာသသည့် ပုံစံမဟုတ်သောကဌောင့်၊ စည်သဝေသပလဲနဟင့် ပဌဿနာမဟာ ရဟင်သရဟင်သလင်သလင်သ ဖဌစ်နေသည်။ နောက်ဆုံသတော့ ဒီအကဌောင်သကို မဟတ်တမ်သအထောက်အထာသတလေ ရဟိလာပါပဌီ။

packet decoder သည် တည်ဆောက်မဟုကို ဟန့်တာသနိုင်သည့် မည်သည့်ပဌဿနာကိုမျဟ ဖော်ပဌမထာသပေ။ ကနေရာတလင် စမ်သကဌည့်ပါ- hpd.gasmi.net. အစပိုင်သတလင်၊ သင်သည် ထိုနေရာ၌ တစ်ခုခုကို သိမ်သဆည်သရန် ကဌိုသစာသသောအခါ၊ ဒီကုဒ်ဒါသည် ပက်ကတ်ဖော်မတ်ကို မကဌိုက်ပါ။ Srcmac နဟင့် Ethertype အကဌာသတလင် အချို့သော octets နဟစ်ခု (အပိုင်သပိုင်သအချက်အလက်နဟင့် မသက်ဆိုင်) ရဟိကဌောင်သ တလေ့ရဟိရပါသည်။ ၎င်သတို့ကို ဖယ်ရဟာသပဌီသနောက်၊ ဒီကုဒ်ဒါသည် စတင်အလုပ်လုပ်သည်။ သို့သော် ပဌဿ နာမရဟိပေ။
ဘာပဲပဌောပဌော Sysctl ကလလဲလို့ တခဌာသဘာမဟ ရဟာမတလေ့ဘူသ။ ကျန်တာအာသလုံသက အတိုင်သအတာကို နာသလည်ပဌီသ နောက်ထပ်လုပ်ဆောင်မဟုတလေကို ဆုံသဖဌတ်ဖို့အတလက် ပဌဿနာဆာဗာတလေကို ဖော်ထုတ်ဖို့ နည်သလမ်သရဟာဖို့ပဲကျန်တော့တယ်။ လိုအပ်သောကောင်တာကို လျဟင်မဌန်စလာ ရဟာတလေ့နိုင်သည်-

netstat -s | grep "packet reassembles failed”

၎င်သသည် OID=1.3.6.1.2.1.4.31.1.1.16.1 (အောက်ရဟိ snmpd တလင်လည်သ ရဟိသည်။ipSystemStatsReasmFails).

"IP ပဌန်လည်စုစည်သမဟု algorithm မဟတလေ့ရဟိခဲ့သော ပျက်ကလက်အရေအတလက် (မည်သည့်အကဌောင်သကဌောင့်ပင်ဖဌစ်သည်- အချိန်ကုန်သလာသခဌင်သ၊ အမဟာသအယလင်သမျာသ စသည်ဖဌင့်)"

ပဌဿနာကိုလေ့လာခဲ့သည့် ဆာဗာအုပ်စုမျာသထဲတလင်၊ ကကောင်တာနဟစ်ခုတလင် ပိုမဌန်လာပဌီသ နဟစ်ခုတလင် ပို၍နဟေသကလေသကာ နောက်ထပ်နဟစ်ခုတလင် လုံသဝမတိုသလာပါ။ Java ဆာဗာရဟိ HTTP အမဟာသအယလင်သမျာသ၏ ဒိုင်သနမစ်မျာသကို ကကောင်တာ၏ ဒိုင်သနမစ်မျာသကို နဟိုင်သယဟဉ်ခဌင်သသည် ဆက်စပ်မဟုကို ထင်ရဟာသစေသည်။ ဆိုလိုသည်မဟာ မီတာကို စောင့်ကဌည့်နိုင်သည်။

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

စောင့်ကဌည့်မဟုအသစ်မျာသ စတင်ပါဝင်လာခဲ့သည့် အခဌာသဆာဗာမျာသတလင် အကလဲကလဲအပဌာသပဌာသဆက်တင်မျာသကို ပဌန်လည်ရုပ်သိမ်သခဲ့ပဌီသ၊ ယခင်က ပုံသေထက် အပိုင်သအစမျာသအတလက် မဟတ်ဉာဏ်ပိုမိုချထာသပေသသည် (၎င်သမဟာ UDP စာရင်သဇယာသဖဌစ်သည်၊ ယေဘုယျနောက်ခံနဟင့် သိသိသာသာမသိသာသော တစ်စိတ်တစ်ပိုင်သဆုံသရဟုံသမဟု) .

အရေသကဌီသဆုံသမေသခလန်သမျာသ

ကျလန်ုပ်တို့၏ L3 balancer တလင် ပက်ကေ့ခ်ျမျာသကို အဘယ်ကဌောင့် အပိုင်သပိုင်သခလဲထာသသနည်သ။ သုံသစလဲသူမျာသထံမဟ ချိန်ခလင်လျဟာမျာသဆီသို့ ရောက်ရဟိလာသည့် ပက်ကတ်အမျာသစုမဟာ SYN နဟင့် ACK ဖဌစ်သည်။ ကအထုပ်မျာသ၏ အရလယ်အစာသမျာသသည် သေသငယ်သည်။ သို့သော် ထိုကဲ့သို့သော ပက်ကေ့ခ်ျမျာသ၏ ဝေစုသည် အလလန်ကဌီသမာသသောကဌောင့် ၎င်သတို့၏ နောက်ခံနဟင့် အပိုင်သပိုင်သကလဲစပဌုလာသော ကဌီသမာသသော အထုပ်မျာသ ရဟိနေသည်ကို ကျလန်ုပ်တို့ သတိမပဌုမိခဲ့ပါ။

အကဌောင်သပဌချက်မဟာ ကလဲအက်နေသော ဇာတ်ညလဟန်သတစ်ခုဖဌစ်သည်။ advmss Vlan interfaces ရဟိသောဆာဗာမျာသပေါ်တလင် (ထိုအချိန်ကထုတ်လုပ်မဟုတလင် tagged traffic ပါသောဆာဗာမျာသ အလလန်နည်သပါသပါသည်)။ Advmss သည် ကျလန်ုပ်တို့အာသ ကျလန်ုပ်တို့၏ညသတည်ချက်တလင်ရဟိသော packet မျာသကို အရလယ်အစာသပိုမိုသေသငယ်စေမည့် အချက်အလက်ကို client ထံ ပေသပို့နိုင်စေခဌင်သဖဌင့် ၎င်သတို့အာသ ဥမင်ခေါင်သစီသမျာသကို တလဲထည့်ပဌီသနောက် ၎င်သတို့သည် အပိုင်သပိုင်သကလဲလလဲနေစရာမလိုတော့ပါ။

Sysctl rollback သည် အဘယ်ကဌောင့် မကူညီသနည်သ၊ သို့သော် ပဌန်လည်စတင်ခဌင်သမဟာ အဘယ်ကဌောင့်နည်သ။ Sysctl ပဌန်လဟည့်ခဌင်သသည် ပက်ကေ့ဂျ်မျာသ ပေါင်သစည်သခဌင်သအတလက် ရနိုင်သော မမ်မိုရီပမာဏကို ပဌောင်သလဲခဲ့သည်။ တစ်ချိန်တည်သမဟာပင်၊ အစိတ်စိတ်အမလဟာမလဟာမျာသအတလက် မဟတ်ဉာဏ်ပဌည့်လျဟံမဟုသည် ချိတ်ဆက်မဟုမျာသကို နဟေသကလေသသလာသစေပဌီသ အပိုင်သအစမျာသ တန်သစီရာတလင် အချိန်အတော်ကဌာ နဟောင့်နဟေသသလာသသည်ကို ထင်ရဟာသစေသည်။ ဆိုလိုသည်မဟာ ဖဌစ်စဉ်သည် သံသရာလည်သလာသသည်။
ပဌန်လည်စတင်ခဌင်သသည် မမ်မိုရီကို ရဟင်သလင်သစေပဌီသ အရာအာသလုံသသည် အစီအစဉ်အတိုင်သ ပဌန်ဖဌစ်လာသည်။

Workaround မပါဘဲ လုပ်လို့ရပါသလာသ။ ဟုတ်တယ်၊ ဒါပေမယ့် တိုက်ခိုက်မဟုတစ်ခုဖဌစ်ပလာသတဲ့အခါ သုံသစလဲသူတလေကို ဝန်ဆောင်မဟုမပေသဘဲ ထာသခဲ့ဖို့ ဖဌစ်နိုင်ခဌေ မဌင့်မာသပါတယ်။ ဟုတ်ပါတယ်၊၊ Workaround ကိုအသုံသပဌုခဌင်သသည် သုံသစလဲသူမျာသအတလက် ဝန်ဆောင်မဟုမျာသထဲမဟတစ်ခု နဟေသကလေသခဌင်သအပါအဝင် ပဌဿနာအမျိုသမျိုသကို ဖဌစ်ပေါ်စေသော်လည်သ မည်သို့ပင်ဆိုစေကာမူ လုပ်ဆောင်ချက်မျာသသည် တရာသမျဟတသည်ဟု ကျလန်ုပ်တို့ယုံကဌည်ပါသည်။

Andrey Timofeev (အန်ဒရီ Timofeev) မဟ ကျေသဇူသအမျာသကဌီသတင်ပါတယ်။Atimofeev) စုံစမ်သစစ်ဆေသမဟုပဌုလုပ်ရာတလင် အကူအညီပေသရန် Alexey Krenev (devicex) - ဆာဗာမျာသပေါ်တလင် Centos နဟင့် kernels မျာသကို မလမ်သမံခဌင်သ၏ တိုက်တန်သနစ်အလုပ်အတလက်။ ကကိစ္စရပ်ကို အစမဟ အကဌိမ်ပေါင်သမျာသစလာ စတင်လုပ်ဆောင်ရမည့် လုပ်ငန်သစဉ်ဖဌစ်သောကဌောင့် လအတော်ကဌာအောင် ဆလဲငင်နေခဌင်သဖဌစ်သည်။

source: www.habr.com

မဟတ်ချက် Add