tcpaccept.bt(8) System Manager's Manual tcpaccept.bt(8)

tcpaccept.bt - ردیابی اتصالات غیرفعال TCP (تابع accept()). استفاده از bpftrace/eBPF

tcpaccept.bt

این ابزار اتصالات غیرفعال (passive) پروتکل TCP را ردیابی می‌کند (برای نمونه از طریق فراخوان سیستمی accept()؛ در حالی که connect() برای اتصالات فعال است). این ابزار می‌تواند برای عیب‌یابی عمومی جهت مشاهده اتصالات جدیدی که سرور محلی می‌پذیرد، مفید باشد.

این ابزار از ردیابی پویای تابع سوکت هسته inet_csk_accept() (برگرفته از tcp_prot.accept) استفاده می‌کند، و برای تطابق با تغییرات هسته نیاز به اصلاح خواهد داشت.

این ابزار تنها فراخوانی‌های موفق accept() در پروتکل TCP را ردیابی می‌کند. تلاش‌ها برای اتصال به درگاه‌های بسته نشان داده نخواهند شد (آن‌ها را می‌توان از طریق توابع دیگر ردیابی کرد).

از آنجا که این ابزار از BPF استفاده می‌کند، تنها کاربر ریشه (root) می‌تواند از آن استفاده کند.

CONFIG_BPF و bpftrace.

ردیابی تمام اتصالات غیرفعال TCP (فراخوانی‌های accept()):
# tcpaccept.bt

زمان فراخوانی، در قالب HH:MM:SS.
شناسه فرآیند (Process ID).
نام فرآیند.
آدرس IP راه دور.
درگاه راه دور.
آدرس IP محلی.
درگاه محلی.
اندازه فعلی صف پذیرش (accept backlog) در برابر حداکثر اندازه صف پذیرش.

این ابزار تابع inet_csk_accept هسته را ردیابی کرده و برای هر رویداد یک خروجی چاپ می‌کند. نرخ این فراخوانی‌ها به برنامه سرور شما بستگی دارد. اگر یک سرور وب یا پروکسی باشد که ده‌ها هزار اتصال در ثانیه را می‌پذیرد، بار پردازشی این ابزار ممکن است قابل سنجش باشد (اگرچه همچنان بسیار کارآمدتر از ردیابی تک‌تک بسته‌ها است). اگر نرخ اتصالات کمتر از هزار در ثانیه باشد، انتظار می‌رود بار پردازشی ناچیز باشد. پیش از استفاده، این بار پردازشی را آزمایش کرده و بسنجید.

این ابزار برگرفته از bpftrace است.

https://github.com/bpftrace/bpftrace

همچنین در توزیع bpftrace به فایل همراه _examples.txt که شامل نمونه نحوه استفاده، خروجی و توضیحات این ابزار است مراجعه کنید.

این یک نسخه bpftrace از ابزار bcc با همین نام است. ابزار bcc ممکن است گزینه‌ها و سفارشی‌سازی‌های بیشتری ارائه دهد.

https://github.com/iovisor/bcc

Linux

ناپایدار - در حال توسعه.

Brendan Gregg، سازگار شده برای bpftrace توسط Dale Hamel

tcpconnect.bt(8), funccount(8), tcpdump(8)

2018-10-24 USER COMMANDS