در بخش قبل دیدیم که EIGRP همانند هر یک از دیگر پروتکل های مسیریابی ترافیک را به نسبت مساوی روی مسیرهای با متریک یکسان تقسیم می کند. همچنین گفته شد که هیچ یک از پروتکل های مسیریابی (غیر از EIGRP) قابلیت تقسیم ترافیک روی مسیرهای مساوی را ندارد. حال دو سوال مطرح می شود.
سوال اول اینکه چرا شبکه IP قابلیت تقسیم ترافیک روی مسیرهای نامساوی را ندارد؟ سوالدوم اینکه آیا مکانیزمی برای حل این مشکل وجود دارد؟
در پاسخ به سوال اول که چرا IP قابلیت تقسیم ترافیک روی مسیرهای نامساوی را ندارد به شکل زیر توجه کنید.
تقسیم ترافیک روی مسیرهای نامساوی
فرض کنید که IP قابلیت تقسیم ترافیک روی مسیرهای نامساوی را داشته باشد. ببینیم در چنین شرایطی چه مشکلی در شبکه ایجاد می شود. در شکل فوق قصد داریم 100 مگابایت ترافیک از نقطه A به نقطه C ارسال شود. بدیهی است که 3 مسیر برای ارسال این ترافیک وجود دارد که متریک دو مسیر 20 و متریک مسیر سوم 40 است. بنابراین 100 مگابایت ترافیک را به نسبت 40:40:20 بین سه مسیر تقسیم می کنیم. با این فرض 60 مگابایت از ترافیک به روتر B و 40 مگابایت از این ترافیک به روتر C تحویل می گردد. حال بیاییم از نقطه B به بقیه داستان توجه کنیم و چگونگی ارسال 60 مگابایت ترافیک دریافتی توسط روتر B را بررسی کنیم. روتر B نیز 3 مسیر تا مقصد دارد. یکی با متریک 10 که روی لینک بالایی متصل به روتر C است. یکی با متریک 30 که روی لینک پایینی متصل به روتر C است و دیگری نیز از سمت روتر A که آن هم متریک 30 دارد. بنابراین ترافیک باید به نسبت 3:1:1 بین سه مسیر تقسیم شود. بنابراین ترافیکی که روی لینک بالایی روتر متصل به C ارسال می شود سه برابر ترافیکی است که روی دو مسیر دیگر ارسال خواهد شد. لذا از این 60 مگابایت ترافیکی که به روتر B رسیده است، 36 مگابایت آن روی لینک بالایی، 12 مگابایت آن روی لینک پایینی و 12 مگابایت دیگر ترافیک به روتر A برگشت خواهد کرد. این بدان معنی است که 12 مگابایت از 100 مگابایت ترافیک دچار Loop شده است.
دلیل ایجاد Loop چیست؟ می توان دلیل را این چنین مطرح کرد که هر روتر مستقلا برای تقسیم ترافیک تصمیم می گیرد و بنابراین روتر B از تصمیم روتر A بی اطلاع است. این دلیل را مطرح کردیم زیرا در راه حل MPLS Traffic Engineering که در این کتاب اصلا در مورد آن صحبت نمی کنیم، روتر A یعنی روتر مبدا مسئول تصمیم گیری مسیر ترافیک است و بقیه روترهای میانی صرفا تبعیت می کنند و خودشان در انتخاب مسیر نقشی ندارند.
اما در پاسخ به سوال دوم، می خواهم به دو راه حل غیر از MPLS TE برای حل این مشکل اشاره نمایم که البته راه حل دوم EIGRP است و بحث اصلی این بخش از کتاب را تشکیل می دهد
راه حل اول تغییر متریک لینک در پروتکل مسیریابی است. این راه حل در همه پروتکل های مسیریابی قابل بکارگیری است. مثلا هر دو پروتکل OSPF و EIGRP برای محاسبه متریک به پارامتر پهنای باند وابسته هستند. لذا تغییر پهنای باند لینک (با دستور Bandwidth در محیط اینترفیس) به صورت مستقیم در محاسبه متریک پروتکل مسیریابی تاثیر گذار است. اما غیر از این، هم در پروتکل OSPF، هم در پروتکل EIGRP و هم در دیگر پروتکل های مسیریابی، تغییر متریک پروتکل بدون تغییر پهنای باند نیز امکان پذیر است. مثلا در EIGRP نام ابزار تغییر مستقیم متریک offset-list است که در همین فصل و در بخش های آتی به آن می پردازیم. اما این روش اصلا روش مناسبی نیست زیرا تغییر پهنای باند و cost لینک و یا تغییر مستقیم متریک نه تنها در ترافیک های آن روتر تاثیر می گذارد بلکه هر تغییر این چنینی ممکن است مسیر هر یک از دیگر ترافیک های شبکه را نیز تحت تاثیر قرار دهد. به عنوان مثال اگر متریک لینک بین شیراز و تهران به صورت صوری بزرگ شود تا ترافیک های شیراز از مسیر اصفهان به تهران ارسال شود ممکن است ترافیک های کرمان به تهران یا حتی بندعباس به شمال کشور را نیز تحت تاثیر قرار دهد. بنابراین معمولا روش تغییر متریک اصلا پیشنهاد نمی شود و شبکه هایی که به صورت غیر حرفه ای مدیریت می شوند از این روش برای تغییر مسیرهای موقتی و یا دائمی استفاده می کنند
راه حل دوم، بکارگیری ویژگی تقسیم ترافیک روی مسیرهای نامساوی است که فقط در پروتکل مسیریابی EIGRP وجود دارد و این یکی از مزایای منحصربفرد EIGRP نیز محسوب می شود. در EIGRP با بکارگیری دو مفهوم واریانس[1] و Feasible Successor قابلیت تقسیم ترافیک روی مسیرهای نامساوی به صورت خیلی محدود (تاکید می کنیم خیلی محدود که قابل قیاس با MPLS TE نیست) امکان پذیر می شود. مفهوم Feasible Successor را از قبل می دانیم، مسیری است که اطمینان داریم از مسیر اصلی مستقل است.
اما قبل از ورود به چگونگی مکانیزم تقسیم ترافیک روی مسیرهای نامساوی باید واژه واریانس و هدف آن را بشناسیم. برای درک این واژه با یک مثال شروع می کنیم. تصور کنید که از مازندران به تهران دو مسیر وجود دارد. یکی از مسیرها پهنای باند 1Gbps و دیگری پهنای باند 500Mbps دارد. به عبارت دیگر پهنای باند یکی دو برابر دیگری است. به احتمال زیاد برای مسیر دوم با ظرفیت 500Mbps این همه هزینه نکرده اید که صرفا اگر مسیر اصلی قطع شد، ترافیک روی مسیر دوم قرار بگیرد. متحمل شدن چنین هزینه ای ما را وادار می کند که ترافیک را به نسبت ظرفیت هر دو مسیر تقسیم نمائیم. حال اگر مسیر اول 1Gbps و مسیر دوم 200Mbps باشد چه تصمیمی می گیرید؟ باز هم ترافیک را روی هر دو مسیر تقسیم می کنید یا مسیر دوم صرفا هدف افزونگی[2] دارد و در صورت قطع شدن مسیر اصلی، ترافیک روی آن ریخته می شود؟ اگر مسیر اول 1Gbps و مسیر دوم 100Mbps باشد چه تصمیمی می گیرید؟ اگر مسیر اول 1Gbps و مسیر دوم صرفا 10Mbps باشد، تصمیم شما چیست؟ واریانس ابزاری است که با استفاده از آن تصمیم خود را پیاده سازی می کنید.
اگر فرض کنید متریک EIGRP فقط معیاری از پهنای باند است و هیچ پارامتر دیگری دخالت در محاسبه متریک دخالت ندارد و همچنین اگر بخواهیم خیلی ساده به واریانس نگاه کنیم، واریانس 2 بدین معنی است که ترافیک را روی بهترین مسیر و همه مسیرهایی ارسال کن که پهنای باند آن حداقل نصف پهنای باند بهترین مسیر باشد. واریانس X بدین معنی است که ترافیک را روی بهترین مسیر و همه مسیرهایی ارسال کن که پهنای باند آن حداقل 1/X پهنای باند بهترین مسیر باشد.
با نگاه تیزبینانه تر به تعریف واریانس، مقدار X در واریانس بدین معنی است که ترافیک را روی بهترین مسیر و مسیرهایی ارسال کن که مقدار CD آن حداکثر X برابر متریک بهترین مسیر باشد. بنابراین شما به عنوان مدیر شبکه با تعیین مقدار واریانس مشخص می کنید که ترافیک روی چه مسیر یا مسیرهایی تقسیم شود. دقت کنید که در EIGRP میزان تقسیم ترافیک همواره به نسبت متریک است. مسیری که متریک آن دو برایر متریک بهترین مسیر است، نصف بهترین مسیر، ترافیک روی آن ارسال می گردد. بنابراین در EIGRP بدون تغییر متریک و تاثیرات ناخواسته در شبکه، تعیین می کنید که ترافیک روی مسیرهای نامساوی به نسبت عکس متریک تقسیم شود.
با توجه به مباحث پاراگراف های قبلی، برای تقسیم ترافیک روی مسیرهای نامساوی دو شرط زیر ضروری است:
- اول اینکه مسیرهایی که می خواهیم روی آنها ترافیک ارسال کنیم باید Feasible Successor باشند. بدین معنی که مطمئن باشیم از بهترین مسیر مستقل هستند.
چرا اطمینان از مستقل بودن مسیرها از بهترین مسیر اهمیت دارد؟ تصور کنید می خواهید ترافیکی با حجم 1GB را از تهران به بابلسر ارسال نمایید. دو مسیر فیروزکوه و هراز را برای ارسال ترافیک انتخاب می کنید که اولی 700Mbps و دومی 500Mbps ظرفیت دارند که مجموع ظرفیت آنها نیز بیش از ظرفیت ترافیک است. اما مشکل اینجاست که این دو مسیر از بابل تا بابلسر نقاط مشترک دارند و مسیر بابل تا بابلسر فقط 700Mbps ظرفیت دارد. حال اگر حجم ترافیک 1Gbps ترافیک ارسال گردد، 300MB آن در مسیر بابل تا بابلسر از دست خواهد رفت. اگر مطمئن بودیم که این دو مسیر بخش مشترک ندارند، هیچگاه چنین مشکلی پیش نمی آمد. Feasible Successor بودن مسیر به ما اطمینان می دهد که از مسیر اصلی مستقل است. در غیر این صورت هیچ ترافیکی روی این مسیرهایی که از مستقل بودن آنها مطمئن نیستیم، ارسال نمی گردد.
- شرط دوم اینکه ترافیک روی مسیرهایی ارسال می گردد که در محدوده واریانس که توسط مدیر شبکه تعیین می شود، قرار بگیرند. به صورت پیش فرض واریانس 1 است و ترافیک فقط روی بهترین مسیر ارسال می گردد. اما چنانچه مدیر شبکه مقدار واریانس را X تعیین نماید، ترافیک علاوه بر بهترین مسیر روی مسیرهایی ارسال خواهد شد که متریک آن حداکثر X برابر متریک بهترین مسیر باشد. البته مشروط بر آنکه Feasible Successor نیز باشد.
برای درک بهتر مجددا به مثال قبل توجه کنید که شکل آن در ذیل آمده است. در حالت اول که پهنای لینک بین IOU3 و IOU4 9Mbps است، مسیر دوم Feasible Successor نیست و در این شرایط هر مقداری که واریانس تعیین کنید، باز هم ترافیک روی آن ارسال نخواهد شد.
تقسیم ترافیک روی مسیرهای نامساوی
IOU1(config)#router eigrp 1 IOU1(config-router)#variance 100 IOU1#show ip route 192.168.1.0 255.255.255.0 Routing entry for 192.168.1.0/24 Known via "eigrp 1", distance 90, metric 435200, type internal Redistributing via eigrp 1 Last update from 10.1.2.2 on Ethernet0/0, 00:00:12 ago Routing Descriptor Blocks: * 10.1.2.2, from 10.1.2.2, 00:00:12 ago, via Ethernet0/0 Route metric is 435200, traffic share count is 1 Total delay is 7000 microseconds, minimum bandwidth is 10000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 2 |
عدم تقسیم ترافیک روی مسیرهایی که Feasible Successor نیستند
اما در شرایطی که پهنای باند لینک بین IOU3 و IOU4، 9.5Mbps است، مسیر دوم Feasile Successor است. همچنین خروجی fجدول توپولوژی نشان می دهد که CD مسیر دوم فقط 1.03 برابر متریک بهترین مسیر است . بنابراین با در نظرگرفتن مقدار 2 برای واریانس ترافیک بین دو مسیر تقسیم می شود و نسبت تقسیم نیز 240 به 233 است. یعنی بطور میانگین هر 240 نشستی که ترافیک آن روی مسیر اول ارسال می گردد، ترافیک 233 نشست نیز روی مسیر دوم ارسال می گردد.
IOU1#sh ip eigrp topology EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.3.1) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 192.168.1.0/24, 1 successors, FD is 435200 via 10.1.2.2 (435200/409600), Ethernet0/0 via 10.1.3.3 (448512/422912), Ethernet0/1 IOU1(config)#router eigrp 1 IOU1(config-router)#variance 2 IOU1#sh ip route 192.168.1.0 Routing entry for 192.168.1.0/24 Known via "eigrp 1", distance 90, metric 435200, type internal Redistributing via eigrp 1 Last update from 10.1.3.3 on Ethernet0/1, 00:00:23 ago Routing Descriptor Blocks: 10.1.3.3, from 10.1.3.3, 00:00:23 ago, via Ethernet0/1 Route metric is 448512, traffic share count is 233 Total delay is 7000 microseconds, minimum bandwidth is 9505 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 2 * 10.1.2.2, from 10.1.2.2, 00:00:23 ago, via Ethernet0/0 Route metric is 435200, traffic share count is 240 Total delay is 7000 microseconds, minimum bandwidth is 10000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.1 10.10.10.1 -> 192.168.1.1 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.2 10.10.10.1 -> 192.168.1.2 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.3 10.10.10.1 -> 192.168.1.3 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.4 10.10.10.1 -> 192.168.1.4 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.5 10.10.10.1 -> 192.168.1.5 => IP adj out of Ethernet0/1, addr 10.1.3.3 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.6 10.10.10.1 -> 192.168.1.6 => IP adj out of Ethernet0/1, addr 10.1.3.3 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.7 10.10.10.1 -> 192.168.1.7 => IP adj out of Ethernet0/1, addr 10.1.3.3 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.8 10.10.10.1 -> 192.168.1.8 => IP adj out of Ethernet0/0, addr 10.1.2.2 |
تقسیم ترافیک روی مسیرهای نامساوی در EIGRP
این پایان ماجرا نیست. اگرچه با دستور واریانس مسیرهای غیر بهترین را در کنار بهترین مسیر در جدول مسیریابی قرار می دهیم، اما چرا در عین حال علاقه مندیم که ترافیک فقط روی بهترین مسیر ارسال گردد؟ در چنین شرایطی اگر بهترین مسیر قطع شود زمان همگرایی برای ارسال ترافیک روی مسیر دوم صفر خواهد بود. زیرا قبلا مسیر دوم در جدول مسیریابی وارد شده است و بنابراین در صورت قطع مسیر اصلی، هیچ زمانی برای یافتن مسیر جدید سپری نخواهد شد. اگر بخواهیم از این ویژگی استفاده کنیم، کافی است بعد از تعیین واریانس و نصب همه مسیرهای دلخواه در جدول مسیریابی، از دستور traffic-share min across-interfaces در محیط روتر استفاده کنید تا ترافیک فقط روی بهترین مسیر ارسال گردد علی رغم اینکه چندین مسیر در جدول مسیریابی وجود دارد. دستور زیر را در مثال قبل وارد می کنیم. دوباره جدول مسیریابی را مرور می کنیم و می بینیم که همچنان دو مسیر برای مقصد مورد نظر وجود دارد. اما ترافیک های مختلف ایجاد می کنیم، مشاهده می کنیم که همه آنها صرفا روی بهترین مسیر ارسال می شوند.
IOU1(config)#router eigrp 1 IOU1(config-router)#traffic-share min across-interfaces
IOU1#sh ip route !!! بخشی از خروجی حذف شده است D 192.168.1.0/24 [90/448512] via 10.1.3.3, 00:01:18, Ethernet0/1 [90/435200] via 10.1.2.2, 00:01:18, Ethernet0/0
IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.1 10.10.10.1 -> 192.168.1.1 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.2 10.10.10.1 -> 192.168.1.2 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.3 10.10.10.1 -> 192.168.1.3 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.4 10.10.10.1 -> 192.168.1.4 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.5 10.10.10.1 -> 192.168.1.5 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.6 10.10.10.1 -> 192.168.1.6 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.7 10.10.10.1 -> 192.168.1.7 => IP adj out of Ethernet0/0, addr 10.1.2.2 IOU1#sh ip cef exact-route 10.10.10.1 192.168.1.8 10.10.10.1 -> 192.168.1.8 => IP adj out of Ethernet0/0, addr 10.1.2.2 |
تاثیر دستور traffic-share min across-interfaces در تقسیم ترافیک روی مسیرهای نامساوی
غیر از این گزینه، انتخاب دیگری نیز وجود دارد و آن اینکه بدون توجه به متریک، ترافیک را روی همه مسیرها به نسبت مساوی تقسیم نماید. برای فعال کردن این ویژگی، دستورات traffic-share را از محیط روتر غیر فعال می کنیم. ذکر این نکته در این بخش ضروری است که به صورت پیش فرض دستور traffic-share balanced در محیط روتر فعال است که ترافیک را به نسبت متریک روی مسیرها تقسیم می کند
انواع گزینه های تقسیم ترافیک روی مسیرهای نامساوی