Link Aggregation چیست و چگونه کار می کند؟
Link aggregation راهی برای یکی کردن و تلفیق تعدادی از لینکها با یکدیگر است که درنتیجه بهعنوان یک لینک واحد عمل کنند. اگر شما سوییچی با پورتهای گیگابیتی دارید، میتوانید همه این پورتها را به دستگاه دیگری که دارای پورتهای گیگابیتی است وصل کنید و ترافیک را بین این لینکها تقسیم کرده و کارایی شبکه را بهبود دهید.
مزیت دیگر استفاده از تجمیع لینکها، اطمینان از داشتن لینک جایگزین در صورتی است که یکی از لینکها بهصورت ناگهانی قطع شود.
بستههای اطلاعاتی معمولاً از روی یک لینک از دستگاهی به دستگاه دیگر ارسال میشوند، درواقع پروتکلها سعی میکنند که کل Session را روی یک لینک برقرار کنند؛ اما اگر Session جدیدی برقرار شود میتواند از لینک دیگری برای ارسال اطلاعات استفاده کند.
راهحل مناسب برای رسیدن به بهترین عملکرد این است چندین بسته اطلاعاتی بهصورت همزمان روی چندین لینک ارسال شوند. در یک Link aggregation استاندارد، هیچوقت یک بسته اطلاعاتی به قسمتهای کوچکتری برای ارسال روی چندین لینک تقسیم نمیشود.
استانداری که توسط IEEE یا همان انجمن مهندسهای برق و الکترونیک معرفیشده است 802.3ad نامیده شده بود، اما امروزه به 802.1AX تغییر یافته که در ادامه توضیح خواهیم داد. بااینحال چندین تولیدکننده استانداردهای انحصاری خود را معرفی کردهاند.
تعاریف رایج برای Link Aggregation
بسیاری از اصطلاحات مورداستفاده در مبحث Link Aggregation بهصورت بالقوه گیجکننده هستند. پس قبل از شروع بحث درباره این تکنولوژی شاید بهتر باشد کمی آنها را بررسی کنیم.
- گروهی از پورتها که با یکدیگر تلفیق و ترکیبشده باشند link aggregation group و یا بهصورت اختصاری LAG نامیده میشوند. برخی از تولیدکنندگان از LAG با نام های دیگری اسم میبرند مانند port-channel, bond و team.
- قواعدی که تعیین میکنند که کدام بسته از کدام لینک ارسال شود scheduling algorithm یا الگوریتم برنامهریزی نامیده میشوند.
- پروتکلی که اجازه نظارت بر LAG را ایجاد میکند تا بتوان لینکی را اضافه و یا حذف نمود Link Aggregation Control Protocol و یا LACP نامیده میشود.
Scheduling algorithms یا الگوریتم برنامهریزی
اولین چیزی که باید بدانید این است که تمام لینکهای LAG باید از نوع اترنت (10/100/1000 و غیره) بوده و همه آنها از یک نوع واحد باشند. LACP توانایی این را ندارد که ترافیک را بین دو لینک اترنت گیگابیتی و یک لینک فست اترنت تقسیم کند. حتی اگر شما برای ایجاد همچین LAG ای تلاش کنید، لینکی برقرار نخواهد شد.
علاوه بر این تمام لینکها باید به شیوهای یکسان پیکربندی شوند. بهبیاندیگر نمیتوان برای لینکهایی که در یک LAG قرار دارند تنظیمات Duplex متفاوت، VLAN های مختلف و یا تنظیم های متفاوت Queue در نظر گرفت.
در یک LAG حداکثر هشت لینک قرار میگیرد. اگرچه برخی از تولیدکنندهها این تعداد را محدودتر کردهاند. به دلیل شیوه عملکرد ساده اکثر الگوریتم های برنامهریزی، درصورتیکه از اعداد زوج و مضرب 2 مانند 2، 4 یا 8 لینک استفاده کنید عملکردی بهمراتب بهتر و تقسیم باری مؤثرتر را تجربه خواهید کرد.
نکته بسیار مهمی که در تنظیمات LAG وجود دارد این است که بستههای اطلاعاتی مربوط به هر Session تنها از یک لینک انفرادی عبور کنند. در غیر این صورت ریسک بستههای out-of-order وجود دارد که میتواند مشکلاتی بسیار جدی را برای برنامه های کاربردی ایجاد کند.
اکثر الگوریتم های زمانبندی معمولاً از نوعی تابع ساده hash استفاده میکنند که روی فیلدهایی در هدر لایه 2 یا/و لایه 3 عمل میکنند. رایجترین hash ها معمولاً از مک آدرس فرستنده و گیرنده، آی پی آدرس فرستنده و گیرنده و یا هر دو استفاده میکنند.
بسیاری از تجهیزات این حق انتخاب را برای ما قائل میشوند تا الگوریتم تقسیم بار متناسب با شبکه خود را انتخاب کنید.
لازم به ذکر است که نیازی نیست که دو دستگاهی که از طریق LAG به یکدیگر متصل شدهاند از یک الگوریتم تقسیم بار یکسان استفاده کنند. هدف این است که الگوریتمی را انتخاب کنید که بستههای شمارا تا حد ممکن بهطور تصادفی انتخاب کند. بهاینترتیب انتظار میرود که از تمام لینکها بهصورت یکسان استفاده شود که درنتیجه بهترین عملکرد ممکن را خواهید داشت.
در یک شبکه بر پایه سوییچ های لایه 2 که تجهیزات دائماً از طریق لینکهای تجمیع شده با یکدیگر در ارتباط هستند، یک الگوریتم ساده هش کردن MAC بهخوبی کار میکند. حتی اگر بیشتر تجهیزات موجود در شبکه، تنها با یک سرور مرکزی در حال تبادل اطلاعات باشند، همچنان الگوریتم بهخوبی کار میکند چراکه انتخاب تصادفی MAC آدرس دیگر دستگاهها، موجب میشود که بار ترافیکی بهخوبی تقسیم شود.
اما اگر تنها دو دستگاه از طریق Link Aggregation به یکدیگر متصل شده باشند، الگوریتم هشینگ MAC کارایی نخواهد داشت، چراکه در این صورت تمام بار ترافیکی تنها از یک لینک عبور خواهد کرد.
برای این مثال خاص اگر شما دو روتر داشته باشید (و یا سوییچ های لایه 3) و یا 2 فایروال و یا یکی از هرکدام از این تجهیزات که روی لینک در حال ارسال اطلاعات هستند. اگر تمام شبکه شما در حال استفاده از اینترنت است، تمام بستهها به یک فایروال فرستاده میشوند که درنتیجه یک MAC آدرس است؛ و اگر تمام اطلاعات از یکسوییچ مرکزی عبور میکنند درنتیجه بازهم از یک MAC آدرس خواهد بود. درنتیجه در این سناریو ، الگوریتم hash که بر اساس MAC آدرس کار میکند کارایی نخواهد داشت. در شرایطی مانند این بهتر است از الگوریتمهایی استفاده شود که برای تقسیم بار و ایجاد تعادل در ترافیک از الگوریتمهایی بر پایه IP آدرس استفاده میکنند.
توجه داشته باشید که وقتی الگوریتم را در یک دستگاه تغییر میدهید، فقط نحوه رفتار این دستگاه در هنگام ارسال بستهها را تغییر میدهید. ولی اگر عدم تعادل در میزان ترافیک دریافتی است، درنتیجه باید ترافیک دستگاهی مقابل که بستههای اطلاعاتی را ارسال میکند تغییر دهید.
Link Aggregation Control Protocol یا LACP
اکثر اوقات از 802.3ad یا 802.1AX استفاده میکنیم؛ که همان (Link Aggregation Control Protol(LACP یا پروتکل کنترل تجمیع لینک است. همچنین پروتکلهای انحصاری برای تجمیع لینک نیز وجود دارد. قبل از استانداردسازی LACP، شرکت سیسکو از پروتکل PAgP در سوییچ های خود استفاده میکرد. دیگر تولیدکنندگان نیز قبل از استاندارد شدن LACP دارای پروتکلهای انحصاری مشابهی بودند.
PAgP یک پروتکل اختصاصی است که هیچ مزیت قابلتوجهی نسبت به پروتکل استاندارد LACP ندارد. بهجز در شرایطی که شما از یکسوییچ بسیار قدیمی سیسکو استفاده میکنید که از استاندارد LACP پشتیبانی نمیکند، دیگر نیازی به استفاده از این پروتکل نیست.
سؤال مهمی که باید در هنگام پیکربندی یک لینک تجمیعی به آن پاسخ دهید این است که آیا از این پورت قرار است اکتیو باشد و یا اینکه فقط روشن باشد؟
اکتیو بودن لینک به این معناست که دستگاه مرتباً وضعیت لینک را مانیتور کرده و بهصورت خودکار لینکهایی که قطع میشوند را از دسته لینکهای تلفیقشده خارج میکند. کاملاً واضح است که این شیوه عملکرد گزینه بسیار مناسبی است چراکه تحمل خطا را افزایش میدهد. سؤال اینجاست که چرا ممکن است کسی نخواهد از این ویژگی استفاده کند؟
جواب کوتاه است: سازگاری. اگر یکی از دستگاهها در یکطرف لینک تصمیم بگیرد که یکی از لینکهای انفرادی غیرقابلاستفاده است، دستگاهی که در سمت دیگر لینک قرار دارد باید موافقت کند. در غیر این صورت یکی از دستگاهها بستههای اطلاعاتی را روی لینکی خواهد فرستاد که دستگاهی که در سوی دیگر لینک قرار دارد، اصلاً آن را نادیده میگیرد.
در بسیاری از روشهای پیادهسازی سرورها، معمولاً استانداردها به شیوه درستی اجرا نمیشوند، برخی نکات ریز نادیده گرفته میشود و یا اینکه تابع های مانیتورینگ بهصورت کلی مورداستفاده قرار نمیگیرد؛ اما بهشخصه توصیه میکنم که همیشه تمام لینکها در حالت اکتیو قرار بگیرند و در صورت بروز مشکل وضعیت آنها تغییر داده شود.
آشنایی با نسخه های مختلف Multi-chassis link aggregation
یکی از روش های جالب استفاده از لینکهای تجمیعی، اتصال یک دستگاه در یک سر لینک به دو دستگاه پشتیبان مانند دو سوییچ مرکزی در سوی دیگر لینک است. درواقع بهجای اینکه لینک بین دو دستگاه برطرف شود، یک لینک تجمیعی مابین یک دستگاه با دو دستگاه دیگر ایجاد میشود.
برای انجام این کار نیاز به تنظیماتی است که دو دستگاه که در یکطرف لینک قرار دارند بهعنوان یک دستگاه شناسایی شوند. آنها باید اطلاعات شناسایی یکسانی را برای سمت دیگر ارسال کنند تا بهصورت نرمافزاری یک سیستم یکسان در نظر گرفته شوند.
در اینجا میتوان یک توپولوژی مفید دیگر را معرفی کرد. اگر ما بتوانیم کاری کنیم که دو دستگاه در یکسوی لینک یک دستگاه ” به نظر برسند ” دلیلی وجود ندارد که نتوانیم در هر دو سوی لینک این کار را انجام دهیم.
شرکت سیسکو برای این کار دو راهحل متفاوت معرفی کرده است. راهکار قدیمی Virtual Switching System و یا VSS نامیده میشود که روی سوییچ های محدودی مانند سری 6500 و یا 4500 استفاده میشود.
نسخه جدیدتری که روی بیشتر سوییچ های Nexus قابلاستفاده است Virtual Port Channel و یا VPC نام دارد.
شرکت HP نیز بر روی سوییچ های تولیدی خود قابلیتی مشابه به نام Distributed Trunking یا همان DT را قرار داده است. لازم به ذکر است که DT برای برقراری LAG بین دو سوییچ توصیه نمیشود بلکه موارد مصرف آن بیشتری برای برقراری لینک تجمیعی بین یک سوییچ و یک سرور است.
آیندهی تکنولوژی Link Aggregation
همانطور که پیشتر اشاره شد LACP بهعنوان 802.3ad استانداردشده و یک پروتکل اختصاصی اترنت است؛ اما این تعریف امروزه دیگر درست نیست.
IEEE به این نتیجه رسید که Link Aggregation اساساً یک مفهوم منحصر به اترنت نیست، درنتیجه در سال 2008 آن را از گروه 802.3 که مربوط به اترنت است به گروه 802.1 که متعلق به استانداردها است منتقل کرد و امروزه با تغییر نام و بدون تغییر محتوا 802.1AX نامیده میشود.
مشخصات 802.1AX در حال بهروزرسانی است. بیشتر تغییراتی که انجام میشود بهمنظور استاندارد کردن و گسترش قابلیتهایی است که برای مفاهیم multi-chassis مورداستفاده قرار میگیرد و امروزه شرکت های تولیدکننده بهعنوان راهحل های انحصاری خود طراحی کرده اند.
بسیار کاربردی و مفید بود.