what-is-netflow

پروتکل NetFlow

برای اینکه به درک کاملی از پروتکل NetFlow  و کاربرد آن در مانیتورینگ شبکه دست یابیم، در ابتدا باید شناخت دقیقی از مفهوم Flow داشته باشیم.

معنای Flow در این بستر چیست؟

Flow   دنباله‌ای از بسته‌های (packets) اطلاعاتی است که خصوصیات یکسانی دارند. هنگامی که یک فیلم را به طور آنلاین در اینترنت مشاهده می‌کنید، بسته‌های اطلاعات از سرور دربردارندۀ آن فیلم به سمت کامپیوتر شخصی شما فرستاده می‌شود. این بسته‌ها یک flow را ایجاد می‌کنند؛ چرا که همگی به یک دیالوگ مشخص میان مبدا و مقصد، تعلق دارند.   FLOW   جریانی یک‌طرفه از بسته‌ها را میان یک مبدا و مقصد مشخص تعیین می‌کند که برای هر دو آنها در لایه شبکه آدرس Ip و در لایه انتقال، پورت نامبرهای مقصد و مبدا تعریف شده است.
با گردآوری و تحلیل داده‌های Flow ، از جزییاتی دربارۀ چگونگی استفاده از شبکه آگاه خواهیم شد. برای مثال، تحلیل Flow در مسائلی نظیر عیب‌یابی شبکه و تعیین نقاط پرمصرف از لحاظ پهنای‌ باند سودمند است. همچنین پیگیری اینکه با چه آدرس IP‌هایی خارح از شبکه خود تبادل داده می‌کنید.

پروتکل NetFlow

پروتکل  NetFlow استانداردی رایج برای آمارگیری از flow ها در شبکه است که توسط شرکت سیسکو ایجاد شده است. این پروتکل برای جمع‌آوری و ثبت همه‌ی ترافیک‌هایی کاربرد دارد که از یک روتر یا سوییچ سیسکو خارج و وارد می‌شوند با فرض اینکه بر روی آن دستگاه پروتکل NetFlow  تنظیم شده باشد. جمع‌آوری ترافیک‌های شبکه از طریق یک برنامه با قابلیت Netflow analyzer  یا Netflow collector ممکن می‌شود و در نهایت رکوردهای Flow  به فرمتی درمی‌آیند که مدیران و مهندسین شبکه تحلیل‌های بعدی را بر روی آنها انجام دهند.
با بهره‌مندی از پروتکل NetFlow ، به هنگام عیب‌یابی برای کدی اتصالات شبکه،‌ آگاهی از اینکه ترافیک از کجا می‌آید و به کجا می‌رود امکان کند وکاو دقیقی بر ترافیک شبکه را به شما خواهد داد. خود پروتکل امکان تحلیل ترافیک را ندارد اما همانطور که پیشتر گفته شد، هنگامی که به درستی کانفیگ شود، ترافیک را به collector یا Analyzer ها می‌فرستد.

پروتکل NetFlow از عناصر زیر تشکیل می‌شود:

عنصر IP Flow

یک IP flow گروهی از بسته‌ها به همراه مجموعه‌ای از ویژگی‌های IP packet  مشخص است و هر بسته که از یک سوییچ یا روتر عبور می‌کند، شامل اطلاعات زیر است:
• آدرس IP مبدا
• آدرس IP مقصد
• پورت مبدا
• پورت مقصد
• نوع سرویس
• نوع پروتکل لایه ۳
• Interface روتر یا سوییچ

این هفت فیلد کلیدی یک Flow واحد را تعریف می‌کنند. اگر بسته‌ای یک فیلد کلیدی داشته باشد که از بسته دیگری متفاوت باشد، این بسته متعلق به Flow دیگری در نظر گرفته می‌شود. هر Flow در Netflow cache ذخیره می‌شود.

عنصر NetFlow cache

پایگاه‌ داده‌ای خلاصه و مفید است که اطلاعات IP Flow را ذخیره می‌کند. پروتکل NetFlow با ایجاد یک سطر flow)  (record  برای هر Flow در NetFlow cache  فعال عمل می‌کند.

عنصر NetFlow Export

یا همان مکانیزم انتقال – داده‌های NetFlow را برای گزارش‌گیری و آنالیز به collector می‌فرستد.

چگونگی عملکرد پروتکل NetFlow

برای استفاده از پروتکل NetFlow  به سه مولفه‌ی زیر نیاز است:
۱- Flow exporter: یک دستگاه یا appliance (اغلب روتر یا فایروال) است که برای جمع‌آوری اطلاعات flow و صدور آن به flow collector  به کار می‌رود.
۲- Flow collector: یک appliance یا سرور است که اطلاعات flow صادر شده را دریافت می‌کند.
۳- Flow analyzer: یک application است که اطلاعات Flow جمع‌آوری شده توسط flow collector را آنالیز می‌کند.

اجزای پروتکل NetFlow
اجزای پروتکل NetFlow

با ارسال یک بسته در شبکه، تولید داده‌های NetFlow آغاز می‌شود. در ابتدا ۵ فیلد از سرآیند بسته (۵tuple packet) که شامل آدرس/ پورت مبدا، آدرس/ پورت مقصد و نوع پروتکل می‌شود، توسط روتر یا سوییج بررسی می‌شود. اگر اطلاعات packet معینی در جدولِ flow های اخیرا دیده شده موجود بود، flow cache فراخوانی می‌شود.
اگر این ۵-tuple  در جدول وجود داشته باشد، آن سطر از cache به‌روزرسانی می‌شود: packet count  یک واحد افزایش می‌یابد، byte count  به اندازه packet length افزایش می‌یابد و … . اگر این flow در cache وجود نداشته باشد، به این معناست که packet پیش از این دیده نشده است، بنابراین یک سطر جدید به جدول اضافه می‌شود.
البته، هدف کلیِ NetFlow صدور اطلاعات به یک collector جهت ذخیره‌سازی یا تحلیل آن است. به این خاطر، اطلاعات Flow  به صورت دوره‌ای بنابر فرآیند انقضای flow به Flow collector صادر می‌شود.
این flow های منقضی ‌شده در NetFlow export گروه‌بندی می‌شوند تا از طریق دستگاه‌هایی با قابلیت فعالِ NetFlow صادر شوند. یک رکورد مرتبط با flow ، تحت یکی از دو سناریوی زیر منقضی می‌شود:
:Inactive timeout اگر flow غیرفعال باشد، به این معنا که برای مدت زمانی هیچ بسته‌ای از آن نوع مشاهده نشود – این فرض گرفته می‌شود که flow به پایان رسیده است و سطر مربوط به آن در جدول منقضی می‌شود. معمولا timeframe در نظر گرفته برای عدم فعالیت، برابر با ۱۵ ثانیه است.
Active timeout: اگر برای مدت زمانی معین، Flow فعال باقی بماند، آن Flow منقضی می‌شود. زمان پیش فرض برای active timeout  بر روی اکثر پلتفرم‌ها برابر با ۳۰ دقیقه است.
معیار :Active timeout ممکن است غیرمنطقی به نظر آید اما این timeout وجود دارد تا اطلاعات مرتبط با long-running flow ، زودتر به دست flow analyzer برسد Long Flow .ها حجم بزرگی از داده را حمل می‌کنند و تنها هنگامی که به اتمام برسند، از وجود آنها آگاه می‌شویم. یک forever-running flow هیچ‌گاه منقضی نمی‌شود بنابراین شناسایی نمی‌شوند.

Flexible NetFlow در برابر Tradistional NetFlow

پروتکل Flexible Netflow بر مبنای Netflow نسخه v9 ارائه شد. این پروتکل عملکردهایی اضافی را برای شما به ارمغان می‌آورد که امکان استخراج اطلاعات بیشتری را میسر خواهد ساخت، اطلاعاتی غنی‌تر و با جزییاتی بیشتر نسبت به Netflow سنتی V5) و (V6 در Flexible Netflow از آدرس‌های IPv6 و از NBAR پشتیبانی می‌شود و application های مختلفی را همزمان ردیابی می‌کند.
Flexible Netflow به مدیر شبکه امکان خواهد داد که چندین flow cache یا دیتابیس از اطلاعات را برای ردیابی ایجاد کند. درحالی که Netflow تنها یک cache دارد و همه اپلیکیشن‌ها از اطلاعات cache یکسانی استفاده می‌کنند. Flexible Netflow  مجموعه‌ای از اطلاعات امنیتی خاص را در یک flow cache واحد و آنالیزهای ترافیکی را در دیگری فراهم می‌کند. درنتیجه هر Netflow cache برای سوژه‌های متفاوتی سرویس می‌دهند. این اطلاعات به صورت مجزا ردیابی می‌شوند و نتایج به دو collector مختلف فرستاده می‌شود.