جڏهن لينڪس ڪنٽرڪ هاڻي توهان جو دوست ناهي

جڏهن لينڪس ڪنٽرڪ هاڻي توهان جو دوست ناهي

ڪنيڪشن ٽريڪنگ (“conntrack”) لينڪس ڪنيل نيٽ ورڪنگ اسٽيڪ جي بنيادي خصوصيت آهي. اهو ڪرنل کي سڀني منطقي نيٽ ورڪ ڪنيڪشن يا وهڪري جي ٽريڪ رکڻ جي اجازت ڏئي ٿو ۽ ان سان گڏ انهن سڀني پيڪن کي سڃاڻي ٿو جيڪي هر وهڪري کي ٺاهيندا آهن ته جيئن انهن کي ترتيب سان گڏ پروسيس ڪري سگهجي.

Conntrack هڪ اهم ڪنييل خاصيت آهي جيڪو ڪجهه بنيادي ڪيسن ۾ استعمال ڪيو ويندو آهي:

  • NAT conntrack کان معلومات تي ڀاڙيندو آهي ان ڪري اهو هڪجهڙائي سان سڀني پيڪن کي هڪجهڙائي سان علاج ڪري سگهي ٿو. مثال طور، جڏهن ڪو پوڊ ڪبرنيٽس سروس تائين پهچندو آهي، ته ڪوبي-پراڪسي لوڊ بيلنس استعمال ڪري ٿو NAT ٽرئفڪ کي سڌو رستو ڏيڻ لاءِ ڪلسٽر جي اندر مخصوص پوڊ ڏانهن. Conntrack رڪارڊ ڪري ٿو ته ڏنل ڪنيڪشن لاءِ، IP سروس جا سڀئي پيڪيٽ ساڳئي پوڊ تي موڪليا وڃن، ۽ جيڪي پيڪٽ واپس ورتا ويا آهن انهن کي واپس پوڊ تي NAT ڪيو وڃي، جتان درخواست آئي هئي.
  • رياستي فائر والز جهڙوڪ ڪيليڪو ڪنيڪٽ ٽريڪ کان وائيٽ لسٽ ”جواب“ ٽرئفڪ تائين معلومات تي ڀاڙين ٿا. هي توهان کي هڪ نيٽ ورڪ پاليسي لکڻ جي اجازت ڏئي ٿو جيڪا چوي ٿي ”منهنجي پوڊ کي ڪنهن به ريموٽ IP پتي سان ڳنڍڻ جي اجازت ڏيو“ بغير ڪنهن پاليسي لکڻ جي واضح طور تي جوابي ٽرئفڪ جي اجازت ڏيڻ لاءِ. (ان کان سواء، توهان کي تمام گهٽ محفوظ شامل ڪرڻو پوندو "ڪنهن به IP کان منهنجي پوڊ ۾ پيڪيٽس جي اجازت ڏيو" قاعدو.)

اضافي طور تي، ڪنٽرڪ عام طور تي سسٽم جي ڪارڪردگي کي بهتر بڻائي ٿو (سي پي يو جي استعمال ۽ پيڪٽ جي دير جي گھٽتائي سان) صرف هڪ وهڪرو ۾ صرف پهرين پيڪٽ کان وٺي
ان سان ڇا ڪرڻو آهي اهو طئي ڪرڻ لاءِ پوري نيٽ ورڪ اسٽيڪ ذريعي وڃڻ گهرجي. پوسٽ ڏسو "ڪوبي-پراڪسي طريقن جو مقابلو"هڪ مثال ڏسڻ لاء اهو ڪيئن ڪم ڪري ٿو.

بهرحال، ڪنٽرڪ جون حدون آهن ...

پوءِ اهو سڀ ڪٿي غلط ٿيو؟

Conntrack ٽيبل کي ترتيب ڏيڻ جي وڌ ۾ وڌ سائيز آھي، ۽ جيڪڏھن اھو پورو ٿئي ٿو، ڪنيڪشن عام طور تي رد ٿيڻ يا ختم ٿيڻ شروع ٿي ويندا آھن. اڪثر ايپليڪيشنن جي ٽرئفڪ کي سنڀالڻ لاءِ ٽيبل ۾ ڪافي خالي جاءِ آهي، ۽ اهو ڪڏهن به مسئلو نه ٿيندو. بهرحال، ڪجھه منظرنامي آھن جن ۾ توھان غور ڪرڻ چاھيو ٿا ڪنٽرڪ ٽيبل استعمال ڪندي:

  • سڀ کان وڌيڪ واضح ڪيس اهو آهي ته توهان جو سرور هڪ انتهائي وڏي تعداد ۾ هڪجهڙائي سان فعال ڪنيڪشن کي هٿي ڏئي ٿو. مثال طور، جيڪڏهن توهان جو ڪنٽريڪٽ ٽيبل 128k داخلن لاءِ ترتيب ڏنو ويو آهي، پر توهان وٽ آهن> 128k سمورو ڪنيڪشن، توهان کي ضرور هڪ مسئلو ٿيندو!
  • ٿورڙو گهٽ واضح ڪيس: جيڪڏهن توهان جو سرور پروسيس ڪري ٿو تمام وڏي تعداد ۾ ڪنيڪشن في سيڪنڊ. جيتوڻيڪ ڪنيڪشن ٿوري وقت لاءِ آهن، اهي ڪجهه عرصي لاءِ لينڪس جي نگراني ڪندا رهندا آهن (ڊفالٽ طور 120s). مثال طور، جيڪڏهن توهان جو ڪنٽريڪٽ ٽيبل 128k داخلن لاءِ ترتيب ڏنو ويو آهي ۽ توهان 1100 ڪنيڪشن في سيڪنڊ کي سنڀالڻ جي ڪوشش ڪري رهيا آهيو، اهي ڪنيڪشن ٽيبل جي سائيز کان وڌي ويندا، جيتوڻيڪ ڪنيڪشن تمام مختصر وقت وارا هجن (128k/120s = 1092 ڪنيڪشن/ s).

ائپس جا ڪيترائي خاص قسم آھن جيڪي انھن ڀاڱن ۾ اچن ٿيون. اضافي طور تي، جيڪڏهن توهان وٽ ڪيترائي خراب اداڪار آهن، توهان جي سرور جي ڪنٽرڪ ٽيبل کي گھڻن اڌ کليل ڪنيڪشن سان ڀرڻ کي سروس جي رد ڪرڻ (DOS) حملي جي حصي طور استعمال ڪري سگهجي ٿو. ٻنهي صورتن ۾، conntrack توهان جي سسٽم ۾ هڪ محدود رڪاوٽ بڻجي سگهي ٿو. ڪجهه حالتن ۾، ڪانٽريڪ ٽيبل جي پيٽرولن کي ترتيب ڏيڻ شايد توهان جي ضرورتن کي پورو ڪرڻ لاءِ ڪافي ٿي سگهي ٿو - سائيز وڌائڻ سان يا ڪانٽريڪ ٽائم آئوٽ کي گهٽائڻ سان (پر جيڪڏهن توهان اهو غلط ڪيو ته توهان کي تمام گهڻي تڪليف ٿيندي). ٻين ڪيسن لاءِ ضروري هوندو ته جارحاڻي ٽرئفڪ لاءِ ڪنٽريڪ کي بائي پاس ڪرڻ.

حقيقي مثال

اچو ته هڪ خاص مثال ڏيون: هڪ وڏو SaaS فراهم ڪندڙ جنهن سان اسان ڪم ڪيو هوسٽ تي ڪيترائي ميمڪيچ ٿيل سرور هئا (نه ورچوئل مشينون)، جن مان هر هڪ پروسيس ڪيو ويو 50K+ مختصر مدي وارا ڪنيڪشن في سيڪنڊ.

انهن تجربا ڪيا ڪنٽراڪ جي ترتيب سان، ٽيبل جي سائيز کي وڌائڻ ۽ ٽريڪنگ جي وقت کي گهٽائڻ، پر ترتيب ناقابل اعتبار هئي، ريم جو استعمال تمام گهڻو وڌي ويو، جيڪو هڪ مسئلو هو (GBytes جي ترتيب تي!)، ۽ ڪنيڪشن ايترا ننڍا هئا جو ڪنٽراڪ نه ڪيو. ان جي معمولي ڪارڪردگي جو فائدو ٺاهيو (گهٽتائي سي پي يو يا پيڪٽ جي ويڪرائي).

هنن هڪ متبادل طور ڪيليڪو ڏانهن رخ ڪيو. Calico نيٽ ورڪ پاليسيون توهان کي اجازت ڏين ٿيون ڪنٽرڪ استعمال نه ڪن مخصوص قسم جي ٽرئفڪ لاءِ (استعمال ڪندي doNotTrack پاليسي اختيار). هن انهن کي ڪارڪردگي جي سطح ڏني جيڪا انهن کي گهربل هئي، انهي سان گڏ ڪيليڪو طرفان فراهم ڪيل سيڪيورٽي جي اضافي سطح.

بائي پاس ڪنٽرڪ لاءِ توهان کي ڪهڙي حد تائين وڃڻو پوندو؟

  • نه ٽريڪ نيٽ ورڪ پاليسين کي عام طور تي هموار هجڻ گهرجي. SaaS فراهم ڪندڙ جي صورت ۾: انهن جون ايپليڪيشنون محفوظ علائقي جي اندر هليون ويون ۽ تنهن ڪري، نيٽ ورڪ پاليسي استعمال ڪندي، اهي ٻين مخصوص ايپليڪيشنن کان ٽرئفڪ کي وائيٽ لسٽ ڪري سگھن ٿيون جن کي ميم ڪيچ تائين رسائي جي اجازت ڏني وئي هئي.
  • نه ٽريڪ ڪرڻ واري پاليسي ڪنيڪشن جي هدايت کي حساب ۾ نٿي رکي. اهڙيء طرح، جيڪڏهن ميمڪ ڪيل سرور کي هيڪ ڪيو ويو آهي، توهان نظرياتي طور تي ڪوشش ڪري سگهو ٿا ڪنهن به ميمڪيچ ٿيل ڪلائنٽ سان ڳنڍڻ جي، جيستائين اهو صحيح ذريعو پورٽ استعمال ڪري. تنهن هوندي، جيڪڏهن توهان صحيح طور تي وضاحت ڪئي آهي نيٽ ورڪ پاليسي توهان جي memcached ڪلائنٽ لاءِ، ته پوءِ اهي ڪنيڪشن ڪوششون اڃا تائين ڪلائنٽ جي پاسي کان رد ڪيون وينديون.
  • Do-not-Track پاليسي هر پيڪيٽ تي لاڳو ٿئي ٿي، جيئن عام پاليسين جي برخلاف، جيڪي صرف هڪ وهڪري ۾ پهرين پيڪٽ تي لاڳو ٿين ٿيون. اهو وڌائي سگھي ٿو CPU واپرائڻ في پيڪيٽ ڇاڪاڻ ته پاليسي هر پيڪيٽ لاءِ لاڳو ٿيڻ گهرجي. پر مختصر مدت جي ڪنيڪشنن لاءِ، هي خرچ متوازن هوندو آهي وسيلن جي استعمال ۾ گھٽتائي سان ڪنٽريڪ پروسيسنگ لاءِ. مثال طور، هڪ SaaS فراهم ڪندڙ جي صورت ۾، هر ڪنيڪشن لاءِ پيڪيٽ جو تعداد تمام ننڍو هو، تنهن ڪري هر پيڪيٽ تي پاليسيون لاڳو ڪرڻ وقت اضافي CPU جو استعمال جائز هو.

اچو ته جاچ شروع ڪريون

اسان هڪ واحد پوڊ تي ٽيسٽ هلائي هڪ ميمڪ ڪيل سرور سان ۽ ڪيترن ئي ميمڪيڊ ڪلائنٽ پوڊس ريموٽ نوڊس تي هلندا هئاسين ته جيئن اسان في سيڪنڊ ۾ تمام گهڻي تعداد ۾ ڪنيڪشن هلائي سگهون. ميمڪيچ ٿيل سرور پوڊ سان گڏ سرور ۾ 8 ڪور ۽ 512k داخلائون ڪانٽريڪ ٽيبل ۾ (ميزبان لاءِ معياري ترتيب ڏنل ٽيبل سائيز).
اسان ڪارڪردگي فرق جي وچ ۾ ماپ ڪيو: نيٽ ورڪ پاليسي ناهي؛ باقاعده ڪيليڪو پاليسي سان؛ ۽ Calico do-not-track پاليسي.

پهرين ٽيسٽ لاءِ، اسان ڪنيڪشن جو تعداد مقرر ڪيو 4.000 في سيڪنڊ تائين، تنهنڪري اسان سي پي يو جي استعمال ۾ فرق تي ڌيان ڏئي سگهون ٿا. ڪابه پاليسي ۽ باقاعده پاليسي جي وچ ۾ ڪو خاص فرق نه هو، پر نه ٽريڪ ڪريو سي پي يو جو استعمال تقريباً 20 سيڪڙو وڌي ويو:

جڏهن لينڪس ڪنٽرڪ هاڻي توهان جو دوست ناهي

ٻئي ٽيسٽ ۾، اسان ايترا ڪنيڪشن شروع ڪيا جيترا اسان جا گراهڪ پيدا ڪري سگھن ٿا ۽ ماپ ڪري سگھن ٿا وڌ ۾ وڌ ڪنيڪشن جو في سيڪنڊ جيڪو اسان جو ميمڪيچ ٿيل سرور سنڀالي سگھي ٿو. جيئن توقع ڪئي وئي، ”ڪو به پاليسي“ ۽ ”باقاعده پاليسي“ ڪيس ٻئي 4,000 ڪنيڪشن في سيڪنڊ کان وڌيڪ ڪنيڪشن جي حد تائين پهچي ويا (512k/120s = 4,369 ڪنيڪشن/s). نه ٽريڪ ڪرڻ واري پاليسي سان، اسان جا گراهڪ 60,000 ڪنيڪشن في سيڪنڊ موڪليا بغير ڪنهن پريشاني جي. اسان کي پڪ آهي ته اسان هن نمبر کي وڌيڪ گراهڪ شامل ڪندي وڌائي سگهون ٿا، پر اسان محسوس ڪريون ٿا ته اهي انگ اڳ ۾ ئي ڪافي آهن هن مضمون جي نقطي کي بيان ڪرڻ لاءِ!

جڏهن لينڪس ڪنٽرڪ هاڻي توهان جو دوست ناهي

ٿڪل

Conntrack هڪ اهم ڪنييل خاصيت آهي. هو پنهنجو ڪم پورو پورو ڪري ٿو. اهو اڪثر ڪري سسٽم جي اهم حصن ۾ استعمال ٿيندو آهي. جڏهن ته، ڪجهه مخصوص منظرنامي ۾، ڪنٽرڪ جي ڪري بهڙ عام فائدن کان وڌيڪ آهي جيڪا اها مهيا ڪري ٿي. هن منظر ۾، ڪيليڪو نيٽ ورڪ پاليسيون استعمال ڪري سگھجن ٿيون چونڊيل طور تي ڪنٽرول جي استعمال کي غير فعال ڪرڻ لاءِ جڏهن نيٽ ورڪ سيڪيورٽي کي وڌايو وڃي. ٻين سڀني ٽريفڪ لاء، conntrack توهان جي دوست ٿيڻ جاري آهي!

اسان جي بلاگ تي ٻيا مضمون پڻ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو