از آنجایی که روترها باید همه مسیرهای موجود بازاء هر مقصدی را قبل از ارسال ترافیک استخراج نموده و بین آنها مسیری که Subnet Mask آن خاص تر است را انتخاب کنند، لذا ضروری است تا روتر برای پیدا کردن مسیر خروجی همه مسیرها را در جدول مسیریابی جستجو نماید که خود این بدان معناست که هر چه جدول مسیریابی بزرگتر باشد،

زمان جستجو برای انتخاب بهترین مسیر افزایش می یابد. علاوه بر آن روتر برای ساختن هدر لایه 2، قبل از ارسال فریم روی اینترفیس خروجی، نیازمند است تا پروسس اضافی دیگری نیز انجام دهد.

بنابراین به دنبال مکانیزمی هستیم که بتوانیم مسیریابی را در روتر سرعت ببخشیم. برای سرعت بخشیدن به مسیریابی در روتر دو روش اصلی وجود دارد که یکی از آنها یعنی روش Fast Switching و یا Route Cache قدیمی تر و روش دوم یعنی روش CEF روش جدیدتری است. قبل از ورود به بحث اصلی یعنی CEF نگاهی به روش قدیمی Route Cache می اندازیم

در روش Fast Switching اولین بسته ای که به آدرس مقصد خاصی ارسال می گردد، به صورت معمول توسط CPU پردازش می گردد. اما پس از پیدا کردن مسیر خروجی و همچنین استخراج اطلاعات هدر لایه 2، اطلاعات مورد نظر روی Cache روتر ذخیره می شوند و از این به بعد بسته هایی که دقیقا به همان مقصد مورد نظر ارسال می گردند، توسط CPU پردازش نخواهند شد و با توجه به اطلاعات Cache شده ارسال می گردند. این روش ضمن اینکه نسبت به روش معمول که کاملا CPU را درگیر می کند، توفیقی قابل تمجید است اما نسبت به روش CEF معایب زیر را داراست:

  • اولین بسته ای که به هر مقصد جدید ارسال می شود باید با کمک CPU پردازش شده و روی مسیر خروجی قرار گیرد.
  • رکوردهای Cache باید مرتبا خالی شوند. در غیر این صورت Cache خیلی سریع پر خواهد شد. زیرا به ازاء هر مقصد رکورد جدیدی در Cache قرار می گیرد. برخلاف جدول مسیریابی که به ازاء هر شبکه رکوردی به آن اضافه می گردد
  • عمل تقسیم ترافیک روی مسیرهای مختلف و یا به عبارت دیگر Load Balancing فقط با توجه به آدرس مقصد امکان پذیر خواهد بود.

دیگر روش ارسال ترافیک، CEF نام دارد. ایده این روش بدین صورت شکل گرفته است که اگر چه ممکن است هزاران مسیر در جدول مسیریابی روتر وجود داشته باشد، اما تعداد مسیرهای خروجی روتر محدود است و به ازاء هر مسیر خروجی، هدر لایه 2 مشخصی ساخته می شود. لذا ضرورتی ندارد روتر پس از هر بار مسیریابی هدر لایه 2 بسته خروجی را مجددا بازسازی کند. در CEF قبل از هر گونه مسیریابی، روتر در جدولی به نام adjacency table اطلاعات لایه 2 همه همسایه ها را نگه داری می کند و در زمان مسیریابی با توجه به مسیر خروجی، رکورد مورد نظر را از جدول adjacency table استخراج کرده و بسته خروجی را با توجه به این اطلاعات بسته بندی می کند. توجه کنید که جدول adjacency در زمان مسیریابی ایجاد نمی گردد بلکه قبل از هر گونه مسیریابی و در control plane این جدول ایجاد می گردد و در زمان ارسال ترافیک هیچگونه پروسسی جهت ایجاد هدر لایه 2 درگیر نخواهد شد.

اما غیر از جدول adjacency جدول دیگری نیز در مکانیزم CEF ایجاد می گردد که FIB نام دارد. این جدول نیز در control plane ایجاد می گردد و در زمان ارسال ترافیک هیچگونه پروسس اضافی تحمیل نمی کند. بدین صورت که با هر بار تغییر در جدول مسیریابی، کپی جدول مسیریابی بدون اطلاعات اضافه در FIB قرار می گیرد. منظور از عدم قرار دادن اطلاعات اضافه، اطلاعاتی است که در جدول مسیریابی وجود دارد اما در زمان جابجایی ترافیک هیچ کاربردی ندارند. Administrative distance و metric از جمله این اطلاعات هستند. ضمنا در جدول مسیریابی برای استخراج مسیر خروجی گاهی لازم است تا چندین بار جدول مسیریابی را جستجو کنیم و یا اصطلاحا recursive lookup انجام دهیم. به عنوان مثال وقتی که آدرس next-hop از پروتکل BGP استخراج شده باشد، ممکن است connected نباشد که در این صورت با جستجوی مجدد جدول مسیریابی، اینترفیس خروجی را استخراج می کنیم. برخلاف جدول مسیریابی، در جدول FIB نه تنها اطلاعات اضافه وجود ندراد بلکه نیاز به جستجوی recursive نیز نیست. ضمنا هر رکورد از جدول FIB به یک رکورد از جدول adjacency اشاره می کند که مستقیما اطلاعات هدر لایه 2 از آن استخراج شده و بسته خروجی را با این اطلاعات بسته بندی می کند.

CEF ساختار داده کاملا سخت افزاری دارد و روتر بر اساس آن مسیریابی را انجام می دهد بدون آنکه CPU را درگیر نماید. از مزایای این ساختار داده نسبت به Cache را می توان به صورت زیر بیان نمود:

  • زمان جستجو در این ساختار بسیار سریع انجام می شود و اصلا CPU را درگیر نمی کند
  • برای به روز کردن FIB نیازی نیست تا اولین بسته به ازاء هر مقصد را با کمک CPU ارسال نماییم. بلکه هر تغییری در جدول مسیریابی روتر به صورت اتوماتیک جدول FIB را نیز به روز می کند. به عبارت دیگر به روز شدن جدول FIB در زمان ارسال داده انجام نمی گیرد بلکه کاملا مستقلا در Control Plane صورت می پذیرد.
  • نسبت به روش Fast Switching از الگوریتم های load-sharing بیشتری پشتیبانی می کند که در بخش بعدی همین فصل به این موضوع پرداخته می شود
  • هر رکورد در جدول FIB به رکوردی در جدول دیگری به نام Adjacency اشاره می کند که با کمک آن اطلاعات اینترفیس خروجی و هدر لایه 2 جدید استخراج می گردد که البته این نیز CPU را درگیر نخواهد کرد.

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

روش Load Sharing نام جدولی که اطلاعات مسیریابی را ذخیره می کند روش Switching
Per Packet جدول مسیریابی Process Switching
Per Destination cache Fast Switching
Per-session, Per-packet, Per-port جدول FIB و جدول Adjacency CEF

مقایسه انواع روش های Switching در روتر

برای درک بهتر مکانیزم CEF به مثال زیر توجه کنید که در آن 11 شبکه با آدرس های مختلف وجود دارد اما روتر IOU1 برای رسیدن به این شبکه ها فقط 4 مسیر در اختیار دارد. به عمد چهار مسیر با چهار نوع اینترفیس مختلف ایجاد شده است. اینترفیس های HDLC، PPP، Ethernet با برچسب Vlan و Ethernet بدون برچسب Vlan اینترفیس های خروجی روتر IOU1 هستند.

CEF1

چگونگی مکانیزم CEF در مسیریابی

در ابتدا خروجی جدول مسیریابی و جدول ARP روتر IOU1 نشان داده شده است. برای هر یازده شبکه موجود در توپولوژی، مسیر خروجی در جدول مسیریابی وجود دارد. برای اینترفیس های خروجی Ethernet نیز آدرس MAC روتر بعدی در جدول ARP دیده می شود که برای بسته بندی لایه 2 بسته های خروجی ضروری است. بدیهی است که در صورت عدم وجود مکانیزم CEF جدول مسیریابی و جدول ARP به صورت مستقیم در مسیریابی به کار گرفته می شوند.

 

IOU1# sh ip route

!!! بخشی از خروجی حذف شده است

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks

C        10.1.2.0/24 is directly connected, Serial2/0

L        10.1.2.1/32 is directly connected, Serial2/0

C        10.1.3.0/24 is directly connected, Serial2/1

L        10.1.3.1/32 is directly connected, Serial2/1

C        10.1.4.0/24 is directly connected, Ethernet0/0

L        10.1.4.1/32 is directly connected, Ethernet0/0

C        10.4.1.0/24 is directly connected, Ethernet0/0.41

L        10.4.1.1/32 is directly connected, Ethernet0/0.41

D     192.168.2.0/24 [90/2297856] via 10.1.2.2, 00:04:27, Serial2/0

D     192.168.3.0/24 [90/2297856] via 10.1.3.3, 00:04:24, Serial2/1

D     192.168.4.0/24 [90/409600] via 10.4.1.4, 00:04:31, Ethernet0/0.41

                     [90/409600] via 10.1.4.4, 00:04:31, Ethernet0/0

D     192.168.20.0/24 [90/2297856] via 10.1.2.2, 00:04:28, Serial2/0

D     192.168.30.0/24 [90/2297856] via 10.1.3.3, 00:04:25, Serial2/1

D     192.168.40.0/24 [90/409600] via 10.4.1.4, 00:04:32, Ethernet0/0.41

                      [90/409600] via 10.1.4.4, 00:04:32, Ethernet0/0

D     192.168.200.0/24 [90/2297856] via 10.1.2.2, 00:04:28, Serial2/0

!

IOU1#sh ip arp

Protocol  Address          Age (min)  Hardware Addr   Type   Interface

Internet  10.1.4.1                -   aabb.cc00.0100  ARPA   Ethernet0/0

Internet  10.1.4.4                5   aabb.cc00.0400  ARPA   Ethernet0/0

Internet  10.4.1.1                -   aabb.cc00.0100  ARPA   Ethernet0/0.41

Internet  10.4.1.4                5   aabb.cc00.0400  ARPA   Ethernet0/0.41

کاربرد جدول مسیریابی و جدول ARP در مسیریابی ترافیک

حال نگاهی به مکانیزم CEF بیاندازیم. همانطور که در خروجی جدول adjacency روتر مشاهده می کنید فقط به تعداد روترهای همسایه، رکورد در جدول adjacency وجود دارد و به ازاء هر همسایه، اطلاعات لایه 2 که برای بسته بندی ترافیک های خروجی به سمت آن همسایه مورد نیاز است، در این جدول ایجاد شده است. به عنوان مثال برای اینترفیس خروجی s2/0 اطلاعات لایه 2 بسته خروجی FF030021 است. به عبارت دیگر هر ترافیکی که روی این مسیر ارسال می گردد، با اطلاعات FF030021 در لایه 2 بسته بندی و ارسال می گردد بدون آنکه CPU را برای ساختن هدر لایه 2 درگیر کند. همچنین در ذیل نشان داده شده است که بسته هایی که روی اینترفیس Ethernet0/0.41 ارسال می شوند، با هدر لایه 2 AABBCC000400AABBCC00010081000029 بسته بندی می شوند. در این مثال AABBCC000400 آدرس MAC روتر بعدی است. AABBCC000100 آدرس MAC روتر IOU1 است و 81000029 برچسب dot1q فریم خروجی است.

IOU1#show adjacency

Protocol Interface                 Address

IP       Ethernet0/0               10.1.4.4(17)

IP       Serial2/0                 point2point(12)

IP       Serial2/1                 point2point(11)

IP       Ethernet0/0.41            10.4.1.4(17)

!
IOU1#sh adjacency s2/0 detail

Protocol Interface                 Address

IP       Serial2/0                 point2point(12)

                                   0 packets, 0 bytes

                                   epoch 0

                                   sourced in sev-epoch 1

                                   Encap length 4

                                   FF030021

                                   P2P-ADJ

!

IOU1#sh adjacency ethernet 0/0.41 detail

Protocol Interface                 Address

IP       Ethernet0/0.41            10.4.1.4(17)

                                   0 packets, 0 bytes

                                   epoch 0

                                   sourced in sev-epoch 1

                                   Encap length 18

                                   AABBCC000400AABBCC00010081000029

                                   0800

                                   ARP

جدول Adjacency

همچنین مشاهده می کنید که کپی جدول مسیریابی بدون اطلاعات اضافه مانند متریک و Administrative Distance در جدول FIB وجود دارد.  

IOU1#sh ip cef

Prefix               Next Hop             Interface

0.0.0.0/0            no route

0.0.0.0/8            drop

0.0.0.0/32           receive

10.1.2.0/24          attached             Serial2/0

10.1.2.0/32          receive              Serial2/0

10.1.2.1/32          receive              Serial2/0

10.1.2.255/32        receive              Serial2/0

10.1.3.0/24          attached             Serial2/1

10.1.3.0/32          receive              Serial2/1

10.1.3.1/32          receive              Serial2/1

10.1.3.255/32        receive              Serial2/1

10.1.4.0/24          attached             Ethernet0/0

10.1.4.0/32          receive              Ethernet0/0

10.1.4.1/32          receive              Ethernet0/0

10.1.4.4/32          attached             Ethernet0/0

10.1.4.255/32        receive              Ethernet0/0

10.4.1.0/24          attached             Ethernet0/0.41

10.4.1.0/32          receive              Ethernet0/0.41

10.4.1.1/32          receive              Ethernet0/0.41

10.4.1.4/32          attached             Ethernet0/0.41

10.4.1.255/32        receive              Ethernet0/0.41

127.0.0.0/8          drop

192.168.2.0/24       10.1.2.2             Serial2/0

192.168.3.0/24       10.1.3.3             Serial2/1

192.168.4.0/24       10.1.4.4             Ethernet0/0

                     10.4.1.4             Ethernet0/0.41

192.168.20.0/24      10.1.2.2             Serial2/0

192.168.30.0/24      10.1.3.3             Serial2/1

192.168.40.0/24      10.1.4.4             Ethernet0/0

                     10.4.1.4             Ethernet0/0.41

192.168.200.0/24     10.1.2.2             Serial2/0

224.0.0.0/4          drop

224.0.0.0/24         receive

240.0.0.0/4          drop

255.255.255.255/32   receive

جدول FIB

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید