Cisco Express Forwarding: روترهای مدرن چگونه بسته‌ها را در مقیاس فوروارد می‌کنند

روترهای سازمانی مدرن باید میلیون‌ها بسته را در ثانیه فوروارد کنند، بسیار فراتر از آنچه یک جستجوی جدول مسیریابی روی هر تک بسته می‌توانست پایدار نگه دارد، به همین دلیل Cisco Express Forwarding به‌عنوان معماری فوروارد‌کردن پیش‌فرض روی تقریباً همه دستگاه‌های سیسکو وجود دارد. این مقاله محدودیت‌های کارایی روش‌های فوروارد‌کردن قدیمی‌تر را توضیح می‌دهد، اینکه FIB و جدول adjacency در CEF چگونه فوروارد‌کردن سرعت-بالا را به دست می‌آورند مرور می‌کند، و دستورات ضروری برای تأیید عملیات CEF را پوشش می‌دهد.

Cisco Express Forwardingجدول FIB و Adjacencyتعادل بار CEF

~6 دقیقه مطالعه · آخرین به‌روزرسانی ۱۹ شهریور ۱۴۰۵

چرا سرعت فوروارد‌کردن به یک گلوگاه تبدیل شد

جستجوی پایه جدول مسیریابی که پیش‌تر در این مجموعه بحث شد فرآیند منطقی یافتن بهترین مسیر منطبق را توصیف می‌کند، اما چیزی درباره چگونگی انجام کارآمد آن جستجو توسط یک روتر برای هر تک بسته در سرعت‌های خط میلیون‌ها بسته در ثانیه نمی‌گوید. روترهای اولیه سیسکو از یک روش فوروارد‌کردن به نام Process Switching استفاده می‌کردند، که یک جستجوی کامل جدول مسیریابی و تفکیک ARP، که پیش‌تر در این مجموعه بحث شد، را برای هر بسته منفرد انجام می‌داد — فرآیندی بسیار کند برای هر چیز فراتر از حجم‌های ترافیک بسیار پایین.

جایگزین قدیمی‌تر: Fast Switching

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

CEF: پیش‌محاسبه تصمیم فوروارد‌کردن

Cisco Express Forwarding (CEF)، روش فوروارد‌کردن پیش‌فرض مدرن روی تقریباً همه پلتفرم‌های فعلی سیسکو، این را با پیشگیرانه پیش‌محاسبه اطلاعات فوروارد‌کردن برای هر مقصد شناخته‌شده پیش از اینکه حتی هر ترافیکی برایش برسد، به‌جای کش‌کردن واکنشی بر اساس ترافیک مشاهده‌شده، حل می‌کند.

دو ساختار داده اصلی CEF:

FIB (Forwarding Information Base):
  یک کپی ساده‌شده و بهینه‌شده‌برای-سخت‌افزار از
  جدول مسیریابی، شامل فقط اطلاعات مورد نیاز
  برای گرفتن یک تصمیم فوروارد‌کردن — اساساً
  یک نسخه پیش‌محاسبه‌شده از "show ip route"،
  که پیش‌تر در این مجموعه بحث شد، بهینه‌شده
  به‌طور خاص برای سرعت جستجو

Adjacency Table:
  شامل اطلاعات بازنویسی لایه ۲ مورد نیاز برای
  واقعاً فوروارد‌کردن یک بسته — آدرس MAC مقصد
  و اینترفیس خروجی، اساساً یک نسخه پیش‌محاسبه‌شده
  از جدول ARP، که پیش‌تر در این مجموعه درباره
  آدرس‌دهی IPv4 بحث شد

از آنجا که هر دو ساختار پیشگیرانه از جداول مسیریابی و ARP هروقت تغییر کنند ساخته می‌شوند، به‌جای واکنشی از ترافیک مشاهده‌شده، CEF "جریمه اولین-بسته"ای که Fast Switching از آن رنج می‌برد را حذف می‌کند — حتی اولین بسته به یک مقصد کاملاً جدید از همان سرعت فوروارد‌کردن پیش‌محاسبه‌شده مانند هر بسته بعدی بهره می‌برد.

یک تصمیم فوروارد‌کردن CEF واقعاً چگونه کار می‌کند

فرآیند فوروارد‌کردن CEF ساده‌شده برای یک بسته رسیده:

۱. روتر آدرس IP مقصد بسته را بررسی می‌کند
۲. یک جستجو مستقیماً در برابر FIB انجام می‌دهد
   (یک ساختار داده به‌شدت بهینه‌شده، اغلب یک
   ساختار مبتنی‌بر-trie که از نظر روحی مشابه با
   ایندکس‌گذاری مبتنی‌بر-درخت که پیش‌تر در این
   مجموعه درباره پایگاه‌داده‌ها بحث شد است)
۳. ورودی FIB مستقیماً به یک ورودی جدول
   adjacency از‌پیش‌ساخته‌شده اشاره می‌کند
۴. ورودی adjacency بازنویسی دقیق هدر لایه ۲
   مورد نیاز را فراهم می‌کند
۵. بسته با حداقل محاسبه اضافی مورد نیاز
   فوروارد می‌شود

این جداسازی تصمیم "کجا فرستادنش" (FIB) از تصمیم "چگونه فرمتش کنیم برای گام بعدی" (جدول adjacency) چیزی است که اجازه می‌دهد CEF به‌طور کارآمد در سخت‌افزار فوروارد‌کردن تخصصی (ASIC ها) روی پلتفرم‌های سطح‌بالا پیاده‌سازی شود، و نرخ‌های فوروارد‌کردنی بسیار فراتر از آنچه یک CPU عمومی‌منظوره که گام‌های منطقی معادل را انجام می‌دهد می‌توانست پایدار نگه دارد به دست می‌آورد.

تأیید عملیات CEF

Router# show ip cef

Prefix               Next Hop         Interface
0.0.0.0/0             203.0.113.1      GigabitEthernet0/0
192.168.1.0/24        attached         GigabitEthernet0/1
192.168.2.0/24        10.0.0.2         GigabitEthernet0/0

Router# show adjacency detail

IP GigabitEthernet0/0  10.0.0.2(5)
  0 packets, 0 bytes
  00000C9FF23300000C9FF2340800
  ARP    03:58:22

show ip cef تأیید می‌کند FIB با آنچه از جدول مسیریابی انتظار می‌رفت تطبیق دارد، و show adjacency detail اطلاعات بازنویسی لایه ۲ پیش‌محاسبه‌شده واقعی را آشکار می‌کند — رشته هگزادسیمال نشان‌داده‌شده دقیقاً آدرس MAC مقصد و بایت‌های هدری که روی هر بسته فوروارد‌شده به آن مقصد مهر می‌شود را نشان می‌دهد، که تأیید می‌کند CEF هر چیزی که نیاز دارد را بدون انجام تفکیک ARP به‌ازای هر بسته دارد.

تعادل بار CEF در سراسر چند مسیر

وقتی چند مسیر با هزینه-برابر به همان مقصد وجود دارد، که پیش‌تر در این مجموعه درباره معیارهای مسیریابی بحث شد، CEF باید تصمیم بگیرد چگونه ترافیک را در میان آن‌ها توزیع کند، و دو حالت متمایز تعادل بار ارائه می‌دهد.

تعادل بار به‌ازای-مقصد (پیش‌فرض):
  همه بسته‌ها به همان آدرس IP مقصد به‌طور سازگار
  از همان مسیر استفاده می‌کنند، در حالی که مقصدهای
  مختلف ممکن است از مسیرهای مختلف استفاده کنند
  بهره: ترتیب بسته را درون یک جریان واحد حفظ
  می‌کند، که بسیاری اپلیکیشن انتظار دارند

تعادل بار به‌ازای-بسته:
  بسته‌ها در سراسر مسیرهای موجود به‌صورت
  round-robin توزیع می‌شوند، صرف‌نظر از مقصد
  بهره: استفاده پهنای‌باند یکنواخت‌تر در سراسر
  مسیرها، اما ریسک رسیدن بسته‌ها به ترتیب نادرست را
  دارد، چون بسته‌های مختلف در همان جریان ممکن است
  مسیرهایی با تأخیر متفاوت طی کنند

Router(config)# interface gigabitethernet 0/0
Router(config-if)# ip load-sharing per-packet

-- به‌ازای-مقصد پیش‌فرض است و به‌شدت برای
-- بیشتر اپلیکیشن‌ها ترجیح داده می‌شود، چون تحویل
-- خارج‌از-ترتیب بسته می‌تواند کارایی TCP را
-- تنزل دهد و برخی اپلیکیشن‌های بی‌درنگ را مختل کند

تعادل بار به‌ازای-مقصد انتخاب درست برای اکثریت قریب‌به‌اتفاق شبکه‌های تولیدی است، چون ریسک تحویل خارج‌از-ترتیب تحت تعادل بار به‌ازای-بسته معمولاً بر بهبود حاشیه‌ای‌اش در یکنواختی استفاده پهنای‌باند غالب است.

چرا درک CEF برای عیب‌یابی اهمیت دارد

CEF به‌طور پیش‌فرض به‌طور خودکار و شفاف روی دستگاه‌های سیسکو مدرن عمل می‌کند، و بیشتر مدیران هرگز صراحتاً آن را پیکربندی نمی‌کنند — اما تعداد کمی سناریوی عیب‌یابی خاص نیازمند درک مستقیم آن هستند، مانند تشخیص یک روتر که به فوروارد‌کردن ترافیک به مقصدی که مسیرش تازه حذف شده ادامه می‌دهد (که نشان می‌دهد FIB هنوز با جدول مسیریابی همگام‌سازی نشده) یا تشخیص رفتار تعادل-بار غیرمنتظره در سراسر مسیرهای افزونه.

Router# clear ip cef inconsistency-checkers

-- گاهی در عیب‌یابی استفاده می‌شود وقتی به‌نظر
-- می‌رسد FIB و جدول مسیریابی از هم‌گام‌بودن
-- خارج شده‌اند، و بازسازی ساختارهای فوروارد‌کردن
-- CEF را از وضعیت فعلی جدول مسیریابی اجبار می‌کند

چرا معماری CEF زیربنای کارایی شبکه مدرن است

هر ویژگی فوروارد‌کردن پرتوان‌عملیاتی که بعداً در این مجموعه پوشش داده می‌شود، همراه با حجم‌های ترافیک عظیمی که شبکه‌های سازمانی و ارائه‌دهنده خدمات مدرن به‌طور روتین مدیریت می‌کنند، به معماری فوروارد‌کردن کارآمد و پیش‌محاسبه‌شده‌ای که CEF فراهم می‌کند متکی است. درک تمایز بین FIB و جدول adjacency، و دانستن چگونگی تأیید اینکه هر دو به‌درستی پر شده‌اند، دانش عیب‌یابی ضروری‌ای است که فراتر از آنچه تأیید پایه "show ip route" که پیش‌تر در این مجموعه بحث شد می‌تواند آشکار کند می‌رود.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

اصول اتوماسیون شبکه: API، فرمت‌های داده، و شبکه‌سازی مبتنی بر کنترل‌کننده

پیکربندی دستی دستگاه‌ها یک دستور در یک زمان از طریق CLI به شبکه‌های مدرن با صدها یا هزاران دستگاه مقیاس نمی‌یابد، که حرکت به‌سمت اتوماسیون برنامه‌ای را هدایت می‌کند. این مقاله تفاوت بین مدیریت سنتی CLI و اتوماسیون مبتنی‌بر-API را توضیح می‌دهد، فرمت‌های داده JSON و YAML مورد استفاده در سراسر ابزار اتوماسیون شبکه را پوشش می‌دهد، و شبکه‌سازی مبتنی بر کنترل‌کننده را به‌عنوان تغییر معماری زیربنای شبکه‌های خودکار مدرن معرفی می‌کند.

ادامه

اصول شبکه‌های بی‌سیم LAN: استانداردها، معماری، و پیکربندی پایه

شبکه‌سازی بی‌سیم یک محیط فیزیکی کاملاً متفاوت از اترنت کابلی که پیش‌تر در این مجموعه پوشش داده شد معرفی می‌کند، همراه با اصطلاحات، معماری، و ملاحظات امنیتی خودش. این مقاله تکامل استانداردهای بی‌سیم 802.11 را توضیح می‌دهد، معماری بی‌سیم متمرکز ساخته‌شده حول کنترل‌کننده‌های LAN بی‌سیم را پوشش می‌دهد، و پیکربندی یک شبکه بی‌سیم پایه با امنیت مناسب را مرور می‌کند.

ادامه

اصول کیفیت سرویس: طبقه‌بندی و اولویت‌بندی ترافیک شبکه

همه ترافیک شبکه به‌یک‌اندازه به تأخیر حساس نیستند، و رفتار یکسان با یک تماس صوتی و یک دانلود فایل بزرگ در دوره‌های ازدحام تجربه ضعیفی برای هر دو تولید می‌کند. این مقاله توضیح می‌دهد چرا QoS اهمیت دارد، طبقه‌بندی و علامت‌گذاری ترافیک با استفاده از CoS و DSCP را پوشش می‌دهد، استراتژی‌های صف‌بندی که تعیین می‌کنند کدام ترافیک اول خدمت می‌گیرد را مرور می‌کند، و پیکربندی ضروری برای اعمال سیاست‌های QoS روی یک دستگاه سیسکو را پوشش می‌دهد.

ادامه

کاهش حملات لایه ۲: DHCP Snooping و Dynamic ARP Inspection

مکانیزم‌های یادگیری-MAC و ARP که شبکه‌های اترنت را به کار می‌اندازند اساساً اعتمادی نیز هستند، و روزنه‌هایی برای حملاتی که ترافیک را بدون هرگز لمس یک فایروال هدایت‌مجدد یا رهگیری می‌کنند ایجاد می‌کنند. این مقاله توضیح می‌دهد یک سرور DHCP سرکش یا حمله ARP spoofing چگونه کار می‌کند، و DHCP Snooping و Dynamic ARP Inspection چگونه با هم کار می‌کنند تا این آسیب‌پذیری‌های لایه ۲ را ببندند را پوشش می‌دهد.

ادامه

اصول امنیت شبکه: سخت‌سازی دستگاه و امنیت پورت

پیش از لایه‌گذاری ویژگی‌های امنیتی پیشرفته، هر دستگاه شبکه به سخت‌سازی پایه برای جلوگیری از دسترسی غیرمجاز و محافظت در برابر حملات رایج لایه ۲ نیاز دارد. این مقاله ایمن‌سازی دسترسی مدیریتی دستگاه با احراز هویت قوی، رمزگذاری رمزهای عبور ذخیره‌شده، و پیکربندی امنیت پورت برای محدودکردن اینکه کدام دستگاه‌ها می‌توانند به یک پورت سوئیچ متصل شوند را پوشش می‌دهد.

ادامه

اصول IPv6: آدرس‌دهی برای نسل بعدی اینترنت

فضای آدرس محدود IPv4 یک پروتکل جانشین را اجتناب‌ناپذیر کرد، و IPv6 فضای آدرسی به‌قدری عظیم فراهم می‌کند که اتمام آدرس دیگر یک نگرانی عملی نیست. این مقاله ساختار یک آدرس IPv6، قوانین نمادگذاری کوتاه‌شده مورد استفاده برای نوشتن فشرده آن، انواع مختلف آدرس IPv6، و دستورات ضروری برای پیکربندی و تأیید IPv6 روی یک دستگاه سیسکو را توضیح می‌دهد.

ادامه