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

شرح پروتکل
----------

روتر و سوییچ‌هایی که از نت فلو پشتیبانی می‌نمایند قادر هستند تا اطلاعات ترافیکIP را بر روی اینترفیس‌هایی که نت فلو آن فعال است را جمع‌آوری نمایند و سپس این اطلاعات را به عنوان یک رکورد نت فلو به حداقل یک جمع آورکننده نت فلو که معمولاً یک سرور برای آنالیز اطلاعات می‌باشد، ارسال نمایند.

### جریان‌های شبکه

یک جریان در شبکه از چندین طریق قابل شناسایی می‌باشد. در نسخه ۵ استاندارد سیسکو یک جریان (Flow) به صورت رشته‌ای از بسته‌های هم جهت می‌باشد که ۷ مقدار زیر در آن‌ها مشترک می‌باشد.

1. اینترفیس ورودی
2. نشانی پروتکل اینترنت (IP) مبدأ
3. نشانی پروتکل اینترنت (IP) مقصد
4. پورت مبدأ
5. پورت مقصد
6. نوع پروتکل لایه ۳
7. نوع سرویس (TOS)

قابل توجه اینکه اینترفیس خروجی، IP Nexthop یا BGP Nexthop نمی‌توانند مقادیر مناسبی جهت مشخص نمودن جریان(Flow) باشند، چون که ممکن است قبل از خاتمه جریان تغییر کنند یا توزیع بار (load-balancing) بر روی هر بسته صورت پذیرد.
این تعریف از جریان(Flow) برای IPV6 نیز قابل استفاده می‌باشد و همچنین تعاریف مشابهی نیز می‌توان برای MPLS و Ethernet می‌توان استفاده نمود.
نت فلو پیشرفته یا پیاده‌سازی IPFIX، شبیه نت فلو انعطاف‌پذیر سیسکو، به کاربر اجازه تعریف کلیدهای دیگر برای فلو می‌دهد.

### ارسال سوابق نت فلو

روتر هنگامی که مشخص کند یک جریان (Flow) پایان یافته، سوابق فلو را تولید می‌نماید. روتر با مشاهده ترافیک جدید برای فلو موجود، شمارنده aging را صفر می‌نماید و همچنین خاتمه یک نشست TCP منجر به انقضا فلو توسط روتر می‌گردد.

#### پروتکل لایه انتقال نت فلو

سوابق نت فلو توسط قرارداد داده‌نگار کاربر(UDP) ارسال می‌گردد و توسط یک کالکتور نت فلو جمع‌آوری می‌گردد. آدرس IP کالکنور نت فلو و پورت مقصد پروتکل UDP باید در روتر فرستنده تنظیم گردد. مقدار استاندارد برای پورت UDP 2055 می‌باشد ولی مقادیر دیگر مانند ۹۵۵۵ یا ۹۹۹۵ نیز به کار می‌رود.

به خاطر مسئله کارایی، روترها به‌طور معمول اثری از فلوهای ارسال شدهٔ خود نگه نمی‌دارند، بنابراین اگر یک بستهٔ نت فلو به دلیل کنترل ازدحام در شبکه یا دست خوردگی بسته دور انداخته شود، برای همیشه آن بسته را از دست خواهیم داد. پروتکل UDP روتر را از واقعه از بین رفتن بسته‌ها مطلع نمی‌نمایدو روتر به ارسال بسته‌ها ادامه می‌دهد. این یک مشکل جدی می‌باشد، مخصوصاً برای نسخه‌های V8 و V9 نت فلو که بسته‌ها و فلوها را به صورت مجموعه‌ای بزرگ در یک رکورد ذخیره می‌نماید. در صورتی که بسته‌ها را از دست بدهیم تأثیر عظیمی بر روی آمار فلوها ایجاد می‌نماید.

به همین دلیل است که پیاده‌سازی‌های جدید نت فلو از پروتکل انتقال کنترل جریان (SCTP) برای ارسال بسته‌ها استفاده می‌نمایند به‌طوری‌که در برابر از دست دادن بسته‌ها حمایت و نگهداری می‌نماید و این اطمینان را در نسخهٔ V9 نت فلو می‌دهد قبل از ارسال هر بسته نمونه‌های فبلی به مقصد رسیده‌اند. قابل توجه اینکه پروتکل TCP برای نت فلو مناسب نمی‌باشد زیرا ترتیب دقیق بسته‌های اطلاعاتی تأخیر و بافر زیادی می‌طلبد.
مشکلی که در استفاده از پروتکل SCTP وجود دارد لزوم برهم کنش میان هر کالکتور نت فلو و روترهای ارسال‌کننده می‌باشد. این ممکن است منجر به محدودیت در کارایی عملکرد شود اگر روتر بخواهد با چندین کالکتور نت فلو رفتار نماید و برعکس؛ به خصوص در حالتی که برخی از این‌ها غیرقابل دسترس باشند.

SCTP ممکن است در صورتی که باید به سمت چندین کالکتور ارسال نماید، مناسب نباشد. که برخی از آن‌ها ممکن است توسط سرورها آزمایش شوند که می‌تواند در هر لحظه پایین بیاید.UDP تکرار ساده‌ای از بسته‌های نت فلو با استفاده از network tapها ویا L2 یا L3 معکوس اجازه می‌دهد. تجهیزات ساده قادر هستند تا بسته‌های UDP نت فلو را فیلتر یا آدرس مقصد را تغییر دهند. چون ارسال‌کننده نت فلو معمولاً لینک‌های ستون فقرات شبکه را به کار می‌برند، از دست دادن بسته اغلب از آن صرف نظر می‌شود.

#### سرآیند بسته‌های نت فلو

همهٔ بسته‌های نت فلو با سرآیند نسخه وابسته به بسته شروع می‌شود و حداقل دارای مقادیر زیر می‌باشند:

* شماره نسخه (V5,V8,V9,V10)
* شماره ترتیب جهت شناسایی گم شدن بسته یا تکراری بودن آن
* مهر زمانی در لحظه ارسال بسته به عنوان uptime سیستم یا زمان مطلق
* تعداد رکوردها (V8 یا V9) یا لیست نمونه‌ها و رکوردها

### رکوردهای نت فلو

یک رکورد نت فلو می‌تواند شامل اطلاعات مختلفی دربارهٔ ترافیک در فلو موجود باشد.

نسخه ۵ نت فلو (به عنوان یکی از رایجترین نسخه‌های مورد استفاده) شامل موارد زیر می‌باشد:

* ایندکس اینترفیس ورودی استفاده شده توسط پروتکل آسان مدیریت شبکه(SNMP)
* ایندکس اینترفیس ورودی یا مقدار صفر برای بسته‌های دور ریخته شده
* مهر زمانی شروع و خاتمه فلو در چند میلی‌ثانیه از آخرین زمان بوت
* تعداد بایت‌ها و بسته‌هایی که در فلو مشاهده شده‌است.
* سرآیند لایه ۳
* برای فلوهای TCP, unionسازی پرچم‌های مشاهده شده در طول عمر فلو
* اطلاعات لایه ۳ مسیریابی:
	+ آدرس IP مستقیم گام بعدی
	+ ماسک آدرس مبدأ و مقصد (پیشوند در CIDR)
	+ نوع پروتکل آی‌سی‌ام‌پی (ICMP)
	+ پروتکل IP
	+ نوع سرویس (Type of service)
* برای فلوهای TCP، اجتماع تمام پرجم‌های TCP در طول عمر فلو
* اطلاعات مسیریابی (شبکه) لایه ۳
	+ آدرس IP مستقیم گام بعدی در طول مسیریابی
	+ ماسک مبدأ و مقصد IP

برای فلوهای ICMP، پورت مبدأ صفر می‌باشد و پورت مقصد با نوع پیام آی سی ام پی ICMP و کد آن شماره‌گذاری می‌شود. (port = ICMP-Type \* 256 + ICMP-Code)

شماره مبدأ و مقصد سیستم خودمختار (AS) می‌تواند AS مقصد یا همسایه مستقیم AS را گزارش دهد. تمام این‌ها وابسته به تنظیمات روتر می‌باشد. اما شماره AS در صورتی که این ویژگی پشتیبانی نشود صفر می‌گردد، مسیر ناشناخته باشد یا توسط BGP تبلیغ نشده یا AS یک AS محلی باشد. نمی‌توان هیچ تمایزی بین این موارد قائل شد.

نسخهٔ ۹ نت فلو شامل تمامی این فیلدها می‌باشد و می‌تواند شامل اطلاعات اضافی مانند تعویض برچسب چندپروتکلی (MPLS) و آدرس IPV6 باشد.
با آنالیز داده‌های فلو یک تصویر از ترافیک فلو و حجم ترافیک در شبکه قابل ساخت است. فرمت رکوردها در طول زمان با نسخه‌های مختلف در حال تکامل هستند.

### اینترفیس‌های نت فلو

نت فلو برای ایجاد محدودیت در میزان بار درگیر در اجزار روتر یا محدودیت در میزان رکوردهای ارسالی بر روی هر اینترفیس فعال می‌گردد.
نت فلو معمولاً تمام بسته‌های IP در اینترفیس ورودی را ضبط می‌نماید ولی دارای این قابلیت نیز می‌باشد که فیلتری بر روی بسته‌های قرار داده و این تصمیم را بگیرد که نت فلو برای کدام بسته‌های ورودی فعال باشد.

### نت فلو نمونه گزین

استاندارد نت فلو برای پردازش تمام بسته‌های رسیده بر روی اینترفیس طراحی شده‌است. با این وجود در بعضی از محیط‌ها مانند ستون فقرات(backbone) اینترنت به دلیل حجم زیاد فلوهای جاری و نیاز به پردازش اضافی برای هر پاکت، هزینه‌های بسیاری را ایجاد می‌نماید؛ بنابراین سیسکو نت فلو نمونه گزین رو بر روی محصولات سیسکو ۱۲۰۰ معرفی نموده‌است و هم‌اکنون بر روی روترهای انتهایی پیاده‌سازی شده‌است.
فرایند انتخاب بسته به پیاده‌سازی:

* در نت فلو قطعی از هر n بسته، یک نمونه انتخاب می‌گردد که در محصولات سیسکو ۱۲۰۰۰ استفاده شده‌است.
* در نت فلو تصادفی یک بسته یه صورت تصادفی از میان هر n بسته انتخاب می‌گردد که در روترهای جدید سیسکو از این پیاده‌سازی استفاده شده‌است.

نرخ نمونه برداری اغلب برای همه اینترفیس‌ها یکسان است، ولی می‌تواند برای هر اینترفیس در برخی روترها تنظیم گردد. وقتی از نت فلو نمونه گزین استفاده شود بسیاری از مقادیر مانند حجم ترافیک باید اثر نمونه‌گیری تنظیم گردد و مقدار واقعی آن تخمین زده شود.
نرخ نمونه برداری در سرآیند نسخه ۵ نت فلو برای همه اینترفیس‌ها به‌طور یکسان مشخص می‌گردد و در نسخه ۹ نت فلو در option می‌توان برای هر اینترفیس به‌طور جداگانه تنظیم نمود.

نسخه‌های نت فلو
---------------

| نسخه | توضیحات |
| --- | --- |
| v1 | اولین پیاده‌سازی، اکنون کنار گذاشته شده‌است و محدود به IPV4. |
| v2 | نسخه داخلی سیسکو، منتشر نگردید. |
| v3 | نسخه داخلی سیسکو، منتشر نگردید. |
| v4 | نسخه داخلی سیسکو، منتشر نگردید. |
| v5 | متداول‌ترین نسخه، از سال ۲۰۰۹ ارائه شده و بر روترها از برندهای گوناگون در دسترس می‌باشد و محدود به فلوهای IPV4 می‌باشد. |
| v6 | دیگر توسط سیسکو پشتیبانی نمی‌شود. |
| v7 | شبیه به نسخه ۵ یا فیلد روتر مبدأ و در سوییچ‌های سیسکو استفاده شده‌است. |
| v8 | دارای چندین نوع تجمیع، قابل استفاده برای اطلاعات رکوردهای نسخه ۵ |
| v9 | از سال ۲۰۰۹ بر روی روترهای جدید در دسترس می‌باشد و برای گزارش فلوهایی مثل IPV6،MPLS یا IPV4 ساده با nexthop BGP. |
| v10 | استاندارد شده نسخه ۹ توسط IETF. |

### معادل‌های نت فلو

بسیاری از عرضه‌کنندگان به غیر از سیسکو از تکنولوژی هم ارز در روترها و سوییچ‌های خود با نام‌های دیگر استفاده می‌نمایند. صرفاً به این جهت که نت فلو برای سیسکو یک علامت تجاری مجسوب می‌شود (با وجود اینکه تا سال ۲۰۱۲ در لیست علامات تجاری سیسکو ثبت نشده بود):

* Jflow یا cflowd برای محصولات Juniper networks
* Netstream برای محصولات ۳Com/HP
* Netstream برای محصولات Huawaei Technologies
* Cflowd برای محصولات Alcatel-Lucent
* Rflow برای محصولات Ericsson
* Appflow برای Citrix
* sFlow برای Allied Telesis

انواع نت فلو
------------

### Cisco's NetFlow Security Event Logging

در ابتدای معرفی cisco ASA 5580 بیان شده که NetFlow Securiy Event Logging از نسخهٔ ۹ نت فلو و نمونه‌های آن برای ارائه امنیت در محیط‌های با کارایی بالا مورد استفاده قرار می‌گیرد. NetFlow Securiy Event Logging در مقایسه با syslog با همان سطح از جزئیات و دانه‌دانه بودن در ورود حوادث بهتر به نظر می‌رسد.

### Netflow Monitoring Based on Standalone Probes

استفاده از Standalone NetFlow probe گزینه دیگر برای جمع‌آوری فلوها از روترها و سوییچ‌ها می‌باشد. این رویکرد بر برخی از محدودیت‌های نت فلوهای مبتنی بر روتر غلبه پیدا می‌کند. Probها به صورت واضح به لینکی متصل می‌شود و به صورت وسیله‌ای غیرفعال از پورت‌های TAP یا SPAN استفاده می‌نماید.
از لحاظ تاریخی مونیتور نت فلو بسیار راحت‌تر از پیاده‌سازی یک probe در یک روتر می‌باشد. با این حال، این رویکرد دارای معایب زیر نیز می‌باشد:

* Probها باید بر روی هر لینک مستقر شوند که این نیز خود موجب هزینه‌ها، سخت‌افزار و نگهداری اضافی می‌شود.
* Probها قادر به گزارش یک اینترفیس مشخص ورودی یا خروجی مانند نت فلو نیستند.
* PROBها ممکن است گزارشی قابل اعتماد مرتبط با فیلدهای مسیریابی مانند شماره سیستم خودمختار(AS) یا ماسک IP ندهند زیرا به سختی می‌توان از آن‌ها انتظار به کاربردن اطلاعات مسیریابی روتر را داشت.

تاریخچه
-------

نت فلوها در اصل یک تکنولوژی مبتنی بر سوییچ بسته برای روترهای سیسکو می‌باشد که در IOS 11.x در حوالی سال ۱۹۹۰ پیاده‌سازی شد. نت فلو در واقع نرم‌افزاری است که برای روترهای سیسکو ۷۲۰۰٬۷۰۰۰ و ۷۵۰۰ در جایی که در سوییچینگ سریع سیسکو بهبود ایجاد شده بود، پیاده‌سازی گردید.
ایدهٔ آن این بود که اولین بستهٔ هر فلو رکورد نت فلو را ایجاد می‌نماید. این رکورد برای پاکت‌های بعدی آن فلو تا زمان انقضای فلو مورد استفاده قرار می‌گیرد. تنها اولین بستهٔ هر فلو نیاز به جستجو در جدول مسیربابی دارد. این عمل پرهزینه‌ای در پیاده‌سازی نرم‌افزاری به‌شمار می‌آید. رکورد نت فلو شبیه رکورد route cache می‌باشد و نسخه‌های قبلی IOS همچنان نت فلو را با ip route-cache می‌شناسند.

این تکنولوژی برای شبکه‌های محلی نیز سودمند می‌باشد. بعضی از ترافیک‌ها می‌تواند توسط ACL یه محض ارزیابی اولین بسته فلو فیلتر شوند.
بزودی مشخص شد که نت فلو برای روترهای بزرگ، به خصوص روترهای backbone شبکه مناسب نمی‌باشد. آنجایی که به‌طور هم‌زمان فلوهای زیادی وجود دارد که اهمیت بعضی از آن‌ها نسبت به بقیه مانند ترافیک محلی و ترافیک‌های دارای مدت عمر کوتاه مثل DNS بیشتر می‌باشد.

این تکنولوژی سوییچینگ نت فلو در سال ۱۹۹۵ توسط سیسکو با express Forwarding چایگزین شد. این اولین بار در روترهای ۱۲۰۰ سیسکو ظاهر شد و بعدها با چایگزین شدن IOS پیشرفته در روترهای ۷۲۰۰٬۷۵۰۰ به کار گرفته شد.

در سال ۲۰۱۲ تکنولوژی‌هایی شبیه نت فلو در فایروال‌ها و نرم‌افزارهای مبتنی بر IP روترها به کار رفته‌است. برای نمونه می‌توان به فریمورک Netfilter موجود در لینوکس اشاره نمود.

جستارهای وابسته
---------------

* جریان ترافیک (شبکه‌های کامپیوتری)

منابع
-----

1. ↑  "Cisco Trademarks".
2. ↑

پیوند به بیرون
--------------

* NetFlow/FloMA: Pointers and Software Provided by SWITCH. - One of the most comprehensive list including all the open source and research works.
* FloCon - The Annual Conference put on by CERT/CC dealing with NetFlow and other flow analysis works.
* Basic NetFlow information on the Cisco Site
* RFC3334 - Policy-Based Accounting
* RFC3954 - NetFlow Version 9
* RFC3917 - Requirements for IP Flow Information Export (IPFIX)
* RFC3955 - Candidate Protocols for IP Flow Information Export (IPFIX)
* RFC5101 - Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of IP Traffic Flow Information (IPFIX)
* RFC5102 - Information Model for IP Flow Information Export
* RFC5103 - Bidirectional Flow Export Using IP Flow Information Export
* RFC5153 - IPFIX Implementation Guidelines
* RFC5470 - Architecture for IP Flow Information Export
* RFC5471 - Guidelines for IP Flow Information Export (IPFIX) Testing
* RFC5472 - IP Flow Information Export (IPFIX) Applicability
* RFC5473 - Reducing Redundancy in IP Flow Information Export (IPFIX) and Packet Sampling (PSAMP) Reports
* List of software related to flow accounting
* Using Netflow to store re-aggregated inbound and outbound flows
* AppFlow specifications and standards track discussion