Packet sample action in tc(8) Linux Packet sample action in tc(8)

tc-sample - کنش نمونه‌برداری از بسته‌ها در کنترل ترافیک (tc)


tc ... action sample rate RATE group GROUP [ trunc SIZE ] [ index INDEX ]

tc ... action sample index INDEX

کنش sample امکان نمونه‌برداری از بسته‌های منطبق بر یک دسته‌بند (classifier) را فراهم می‌کند.

بسته‌ها به‌صورت تصادفی بر اساس پارامتر rate انتخاب می‌شوند و با استفاده از کانال عمومی netlink ماژول psample نمونه‌برداری می‌گردند. کاربر همچنین می‌تواند کوتاه‌سازی بسته (truncation) را به منظور صرفه‌جویی در ترافیک میان کاربر و هسته مشخص کند. هر نمونه شامل مقداری متادیتا درباره بسته اصلی است که با استفاده از مشخصه‌های netlink در کنار داده‌های بسته اصلی ارسال می‌شود.

کاربر می‌تواند پارامترهای کنش sample را همان‌طور که در قالب نخست در بالا نشان داده شده تعیین کند، یا مطابق قالب دوم، با استفاده از شناسه (index) یک کنش sample موجود را به‌کار گیرد.

متادیتا از طریق کانال عمومی netlink ماژول psample به برنامه‌های فضای کاربر تحویل داده می‌شود، جایی که هر نمونه شامل مشخصه‌های netlink زیر است:

شناسه رابط ورودی بسته، در صورت وجود.
شناسه رابط خروجی بسته. این فیلد در نمونه‌برداری ورودی (ingress) کاربرد ندارد.
اندازه بسته اصلی (پیش از کوتاه‌سازی / truncation).
گروه psample که بسته به آن ارسال شده است.
شماره ترتیبی بسته نمونه‌برداری‌شده. این مقدار با هر بسته نمونه‌برداری‌شده در گروه psample فعلی افزایش می‌یابد.
نرخی که بسته با آن نمونه‌برداری شده است.

نرخ نمونه‌برداری از بسته. RATE نسبت مورد انتظار میان بسته‌های دیده‌شده و بسته‌های نمونه‌برداری‌شده است. برای نمونه، مقدار RATE برابر ۱۰۰ منجر به نمونه‌برداری میانگین یک بسته از هر ۱۰۰ بسته دیده‌شده خواهد شد.
در صورت تنظیم، حداکثر اندازه بسته‌های نمونه‌برداری‌شده را تعیین می‌کند و در صورت نیاز سبب کوتاه‌سازی بسته می‌شود.
گروه psample که بسته به آن فرستاده خواهد شد. ماژول psample مفهوم گروه‌ها را تعریف می‌کند که به کاربر اجازه می‌دهد بسته‌های نمونه‌برداری‌شده خاص را در شرایط وجود چندین قانون نمونه‌برداری تطبیق دهد و بدین ترتیب تنها بسته‌های برخاسته از یک قانون مشخص را شناسایی کند.
یک شناسه یکتا برای کنش است. هنگام ایجاد یک نمونه کنش تازه، این پارامتر امکان تنظیم شناسه کنش جدید را فراهم می‌کند. هنگام استفاده از یک کنش موجود، این پارامتر امکان تعیین شناسه کنش موجود را می‌دهد. این شناسه باید یک عدد صحیح بدون علامت ۳۲ بیتی بزرگ‌تر از صفر باشد.

نمونه‌برداری از یک بسته از هر ۱۰۰ بسته جاری به درون رابط eth0 به سمت گروه psample شماره ۱۲:

tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: matchall \
     action sample rate 100 group 12 index 19

استفاده از همان نمونه کنش برای نمونه‌برداری از رابط eth1 نیز:

tc qdisc add dev eth1 handle ffff: ingress
tc filter add dev eth1 parent ffff: matchall \
     action sample index 19

tc(8)، tc-matchall(8)، psample(1)

31 Jan 2017 iproute2