.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "bpftool-net" "8" "" "" .SH "نام (NAME)" bpftool-net \- ابزاری برای بازرسی و مدیریت برنامه‌های BPF متصل به شبکه .SH "خلاصه دستور (SYNOPSIS)" .sp \fBbpftool\fP [\fIOPTIONS\fP] \fBnet\fP \fICOMMAND\fP .sp \fIOPTIONS\fP := { { \fB\-j\fP | \fB\-\-json\fP } [{ \fB\-p\fP | \fB\-\-pretty\fP }] | { \fB\-d\fP | \fB\-\-debug\fP } } .sp \fICOMMANDS\fP := { \fBshow\fP | \fBlist\fP | \fBattach\fP | \fBdetach\fP | \fBhelp\fP } .SH "دستورات NET (NET COMMANDS)" .nf \fBbpftool\fP \fBnet\fP { \fBshow\fP | \fBlist\fP } [ \fBdev\fP \fINAME\fP ] \fBbpftool\fP \fBnet attach\fP \fIATTACH_TYPE\fP \fIPROG\fP \fBdev\fP \fINAME\fP [ \fBoverwrite\fP | \fBprepend\fP ] \fBbpftool\fP \fBnet detach\fP \fIATTACH_TYPE\fP \fBdev\fP \fINAME\fP \fBbpftool\fP \fBnet help\fP \fIPROG\fP := { \fBid\fP \fIPROG_ID\fP | \fBpinned\fP \fIFILE\fP | \fBtag\fP \fIPROG_TAG\fP | \fBname\fP \fIPROG_NAME\fP } \fIATTACH_TYPE\fP := { \fBxdp\fP | \fBxdpgeneric\fP | \fBxdpdrv\fP | \fBxdpoffload\fP | \fBtcx_ingress\fP | \fBtcx_egress\fP } .fi .sp .SH "توضیحات (DESCRIPTION)" .INDENT 0.0 .TP .B bpftool net { show | list } [ dev \fINAME\fP ] فهرست کردن اتصالات برنامه‌های bpf در زیرسیستم شبکه هسته. .sp در حال حاضر، اتصالات xdp درایور دستگاه، tcx، netkit و اتصالات قدیمی کلاسیفایر/اکشن tc (از نوع old\-style tc classifier/action)، flow_dissector و همچنین اتصالات netfilter پیاده‌سازی شده‌اند؛ یعنی برای انواع برنامه‌های \fBBPF_PROG_TYPE_XDP\fP، \fBBPF_PROG_TYPE_SCHED_CLS\fP، \fBBPF_PROG_TYPE_SCHED_ACT\fP، \fBBPF_PROG_TYPE_FLOW_DISSECTOR\fP و \fBBPF_PROG_TYPE_NETFILTER\fP\&. .sp برای برنامه‌های متصل به یک cgroup خاص، مانند \fBBPF_PROG_TYPE_CGROUP_SKB\fP، \fBBPF_PROG_TYPE_CGROUP_SOCK\fP، \fBBPF_PROG_TYPE_SOCK_OPS\fP و \fBBPF_PROG_TYPE_CGROUP_SOCK_ADDR\fP، کاربران می‌توانند از \fBbpftool cgroup\fP برای مشاهده و استخراج اتصالات cgroup استفاده کنند. برای برنامه‌های bpf از نوع sk_{filter, skb, msg, reuseport} و lwt/seg6، کاربران باید به ابزارهای دیگر، مانند iproute2 مراجعه کنند. .sp خروجی فعلی با تمام اتصالات برنامه‌های xdp آغاز می‌شود، به دنبال آن تمام اتصالات tcx، netkit، سپس اتصالات برنامه‌های bpf کلاس/qdisc مربوط به tc، سپس flow_dissector و در نهایت برنامه‌های netfilter قرار می‌گیرند. هر دو گروه برنامه‌های xdp و برنامه‌های tcx/netkit/tc بر اساس شماره ifindex مرتب می‌شوند. اگر چندین برنامه bpf از طریق \fBtc\fP به یک دستگاه شبکه متصل شده باشند، ترتیب آن‌ها ابتدا تمام برنامه‌های bpf متصل به tcx، netkit، سپس کلاس‌های tc، سپس تمامی برنامه‌های bpf متصل به qdiscهای غیر clsact و در نهایت تمامی برنامه‌های bpf متصل به root و qdiscهای clsact خواهد بود. .TP .B bpftool net attach \fIATTACH_TYPE\fP \fIPROG\fP dev \fINAME\fP [ overwrite | prepend ] متصل کردن برنامه bpf مشخص‌شده با \fIPROG\fP به رابط شبکه \fINAME\fP با نوع مشخص‌شده توسط \fIATTACH_TYPE\fP\&. .sp \fIATTACH_TYPE\fP می‌تواند یکی از موارد زیر باشد: .br \fBxdp\fP \- امتحان XDP بومی (native) و در صورت عدم پشتیبانی درایور کارت شبکه (NIC)، بازگشت به XDP عمومی (generic)؛ .br \fBxdpgeneric\fP \- نوع Generic XDP؛ در قلاب XDP عمومی هنگامی که بسته از قبل به صورت skb وارد مسیر دریافت شده است اجرا می‌شود؛ .br \fBxdpdrv\fP \- نوع Native XDP؛ در اولین نقطه ممکن در مسیر دریافت درایور اجرا می‌شود؛ .br \fBxdpoffload\fP \- نوع Offload XDP؛ مستقیماً روی کارت شبکه (NIC) در زمان دریافت هر بسته اجرا می‌شود؛ .br \fBtcx_ingress\fP \- نوع Ingress TCX؛ روی ترافیک ورودی شبکه اجرا می‌شود؛ .br \fBtcx_egress\fP \- نوع Egress TCX؛ روی ترافیک خروجی شبکه اجرا می‌شود؛ .sp برای انواع اتصالات مرتبط با XDP (\fBxdp\fP، \fBxdpgeneric\fP، \fBxdpdrv\fP، \fBxdpoffload\fP)، گزینه \fBoverwrite\fP می‌تواند برای جایگزینی برنامه‌ای از bpf که قبلاً متصل شده است استفاده شود. .sp برای انواع اتصال \fBtcx_ingress\fP و \fBtcx_egress\fP، گزینه \fBprepend\fP می‌تواند برای متصل کردن برنامه در ابتدای زنجیره به جای انتهای آن استفاده شود. .TP .B bpftool net detach \fIATTACH_TYPE\fP dev \fINAME\fP جدا کردن برنامه bpf متصل به رابط شبکه \fINAME\fP با نوع مشخص‌شده توسط \fIATTACH_TYPE\fP\&. برای جدا کردن برنامه bpf، باید همان \fIATTACH_TYPE\fP که قبلاً برای اتصال استفاده شده بود مشخص شود. .TP .B bpftool net help چاپ پیام راهنمای کوتاه. .UNINDENT .SH "گزینه‌ها (OPTIONS)" .INDENT 0.0 .TP .B \-h\fP,\fB \-\-help چاپ پیام راهنمای کوتاه (مشابه .BR "bpftool help" ). .TP .B \-V\fP,\fB \-\-version چاپ شماره نسخه bpftool (مشابه .BR "bpftool version" )، شماره نسخه libbpf در حال استفاده، و قابلیت‌های اختیاری که هنگام کامپایل bpftool گنجانده شده‌اند. قابلیت‌های اختیاری شامل پیوند با LLVM یا libbfd برای ارائه دیزاسمبلر برای برنامه‌های JIT شده .RB ( "bpftool prog dump jited" ) و استفاده از اسکلت‌های BPF (برخی ویژگی‌ها مانند .B bpftool prog profile یا نمایش pidهای مرتبط با اشیاء BPF ممکن است به آن متکی باشند) می‌شود. .TP .B \-j\fP,\fB \-\-json تولید خروجی JSON. برای دستوراتی که نمی‌توانند JSON تولید کنند، این گزینه هیچ تأثیری ندارد. .TP .B \-p\fP,\fB \-\-pretty تولید خروجی JSON خوانا برای انسان. مستلزم .B \-j است. .TP .B \-d\fP,\fB \-\-debug چاپ تمام لاگ‌های موجود، حتی اطلاعات در سطح دیباگ (debug\-level). این شامل لاگ‌های libbpf و همچنین لاگ‌های اعتبارسنج (verifier) در هنگام تلاش برای بارگذاری برنامه‌ها است. .UNINDENT .SH "مثال‌ها (EXAMPLES)" .nf \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX xdp: eth0(2) driver id 198 tc: eth0(2) htb name prefix_matcher.o:[cls_prefix_matcher_htb] id 111727 act [] eth0(2) clsact/ingress fbflow_icmp id 130246 act [] eth0(2) clsact/egress prefix_matcher.o:[cls_prefix_matcher_clsact] id 111726 eth0(2) clsact/egress cls_fg_dscp id 108619 act [] eth0(2) clsact/egress fbflow_egress id 130245 .EE .UNINDENT .UNINDENT .nf \fB# bpftool \-jp net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX [{ \(dqxdp\(dq: [{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqmode\(dq: \(dqdriver\(dq, \(dqid\(dq: 198 } ], \(dqtc\(dq: [{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqkind\(dq: \(dqhtb\(dq, \(dqname\(dq: \(dqprefix_matcher.o:[cls_prefix_matcher_htb]\(dq, \(dqid\(dq: 111727, \(dqact\(dq: [] },{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqkind\(dq: \(dqclsact/ingress\(dq, \(dqname\(dq: \(dqfbflow_icmp\(dq, \(dqid\(dq: 130246, \(dqact\(dq: [] },{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqkind\(dq: \(dqclsact/egress\(dq, \(dqname\(dq: \(dqprefix_matcher.o:[cls_prefix_matcher_clsact]\(dq, \(dqid\(dq: 111726, },{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqkind\(dq: \(dqclsact/egress\(dq, \(dqname\(dq: \(dqcls_fg_dscp\(dq, \(dqid\(dq: 108619, \(dqact\(dq: [] },{ \(dqdevname\(dq: \(dqeth0\(dq, \(dqifindex\(dq: 2, \(dqkind\(dq: \(dqclsact/egress\(dq, \(dqname\(dq: \(dqfbflow_egress\(dq, \(dqid\(dq: 130245, } ] } ] .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach xdpdrv id 16 dev enp6s0np0\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX xdp: enp6s0np0(4) driver id 16 .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach xdpdrv id 16 dev enp6s0np0\fP \fB# bpftool net attach xdpdrv id 20 dev enp6s0np0 overwrite\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX xdp: enp6s0np0(4) driver id 20 .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach xdpdrv id 16 dev enp6s0np0\fP \fB# bpftool net detach xdpdrv dev enp6s0np0\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX xdp: .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach tcx_ingress name tc_prog dev lo\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX tc: lo(1) tcx/ingress tc_prog prog_id 29 .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach tcx_ingress name tc_prog2 dev lo prepend\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX tc: lo(1) tcx/ingress tc_prog2 prog_id 30 lo(1) tcx/ingress tc_prog prog_id 29 .EE .UNINDENT .UNINDENT .nf \fB# bpftool net attach tcx_ingress name tc_prog dev lo\fP \fB# bpftool net detach tcx_ingress dev lo\fP \fB# bpftool net\fP .fi .sp .INDENT 0.0 .INDENT 3.5 .sp .EX tc: .EE .UNINDENT .UNINDENT .SH "همچنین ببینید (SEE ALSO)" .sp \fBbpf\fP(2), \fBbpf\-helpers\fP(7), \fBbpftool\fP(8), \fBbpftool\-btf\fP(8), \fBbpftool\-cgroup\fP(8), \fBbpftool\-feature\fP(8), \fBbpftool\-gen\fP(8), \fBbpftool\-iter\fP(8), \fBbpftool\-link\fP(8), \fBbpftool\-map\fP(8), \fBbpftool\-perf\fP(8), \fBbpftool\-prog\fP(8), \fBbpftool\-struct_ops\fP(8), \fBbpftool\-token\fP(8) .\" End of generated man page.