برای شناخت بهتر روش های لودبالانسینگ در میکروتیک نظرتون را به جدول زیر جلب می کنممیکروتیک برای لود بالانسینگ ، روش های مختلف برای سلوشن های مختلف ارائه کرده، که در ادامه به آنها اشاره خواهم کرد
Method | Per-connection | Per-packet |
Firewall marking | Yes | Yes |
ECMP | Yes | No |
PCC | Yes | No |
Nth | Yes | Yes |
Bonding | No | Yes |
OSPF | Yes | No |
BGP | Yes | No |
متد اول
Firewall marking
Per-Traffic load Balancing
Load Balancing over multiple Gateways
Manual:Load Balancing
Improved Load Balancing over Multiple Gateways
Improved Load Balancing over Multiple Gateways failover Script
متد دوم
ECMP (Equal Cost Multi-Path)
ECMP load balancing with masqurade
ECMP Failover Script
Manual:IP/Route#Multipath (ECMP) Route
در این قسمت روش اول از متد اول را برایتان شرح میدهم
Per-Traffic load Balancing
مدیریت پهنای باند یک بخش ضروری برای تمامی شبکه های اینترنتی اعم از خانگی و یا اداری می باشد.
انواع مختلفی از ابزار مدیریتی برای این کار وجود دارد
از جمله QOS ، محدودیت در سرعت و محدودیت دیتا و…
من شخصا به یک اینترنت وایرلس دسترسی دارم و هیچ راه دیگری برای اتصال به اینترنت (اینترنت کابلی پر سرعت و یا فیبر)ندارم و فقط به یک Backbone دسترسی دارم و نمیتوانم پهنای باند مورد نیاز خودم را فقط از یک کانکشن، تامین کنم.
از این محدودیت می توان به اهمیت لود بالانسیگ برای چندین backbone پی برد.
در گذشته من از ECMP استفاده می کردم، که تقریبا از روشهای دیگر بهتر بود ولی با این حال در قسمت دانلود فایل های بزرک از سایت هایی که دارای HTTPS بودند به مشکل خوردم.
بعد از آن روش های مختلفی برای انجام این کار را بررسی کردم و در نهایت به روشی برای کم کردن هرچه بیشتر مشکلات بلقوه در این راه، رسیدم (Per-Traffic load Balancing)
که در ادامه نحوه پیاده سازی آنرا برای شما شرح خواهم داد.
Functions of RouterOS used
Firewall mangle rules
Firewall address-lists
Routing
قدم اول :
قبل از اینکه به این مرحله وارد شوید باید بدانید که چه چیزی می خواهید و چگونه میخواهید ترافیک خود را تقسیم کنید و چه ترافیکی میتواند خراب شود و کدام ترافیک نیمتواند !!
HTTP traffic (port 80)
SSL traffic (port 443)
POP3 traffic (port 110)
SMTP traffic (port 25)
P2P traffic (various port)
Unknown traffic (various port)
بعد از آماده سازی لیستی از ترافیکی که می خواهید بشکنید و اینکه آن ترافیک در چه پورتی از روتر شما اعمال می شود، باید لیست آماده شده را بررسی کنید و ببینید که ترافیک انتخاب شده قابلیت این را دارد که به سمت خروجی اینترنت هدایت شود.
نتیجه ای که از لیست بالا به عنوان نمونه به دست آوردم به صورت زیر است:
HTTP traffic : تا الان بدون مشکل
SSL traffic : به مقدار کمی مشکل دارد. برای سایتهایی با SSL نرمال و 90% نرم افزار ها مشکلی پیش نمی آید .مشکلات ایجاد شده را در مقاله ای دیگر توضیح خواهم داد
POP3 traffic : تا الان بدون مشکل
SMTP traffic: تا الان بدون مشکل
P2P traffic: باید از مسیر اینترنت خروجی به صورت ترافیک ناشناس خارج گردد که توضیح خواهم داد
Unknown traffic: باید از همان مسیر اینترنت به صورت ترافیک ناشناس خارج گردد مانند P2P ترافیک که آن را هم توضیح خواهم داد
به صورت خلاصه اگر بخواهم مشلات ایجاد شده را توضیح بدهم ، بعضی از برنامه ها و سایت ها به در خواستهایی که یک نفر از چند IP مختلف می فرستند پاسخ نمی دهند به همین دلیل است که ECMP مشکلات فراوانی دارد.
برای این مشکلات نادری که در لود بالانسینگ ایجاد می شود راه حلهایی ارائه خواهم داد.
مشکل به وجود آمده در ترافیک SSL به این صورت است که درخواستهایی که از آدرس های مختلف برای دریافت دیتا به سایت می رسند در سرورهای سایت به صورت، از پیش تعیین شده توضیع میگردند در نتیجه اگر وبسایتی داشته باشیم که از هر دو ترافیک HTTP و SSL استفاده کند در بیشتر مواقع سایت بدون بررسی IP درخواست کننده به آن پاسخ می دهد ولی اگر وبسایت پیش از پاسخگویی IP درخواست کننده را بررسی کند و اختلافی در آن ببیند معمولا در پاسخ به مشکل برخورد میکنیم.
در اجرای پروژه 2 بار به این مشکل برخورد کردم که هر دوبار مربوط بود به سایت های پزشکی و درمانی که با این روش از اطلاعات خود نگهداری میکردند.
در مورد ترافیک P2P ترافیک ناشناخته: من این دو ترافیک را باهم آدرس دهی کردم زیرا مشکل در هر دوی آنها به یک شکل بود.
سیستم عامل میکروتیک RouterOS ترافیک P2P را تشخیص نمی دهد اما هر packet را می تواند بررسی کند بدین معنی که سیستم عامل میکروتیک برای تشخیص اینکه این دیتا از نوع P2P است به زمان بیشتری احتیاج دارد.
به طور خلاصه : سیستم عمال میکروتیک بعد از زمانی که یک کانکشن از نوع P2P ایجاد شد می تواند ماهیت P2P راتشخیص دهد.
این مسئله مهمی است زیرا برای ارسال دیتا در مسیر مشخص اینترنت شما باید ماهیت آن را قبل از ایجاد اتصال بدانید.
بنابراین ترافیک P2P و ترافیک ناشناخته برای ما در گروه ترافیک ناشناخته قرار میگیرند.با نشان دار کردن ترافیک ناشناخته شما می توانید تصمیم بگیرید کدام اینترنت برای هدایتP2P و بقیه ترافیک ناشناخته مناسب هستند، که به شکل خوبی هم درروتر کار میکند!
قدم دوم: تنظیمات شبکه
قبل از دستیابی به این امکان نیاز داریم یک شبکه خیالی را به عنوان مثال استفاده کنیم.
client computers (172.18.1.0/24)
Internet Gateways (10.0.1.1/24, 10.0.2.1/24)
RouterOS IPs (10.0.1.2/24, 10.0.2.2/24
با فرض اینکه با تنظیمات کامل IP ها و DNS و default routes کاربر به اینترنت دست رسی دارد
لیستی برای دسترسی به اینترنت می سازیم
/ ip firewall address-list
add list=”Allowed-Internet” address=172.18.1.0/24 comment=”” disabled=no
لیستی برای مسیر های لود بالانسینگ می سازیم
/ ip firewall address-list
add list="WAN-01" address=172.18.1.24/32 comment="" disabled=no
add list="WAN-02" address=172.18.1.76/32 comment="" disabled=no
اعمال Masquerading برای خروج ترافیک از WAN
/ ip firewall nat
add chain=srcnat action=masquerade out-interface="WAN - 01" src-address-list="Allowed-Internet" comment="Gateway 10.0.1.1/24" disabled=no
add chain=srcnat action=masquerade out-interface="WAN - 02" src-address-list="Allowed-Internet" comment="Gateway 10.0.2.1/24" disabled=no
در اینجا تمام کلاینت ها باید به اینترنت دسترسی داشته باشند، منتها با یک اینترنت و آن هم مسیر پیش فرضی که در defualt Routes روتر موجود است.
قدم سوم: استفده از ابزار منگل سیستم عامل میکروتیک برای نشان دار کردن انواع ترافیک
در ادامه دستوراتی که برای نشان دار کردن ترافیک لازم است رو میبینید.
بعد از نشان دار کردن ترافیک از آن برای نوع خاصی از Route استفاده می کنیم
در جدول زیر از همان ترافیک به عنوان مثال استفاده کردیم
HTTP-SSL-POP3-SMTP-P2P-Unknown
/ ip firewall mangle
add chain=prerouting action=mark-routing new-routing-mark="WAN-01" src-address-list="WAN-01" passthrough=no comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="WAN-02" src-address-list="WAN-02" passthrough=no comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="HTTP traffic" passthrough=no dst-port=80 protocol=tcp comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="SSL traffic" passthrough=no dst-port=443 protocol=tcp comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="POP3 traffic" passthrough=no dst-port=110 protocol=tcp comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="SMTP traffic" passthrough=no dst-port=25 protocol=tcp comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="P2P traffic" passthrough=no p2p=all-p2p comment="" disabled=no
add chain=prerouting action=mark-routing new-routing-mark="Unknown traffic" passthrough=no comment="" disabled=no
دو خط اول از دستورات برای کاربران خاصی هست که روشی رو انجام می دهد که تمام ترافیک آنها به صورت میان بر از لود بالانسینگ عبور کند و به یک اینترنت کانکشن از پیش تعیین شده برسد.
خط بعدی ترافیک رو بر اساس dst-port (پورت خروجی) علامت دار می کند.
توجه کنید فقط داریم ترافیک رو علامت گذاری می کنیم حتی اگر ترافیک ناشناخته باشه .
قبلا هم گفته شد که همیشه یک اینترنت کانکشن مخصوص برای ترافیک ناشناخته و P2P تعیین شده تا از defaut route روتر استفاده نشه.
من حتی ترافیک P2P رو هم به صورت جداگانه علامت گذاری می کنم اگرچه ترافیک مربوط به اون هم باید از همون اینترنت کانکشنی خارج بشه که ترافیک ناشناخته قراره خارج بشه.
این کار را به دلایل زیادی انجام میدم یکی به این خاطر که هر وقت خواستم عبور تمام ترافیک رو با غیر فعال کردن یک Route غیر فعال کنم
دلیل دیگر به این خاطر هست که من در روتر مقدارزیادی تنظیمات QoS دارم و ممکن است تنظیمات QoS تاثیراتی در لود بالانسیگ داشته باشد.
خوب در این مرحله ترافیک رو علامت دار کردیم و در مرحله بعد باید برای آن Route نوشته شود.
قدم چهارم: استفاده از قابلیت Route سیستم عامل میکروتیک برای هدایت ترافیک علامت دار شده به اینترنت کانکشن دلخواه.
در جدول زیر دستورات لازم برای ایجاد Route در جهت هدایت ترافیک علامت گذاری شده قرار داده شده
ترافیک شامل HTTP-SSL-POP3_SMTP-P2P و ترافیک ناشناخته
/ ip route
add dst-address=0.0.0.0/0 gateway=10.0.1.1 scope=255 target-scope=10 routing-mark="WAN - 01" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.2.1 scope=255 target-scope=10 routing-mark="WAN - 02" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.2.1 scope=255 target-scope=10 routing-mark="HTTP traffic" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.2.1 scope=255 target-scope=10 routing-mark="SSL traffic" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.2.1 scope=255 target-scope=10 routing-mark="POP3 traffic" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.1.1 scope=255 target-scope=10 routing-mark="SMTP traffic" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.1.1 scope=255 target-scope=10 routing-mark="P2P traffic" comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=10.0.1.1 scope=255 target-scope=10 routing-mark="Unknown traffic" comment="" disabled=no
دو خط اول برای کاربرانی است که قرار نیست ترافیک آنها از لود بالانسیتگ عبور کند
و باقیه خطوط Route های لازمی هستند که برای هدایت انواع ترافیک در نظر گرفته شده است.
قدم پنجم – مروری بر اقدامات انجام شده
در قسمت های قبل ترافیک اینترنت را به قسمت های مختلف تقسیم کردیم (شکستیم) و ترافیک تقسیم شده را با استفاده از تکنولوژی mangle سیستم عامل میکروتیک نشان دار کردیم.
یک لیست میان بر یجاد کردیم که اجازه عبور آی پی های اصلی در لود بالانسینگ رو می داد
فرمان route های مخصوصی بر اساس ترافیکی که mnagle کردیم نیز ایجاد کردیم
نتیجه گیری
کانفیگی که انجام دادیم بسیار قدرمتند است . انواع ترافیکی که در این آموزش لیست شد تنها بخش کوچکی از ترافیک اینترنت هستند که شما می تونستید لیست کید.(DNS-Terminal service-ICMPو غیره)
دو مورد رو میخام بدونم ؛
اول اینکه اومدی دوتا آدرس لیست ساختی برای wan.خوب یه لیست میساختی با دو آیپی wan که اینجوری بابت table ساخته شده مموری و پراسس اضافه نگیره.
دوم اینکه شما mark connection نساخته نزده چجوری براش mark routing نوشتی؟؟؟ الان آون رولها رو چه حسابی دارن mark routing میشن؟؟
سلام دوست من !
این ترجمه از سایت خود میکروتیک هستش