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

tcpdrop.bt - ردیابی بسته‌های دور ریخته‌شده TCP در سطح هسته به همراه جزئیات با bpftrace/eBPF لینوکس

tcpdrop.bt

این ابزار بسته‌ها یا قطعه‌های (segment) پروتکل TCP را که توسط هسته دور ریخته (drop) شده‌اند ردیابی می‌کند و جزئیات سرآیندهای IP و TCP، وضعیت سوکت و ردپای پشته (stack trace) هسته را نمایش می‌دهد. این ابزار برای اشکال‌زدایی مواردی با میزان بالای ریزش بسته در هسته که می‌تواند موجب ارسال‌های مجدد مبتنی بر تایمر و مشکلات کارایی شود، کاربرد دارد.

این ابزار از طریق ردیابی پویای تابع هسته tcp_drop() کار می‌کند که نیازمند نسخه جدیدی از هسته است.

این ابزار به ipv4 محدود است و نمی‌تواند tcpflags را تجزیه کند، زیرا bpftrace در حال حاضر قادر نیست بافرهای سوکت را مانند bcc تجزیه کند.

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

CONFIG_BPF و bpftrace.

ردیابی تمامی بسته‌های دور ریخته‌شده TCP:
# tcpdrop.bt

زمان فراخوانی، در قالب HH:MM:SS.
شناسه فرآیندی که هنگام دور انداختن بسته روی پردازنده قرار داشته است. این فیلد ممکن است ارتباطی با رخداد نداشته باشد، چرا که دور انداختن بسته‌ها می‌تواند هنگام وقفه دریافت (receive interrupt) رخ دهد و به PID فرآیندی که دچار وقفه شده نامربوط باشد.
نام فرآیند
نشانی IP مبدأ و درگاه TCP مبدأ.
نشانی IP مقصد و درگاه TCP مقصد.
وضعیت نشست TCP (مانند "ESTABLISHED" و غیره).

این ابزار تابع tcp_drop() هسته را ردیابی می‌کند که انتظار می‌رود بسامد پایینی داشته باشد، بنابراین بار پردازشی این ابزار باید ناچیز باشد.

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

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

https://github.com/bpftrace/bpftrace

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

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

https://github.com/iovisor/bcc

Linux

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

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

tcplife.bt(8), tcpaccept.bt(8), tcpconnect.bt(8), tcptop(8)

2018-11-24 USER COMMANDS