Bonding چیه ؟
Bonding فناوری هست که امکان یکی کردن چندین EtherNet رو در یک لینک مجازی واحد فراهم میکنه ، همونطور که از به هم پیوستن چندین جویبار به هم یک رود بزرگ تشکیل میشه و سرعت و عظمت بیشتری داره ، در اینجا با استفاده از تکنولوژی Bonding میتونیم دو یا چند Interfase رو با هم یکی کنیم که باعث بیشتر شدن پهنای باند میشه و به همین خاطر داده های بیشتری دریافت و یا ارسال میکنیم.
نکته : فناوری Bonding یک Interfase بزرگ تر یا پر سرعت تری ایجاد نمیکنه بلکه به صورت مجازی ترافیک رو روی چندین Interface پخش میکنه که بهش میگیم LoadBalancing .
– راه اندازی با استفاده از Terminal :
اجازه دهید فرض کنیم که در هر روتر دو رابط اترنت داریم (روتر۱ و روتر۲) و میخواهیم حداکثر سرعت داده را بین این دو روتر بدست آوریم. برای امکان پذیر ساختن این کار، مراحل زیر را دنبال کنید:
۱- در ابتدا چک کنید که Interface های ۱ و ۲ در هر روتر فاقد IP باشن.
۲- یک Bondingایجاد میکنیم و Interface های خودمون رو بهش اضافه میکنیم .
interface bonding add slaves=ether1,ether2 name=bond1/ ip address add address=172.16.0.1/24 interface=bond1/
|
۳- دقیقا همین مراحل رو برای روتر ۲ انجام میدیم :
interface bonding add slaves=ether1,ether2 name=bond1/
ip address add address=172.16.0.2/24 interface=bond1/
۴ – برقراری ارتباط و سرعت رون رو چک میکنیم :
[admin@Router1] > ping ۱۷۲٫۱۶٫۰٫۲
SEQ HOST SIZE TTL TIME STATUS
۰ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms
۱ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms
۲ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms
sent=3 received=3 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms
نکته : Bonding بعد از ایجاد ، به چند ثانیه ای زمان برای ارتباط گیری نیاز داره.
Link monitoring :
در مثال بالا اگر یکی از Slave ها (Interfase های عضو Bond) از کار بیفته ، درایو Bonding همچنان به ارسال بسته ها از طریق اون ادامه میده که منجر به تخریب شبکه میشه .
اما برای Bonding در Router OS دو روش وجود داره که بر بستر ارتباطی نظارت میکنه . ARP و MII ، که هرکدوم ویژگی هایی دارن اما بخواطر محدودیت در DriveBonding به صورت هم زمان نمیتونیم از هردو کنار هم استفاده کنیم .
ARP monitoring :
این روش برای اطمینان از برقراری ارتباط درخواست هایی رو برای Slave ها ارسال میکنه ، پاسخی که دریافت میکنه رو مبنی بر فعال بودن اون میبینه . پاسخ های دریافتی توسط ARP اعتبار سنجی نمیشن ، اما این حالت میتونه به شما اطمینان بده که ترافیک روی لینک ها جریان داره .اگر برای Bonding ما حالت های Balance-rr و Balance-Xor تنظیم شده باشه ، Switch باید جوری کانفیگ بشه که تمام بسته ها رو به صورت یکنواخت توزیع کنه در غیر این صورت پاسخ تمام ARP Reqest ها از یک slave جواب داده میشن که این موضوع میتونه باعث اختلال در عملکرد ARP بشه و ما متوجه قطع شدن ارتباط نشیم .
برای فعال کردن قابلیت ARP monitoring در Router 1 قطعه کد زیر رو وارد میکنیم :
interface bonding set [find name=bond1] link-monitoring=arp arp-ip-targets=172.16.0.2/ |
برای Router 2 هم همین کار رو میکنیم :
interface bonding set [find name=bond1] link-monitoring=arp arp-ip-targets=172.16.0.1/ |
نکته : IP وارد شده در هر قسمت درواقع IP مقصد هست .
Router OS به صورت پیش فرض مقدار ۱۰۰ میلی ثانیه رو برای ARP-interval قرار میده و ما توی این مثال تغییری در این مقدار ایجاد نکردیم .
نکته : برای این که متوجه بشید ARP درست کار میکنه یانه از مبدا مقصد رو پینگ کنید و در همین حین یکی از Interface های Slave رو جدا کنید . در این حالت شما متوجه وقفه در پینگ میشید(TimeOut) تا زمانی که ARP از کار افتادن link رو تشخیص بده .
[admin@MikroTik] > ping 172.16.0.2 SEQ HOST SIZE TTL TIME STATUS ۰ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms ۱ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms ۲ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms ۳ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms ۴ ۱۷۲٫۱۶٫۰ timeout ۵ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms ۶ ۱۷۲٫۱۶٫۰٫۲ ۵۶ ۶۴ ۰ms sent=7 received=6 packet-loss=14% min-rtt=0ms avg-rtt=0ms max-rtt=0ms |
نکته : برای اینکهManoitoring ARP به درستی کار کنه، نیازی به داشتن هیچ آدرس IP روی دیوایس نیس،کارکرد ARP بدون توجه به آدرس IP تنظیم شده برای تمام Interface ها قابل استفاده هست.
MII monitoring :
MII فقط وضعیت Local Interface رو مشخص میکنه . درواقع درایور MII مشخص میکنه که یک لینک UP هست یا اینکه Down شده.اما اگر Device ما Mll رو ساپورت نکنه، در تمام مدت Link درحال کار (UP) نمایش داده میشه .
نقطه ضعف اصلی MII monitoring اینه که نمیتونه تشخیص بده آیا واقعا Link میتونه بسته ها رو ارسال کنه یا نه،حتی اگر لینک UP باشه .
خب چطوری میشه این روش Monitoring رو پیاده سازی کرد ؟
به همین سادگی :
interface bonding set [find name=bond1] link-monitoring=mii/ |
mii-interval :
به صورت پیشفرض مثل ARP روی ۱۰۰ms هست ، که نیازی به تغییر نداره با این اندازه به محض جدا کردن یکی از Interface ها و سریع تر از ARP-
monitoringخرابی و قطع اتصال رو تشخیص میده .
رفتار Bonding وابستگی مستقیم به mode یا حالت اون داره که بسته به هدف و Device های مورد استفاده میتونه تغییر کنه . در ادامه با انواع mode ها آشنا میشیم
۸۰۲٫۳ad :
این حالت یک استاندارد IEEE هست که بهش میگیم LACP(Link Aggregation Control Protocol) . این مود به صورت خودکار پیکربندی رو انجام میده و برای اتصال به Switch ، حداقل کانفیگ کفایت میکنه .
این استاندارد چندین Slave رو که عموما از لحاظ Speed و Duplex یکی هستند رو الزام میکنه که Frame ها به صورت منظم تحویل گرفته بشن .
این مود برای ما ، تجمیع پهنای باند وLoad balancing انجام میده .
Balance-xor
xor ترافیک ها رو بر اساس یک Hash Policy انجام میده که این Policy یک hash funk رو به صورت xor روی mac address ها اعمال میکنه . این حالت
بسیار شبیه به LACP هست با این تفاوت که استاندارد نیست و با همون طور که گفتیم با Hash policy لایه های ۳-۴ کار میکنه .
همچنین این مود میتونه با لینک های LAG (Static Link Aggregation Group)
کارکنه .
Balance-rr :
اگر این حالت تنظیم شده باشه ، بسته ها از اولین Slave تا آخرین ارسال میشه . این حالت تنها حالتی هست که بسته ها رو به چندین Interface ارسال میکنه که متعلق به اتصال TCP/IP هستن .
هنگام استفاده از چند لینک بسته ها به صورت نا منظم ارسال و دریافت میشن و همین موضوع باعث ارسال مجدد بسته ها میشه. برای پروتوکل های دیگه مثل UDP ، اگر یک Client Software بتونه بسته های خارج از نظم رو دریافت کنه مشکلی بوجود نمیاد .
توجه داشته باشید که اگر از Switch برای جمع کردن Link ها استفاده کنیم باید با توجه به مود rr ، Switch خودمون رو کانفیگ کنیم . اما بدونید که اکثر Switch ها از این مود پشتیبانی نمیکنن .
Active-backup :
ما توی این حالت فقط از یک Slave فعال استفاده میکنیم و مابقی Interface های عضو باند فقط در صورتی فعال میشن که Slave اولیه از کار بیفته .
برای جلوگیری از گیج شدن Switch آدرس مک Bonding Interface روی پورت فعال قرار میگیره .
نکته : ARP monitoring در این حالت اگر دو روتر به صورت مستقیم به هم وصل باشن .
Broadcast :
هنگامی که پورت ها با روش broadcast کانفیگ بشن ، تمام پورت های Slave بسته های مشابهی رو به مقصد ارسال میکنن تا fault tolerance ایجاد بشه . اما این مود قابلیت Load balancing رو اراعه نمیده .
Balance-tlb :
در این حالت هر لینک میتونه Speed و Duplex متفاوتی داشته باشه و مثل اکثر حالت های دیگه ، به کانفیگ Switch نیاز نیست .
اما نقطه ضعف اصلی این حالت اینه که فقط توسط MII monitoring پشتیبانی میشه.
اگر ما ARP رو انتخواب کنیم در نظر گرفته نمیشه .در این حالت ترافیک ورودی از لینکی استفاده میکنه که به عنوان اصلی کانفیگ شده .
نکته : فرض کنید روتر ما دوتا لینک داره یکی با سرعت ۱۰mbps و یکی با سرعت ۵mbps ، خب لینک اول پهنای باند بیشتری داره پس ما اون رو به عنوان پیوند اصلی قرار میدیم .
Balance-alb :
Alb یا Adaptive load balancing شامل balance-tlb و rlb برای ترافیک IPv4 بوده و به هیچ سوئیچ support مخصوصی احتیاج ندارد.