تنظیم اندازه جدول جریان در روترهای Juniper

بیایید این مشکل را در یک روتر 3 بعدی جهانی لبه مجازی Juniper MX نشان دهیم که دارای Junos 18.2R1.9 است که برای صادرات پیام های IPFIX به صورت زیر پیکربندی شده است:
chassis {
fpc 0 {
sampling-instance noction-nfa;
}
}
interfaces {
ge-0/0/0 {
description "Monitored interface";
unit 0 {
family inet {
sampling {
input;
output;
}
address 192.168.1.1/24;
}
}
}
}
forwarding-options {
sampling {
instance {
noction-nfa {
input {
rate 1024;
}
family inet {
output {
flow-server 192.168.2.100 {
port 2055;
version-ipfix {
template {
ipfix-templatev4;
}
}
}
inline-jflow {
source-address 192.168.2.1;
}
}
}
}
}
}
}
services {
flow-monitoring {
version-ipfix {
template ipfix-templatev4 {
flow-active-timeout 60;
flow-inactive-timeout 60;
template-refresh-rate {
seconds 60;
}
ipv4-template;
}
}
}
}
افسانه:
192.168.2.100 – آدرس IP سرور NFA
192.168.2.1 – آدرس IP منبع جریان بسته (آدرس IP روتر)
با استفاده از دستور زیر می توانیم اندازه جداول جریان را بررسی کنیم:
root> show services accounting status inline-jflow fpc-slot 0
اندازه جریان پیش فرض برای جریان های IPv4 1024 و برای جریان های IPv6 512 است (شکل 1).
شکل 1 – بررسی اندازه جداول جریان Juniper vMX Router
بدیهی است که اندازه هر دو جدول جریان بسیار کوچک است، بنابراین خطر بسیار زیادی وجود دارد که بتوانیم به طور معمول جداول را سرریز کنیم. در سناریویی که در آن یک حمله DoS توزیع شده در مقیاس بزرگ (DDoS) رخ می دهد، 100٪ ایمن می شود. یک جریان برای هر بسته ای که از نقطه نظارت عبور می کند ایجاد می شود، بنابراین تعداد جریان ها به طور چشمگیری افزایش می یابد. با این حال، جایی در جدول وجود ندارد. جریان کاهش می یابد و تعداد خطاها افزایش می یابد.
انجام یک حمله DDoS بر روی یک قربانی و سیل کردن جداول جریان باقی مانده در پیکربندی پیشفرض خود در روتر Juniper vMX به سادگی اجرای دستور hping است:
$ sudo hping3 -S --flood -V -p 22 T.T.T.T --rand-source
– S: بسته های SYN را نشان می دهد.
— سیل: آتش به دلخواه، پاسخ ها نادیده گرفته می شوند (بنابراین پاسخ ها نمایش داده نمی شوند) و بسته ها در سریع ترین زمان ممکن ارسال می شوند.
-V: پرحرفی.
-p 22: پورت دیمون SSH مقصد
TTTT: IP هدف
–rand-source: آدرس منبع تصادفی برای پنهان کردن حمله
حالا بیایید تعداد جریان های فعال را با دستور بررسی کنیم:
root> show services accounting flow inline-jflow fpc-slot 0
تعداد جریان های فعال در جدول جریان 1024 است که به “حداکثر تعداد جریان های IPv4” می رسد (شکل 2). تا زمانی که یک جریان موجود در جدول استریم به جمعآورنده جریان صادر نشود، جریان جدیدی ایجاد نمیشود و فضای کش را آزاد میکند.

شکل 2 – جریان های فعال در جدول جریان IPv4 در طول یک حمله DoS
| توجه داشته باشید: جدول استریم و کش استریم معنی یکسانی دارند. |
هنگامی که DDoS متوقف می شود، اگر ترافیک شبکه وجود نداشته باشد، می توان تعداد جریان های فعال را به 0 کاهش داد (شکل 3).

شکل 3 – شمارش جریان های فعال پس از پایان حمله DoS
با این حال، ما به حداکثر تعداد جریان IPv4 رسیدهایم. در نتیجه، 15164 خطای ایجاد جریان IPv4 توسط دستور گزارش شده است:
root> show services accounting errors inline-jflow fpc-slot 0

شکل 4 – خطاهای ایجاد جریان IPv4
جریانها به جمعآورنده جریان صادر نمیشوند و مقدار دادههای نشاندادهشده توسط NFA با دادههای واقعی مطابقت ندارد.
1. اندازه گیری دستی جداول جریان IPv4 و IPv6
ما می توانیم به صورت دستی اندازه جدول جریان IPv4 و IPv6 را در واحدهای 256 هزار ورودی پیکربندی کنیم. با شروع با Junos OS Release 16.1R1 و 15.1F2، نرم افزار به طور پیش فرض ورودی های 1K را برای جداول جریان IPv4 اختصاص می دهد. برای تخصیص یازده جدول جریان 256K IPv4 و چهار جدول جریان 256k IPv6، دستور را وارد کنید:
root# set chassis fpc 0 inline-services flow-table-size ipv4-flow-table-size 11 root# set chassis fpc 0 inline-services flow-table-size ipv6-flow-table-size 4
این جریان های 11*256K را برای IPv4 و جریان های 4*256K را برای IPv6 فراهم می کند (شکل 5).
شکل 5 – جداول جریان IPv4 و IPv6 با اندازه دستی
| توجه داشته باشید: حداکثر اندازه جدول جریان پشتیبانی شده برای ترکیبی از IPv4 و IPv6 15 است. برای مثال، می توانید اندازه جدول جریان IPv4 را 10 و اندازه IPv6 را 5 تنظیم کنید. |

شکل 6 – اندازه جدول جریان IPv4 و IPv6 پس از اندازه گیری دستی
قبل از Junos OS Release 16.1R1 و 15.1F2، هرگونه تغییر در اندازه جدول جریان پیکربندی شده باعث راه اندازی مجدد خودکار FPC می شود. بنابراین، به شدت توصیه می شود که این دستور را در یک پنجره تعمیر و نگهداری اجرا کنید.
2. اندازه جداول برای جریان انعطاف پذیر
سری MX از گزینه اندازه گیری جریان انعطاف پذیر پشتیبانی می کند که نیازی به اندازه دستی بین جداول IPv4 و IPv6 ندارد. برای آزمایش این ویژگی، پیکربندی قبلی را حذف کرده و شمارنده ها را بازنشانی کردیم:
root> clear services accounting statistics inline-jflow fpc-slot 0
اکنون میتوانیم توزیع اندازه انعطافپذیر جداول جریان را برای همه خانوادههای اولیه پیکربندی کنیم.
root# set chassis fpc 0 inline-services flex-flow-sizing
شکل 7 تأیید می کند که پارامتر Flex Flow Sizing فعال است و اندازه های جدید جدول جریان به طور خودکار برای همه خانواده های پروتکل تنظیم می شوند.

شکل 7 – فعال کردن اندازه Flex Flow برای همه خانواده های پروتو
| توجه داشته باشید: برای تغییر از پیکربندی انعطاف پذیر به خانواده، نیازی به راه اندازی مجدد fpc نداریم. |
نتیجه
این آموزش نکات و نکات مربوط به تنظیم اندازه جدول جریان برای IPv4 و IPv6 در روترهای Juniper را مورد بحث قرار می دهد. بررسی تنظیمات اندازه جدول جریان در دستگاههای Juniper به احتمال زیاد اولین قدمی است که باید هنگام مشاهده مشکلات عدم تطابق ترافیک در NFA بردارید.




