روش های Load Balancing در Ether Channel(قسمت دوم)

3 477
مدت زمان مطالعه : ۳۰ دقیقه                                                                                                               سطح:پیشرفته

سلام خدمت دوستان عزیز علاقمند به شبکه مخصوصا زیرساخت و سیسکو

در خدمتتون هستم با ادامه بحث Ether Channel:

در قسمت اول مقاله راجع به تعریف مفهموم اولیه Ether channel  و کارایی و کاربرد اون و کانفیگ اولیه اون در خدمتتتون بودم

در این مقاله بحث رو در جهت متود های Load Balancing  در ether channel  ادامه میدم…

وقتی یک سیستم با لینکی که Channel شده میخواهد Frame را به سیستمی دیگر برساند،اون Frame با توجه به متد Load Balance  یا الگوریتمی که تعریف میکنیم ترافیک  را به یکی از لینکهای فیزیکی موجود در چنل میفرستد و اصلا اینطور نیست که ترافیک  را به چند قسمت تقسیم کند چون اصلا قابل تقسیم نیست فقط سوییچ با منطق خود که همان Load Balancing Method است این بسته را روی لینک های مختلف میفرستد حالا نکته مهم اینجاست که ما اصلا نباید به اسم Load Balancing توجه کنیم و برای خودمان اینطور تحلیل کنیم که ترافیک تقسیم بر تعداد لینک های فیزیکی میشود و در نتیجه سرعت ضرب در تعداد لینک ها میشود بلکه فقط میزان پهنای باند بزرگتر میشود و به اصطلاح تروپوت بالا میرود و در واقع بخواهیم مثال عینی بزنیم مانند یک خیابون دو لاینه است که ترافیک داشته و حالا ما چهار بانده اش کردیم و باز ترافیک دارد فقط تعداد بیشتری ماشین عبور میکند یعنی قبلا فرضا در ثانیه هزار ماشین عبور میکردند الان در یک ثانیه پنج هزار ماشین.ولی سرعت بالا نرفته فقط تعداد بیشتری به مقصد رسیدند.پس با این کار ظرفیت بیشتر میشود و bottleneck از بین میرود.پس Performance و Efficiency بالا میرود.

حالا اینکه ترافیک روی کدام دست می افتد بستگی به اون الگوریتمی دارد که سوییچ دارد و ما میتوانیم عوض کنیم آن را اما نمیتوان به صورت ثابت گفت فرضا نصف میشوند یا ۲۰ ۸۰ میشوند…

برای دیدن اینکه سوییچ از چه الگوریتمی برای Load Balance استفاده میکند از کامند زیر کمک میگیریم:

منطق کار الگوریتم Load Balancing  :

فرض میکنیم ما هشت لینک داریم که با هم چنل شده اند.جدا از اینکه ما چه الگوریتمی برای Load Balance انتخاب میکنیم این مکانیزم با Hash Function انجام میشود یعنی با توجه به الگوریتم دیتا وارد Hash Function میشود و از آنجا تقسیم میشود به هشت چون ماکزیمم هشت تا لینک میتوانیم داشته باشیم و بعد میرود سراغ لینک ها با توجه به تعداد و مپینگ هشت به دو انجام میدهد یعنی اگر فرضا دو لینک چنل شده اند اول لینک ۰ به لینک A میفرستد و بعد لینک ۱ به لینک B  و …..

 

 

دوستان اگر خاطرشون باشه گفتیم بهتر است تعداد لینک های موجود در چنل  توان های عدد ۲ باشند یعنی ۲ و ۴ و ۸ و اگر غیر این باشد ممکن است کارایی پاین بیاید   و دلیل آن هم همین مکانیزم است:

 

همانطور که در تصویر مشخص است تا وقتی لینک ها توان عدد دو بود به صورت متوازن دیتا بسته به روش ما روی لینک ها می افتاد اما اگر توان عدد دو نباشد نا متوازن میشوند و این کارایی را پایین می آورد.

الگوریتم Load Balance  به صورت دیفالت Src_MAC است .

ما بسته به نوع سوییچمان الگوریتم های زیر را داریم و  میتوانیم بسته به شرایطی که درش قرار داریم مناسب ترین الگوریتم را با کامند زیر برای عبور دیتا انتخاب کنیم:…

به مثال زیر توجه کنید…

 

 

در مثال بالا الگوریتم در هر دو سوییچ به صورت دیفالت است یعنی Src_MAC یا مک Sender خب در سوییچ سمت راستی ملاک خوبی است چون تعداد مک ها زیاد است و هر بار هر کدام در یک لینک می افتند و عبور میکنند اما در سوییچ سمت چپی ملاک مناسبی به نظر نمی آید چون آن سرور فقط یک مک دارد و خودش هم Sender است و منطقا هنگام ارسال فقط روی یک لینک ترافیک می افتد و یک لینک دیگر بیکار میماند.ما میتوانیم این الگوریتم را عوض کنیم و فرضا بگذاریمDST_MAC  یا Dst_IP تا وضعیتش بهتر شود.

یا در مثال زیر:

 

 

در این مثال فرض کنیم دو ساختمان داریم که روتر در یکی از آنها قرار دارند و کلاینت ها برای ارتباط با روتر از Channel رد میشوند خب در اینجا هم چون روتر MAC خودش را جایگزین مک کلاینت ها میکند و بسته را میفرستد SRC_MAC متود خوبی نیست و میتوانیم از SRC_IP جای آن استفاده کنیم:…

پس دوستان برای انتخاب بهترین متد برای Load Balancing  باید شرایط شبکه خودمان را ببینیم و با توجه به اون بهترین را انتخاب کنیم.

دقیقا این توضیحات همراه با یک مثال در کتاب How To Master  هم مشخص است:

 

 

دوستان به طور کلی گفتن چند نکته رو اینجا در بحث EtherChannel  لازم میدونم:

  • ماکزیمم تا ۸ لینک را میتوان در Channel اد کرد.
  • لینک هایی که میخواهیم در Channel اد کنیم باید تمام خصایص نرم افزاری و سخت افزاریشان اعم از Speed-Trunk-Access-full Duplex و ….  یکی باشد فرضا همه Trunk باشد و بهتر از تعداد لینک هایی که میخواهیم در channel اد کنیم زوج توان دو باشد.
  • یک لینک Gig خیلی بهتر از ده تا لینک ۱۰۰ است که در یک چنل هستند چون سرعت اون لینک گیگ ۱۰۰۰ است و ترافیک روی هزار می افتد و در channel  هم ترافیک روی یک لینک که صد است می افتد.
  • بهتر است چون نمیتوانیم در دو سوییچ همزمان کانفیگ Ether Channel را بزنیم در سوییچ اول اون دست های فیزیکی که میخواهیم وارد چنل کنبم را Shut کنیم بعد دست های سوییچ دوم را وارد چنل کنیم.
  • گفتیم که قبل از اینکه بخواهیم پورتی را وارد چنل کنیم باید از خودمان بپرسیم ارتباط لایه دویی میخواهیم یا لایه سه ای و اون دست های فیزیکی را لایه دو یا سه کنیم و بعد چنل را بالا بیاوریم چون چنل بعد از کانفیگ امکان تغییر وضعیتش وجود ندارد.حالا اگر خواستیم به هر دلیل عوض کنیم باید اول چنل را پاک کنیم و بعد INT PO را هم پاک کنیم که انگار چنلی نیست و بعد عوض کنیم ویژگی را و بعد دوباره چنلش کنیم
  • جای پاک کردن Channel میتوانیم از کامند زیر هم کمک بگیریم اما در هر صورت بهتر است Int po را هم پاک کنیم.

خب دوستان امیدوارم این مقاله هم مورد توجه شما قرار گرفته باشد.

به امید خدا در مقاله بعدی راجع به پروتکل های موجود در Ether Channel برای روش داینامیک صحبت میکنیم.

نویسنده: محمدمهدی دهقان

3 نظرات
  1. میلاد اسحاقی می گوید

    تشکر فراوان مهندس . بسیار کاربردی ، بی صبرانه منتظر ادامه مطالب هستیم
    من یه مشکلی با مفهوم Loadbalance دارم ! ببینید اینکه با راه اندازی Etherchannel افزایش سرعت نداریم یه مقداری جای بحث هست به نظرم ، خب ما ترافیک یک کلاینت رو از یک لینک انتقال دادیم و حالا چندین لینک همزمان داریم پس چندین کلاینت میتونن همزمان ارسال داده انجام بدن ، تا اینجا مشکلی ندارم میشه مثال اتوبان ، اما ! خب اگر بتونیم درخواست های یک کلاینت را توسط نرم افزار از چندیدن لینک ارسال کنیم چطور؟ یعنی کاری که با IDM در مورد اینترنت انجام میدیم ،اونوقت میتونیم بگیم که سرعت دانلود کلاینت افزایش پیدا کرده درسته ؟ خب حالا سناریو جوره دیگری بررسی کنیم ، فکر کنید من از طریق ۷ تا سیستم میخوام داده ها را به مقصدی ارسال کنم مثلا فایل کپی به عنوان ساده ترین مثال ، اگر etherchannel نباشد و پهنای باند توسط یک لینک انجام شود خب سیستم ها قطعا با سرعت پایین به مقصد داده ها رو انتقال میدن چون همه باید از یک لینک عبور داده بشن درسته ؟ خب حالا اترچنل میاد میگه این ۷ تا سیستم از ۷ لینک که با هم etherchannel سدن عبور کنن و به مقصد یکسان برسن ! حالا سرعت بالاتر میره درسته ؟ شما با منطق من موافقین یا داستان چیزه دیگه ای هست ؟

  2. محمدمهدی دهقان می گوید

    خواهش میکنم مهندس جان.
    دیدگاهتون کاملا منطقی هستش.
    ما در کل با زیاد شدن تعداد کلاینت ها چون ترافیک بین لینک های فیزیکی داخل چنل تقسیم میشود میتونیم بگیم شاهد افزایش سرعت علاوه بر کارایی نیز هستیم اما این افزایش سرعت به نسبت زیاد شدن تعداد کلاینت ها است با توجه به متد Load Balance ما و همچنان اون نکته که یک لینک هزار از نظر سرعت بهتر از ده تا لینک صد داخل چنل است نقض نمیشود در اصل ما هر چ تعداد کلاینت هایمان بیشتر بیشود چون ترافیکشان بین لینک های بیشتری تقسیم میشود باتل نک در شبکه خیلی کاهش پیدا میکند و به نسبت پرفورمنس بهتر شاهد افزایش سرعت پهنای باند هم خواهیم بود.
    خیلی متشکر از نظرتون.

  3. میلاد اسحاقی می گوید

    مرسی از شما ، دقیقا با این جمله موافقم و با ذهن من کاملا منظقی هست :
    “نقض نمیشود در اصل ما هر چ تعداد کلاینت هایمان بیشتر بیشود چون ترافیکشان بین لینک های بیشتری تقسیم میشود باتل نک در شبکه خیلی کاهش پیدا میکند و به نسبت پرفورمنس بهتر شاهد افزایش سرعت پهنای باند هم خواهیم بود.”
    مرسی از توضیحت مهندس

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.