MTR-PACKET(8) System Administration MTR-PACKET(8)

mtr-packet - ابزار ارسال و ردیابی بسته‌های شبکه برای MTR

mtr-packet ابزاری برای ارسال بسته‌های کاوش شبکه جهت سنجش اتصال و عملکرد شبکه است. چندین بسته کاوش شبکه را می‌توان به صورت همزمان توسط یک فرآیند منفرد از mtr-packet ارسال کرد و بسته‌های کاوش بیشتری را می‌توان توسط نمونه‌ای از mtr-packet که در حال حاضر کاوش‌های شبکه‌ای در حال ارسال دارد، تولید نمود. این ابزار برای استفاده توسط برنامه‌هایی طراحی شده است که آن را به همراه پایپ‌های یونیکس متصل به جریان‌های ورودی و خروجی استاندارد اجرا می‌کنند.

mtr-packet درخواست‌های دستور را از stdin، که هر کدام با یک نویسه خط جدید از هم جدا شده‌اند، می‌خواند و پاسخ‌های دستور را به stdout، که آن‌ها نیز با نویسه خط جدید جدا شده‌اند، ارسال می‌کند. ساختار نحوی درخواست‌ها و پاسخ‌ها یکسان است. قالب زیر استفاده می‌شود:

TOKEN COMMAND [ARGUMENT-NAME ARGUMENT-VALUE ...]

TOKEN یک مقدار عددی صحیح و یکتا است. همان مقدار به عنوان TOKEN برای پاسخ استفاده خواهد شد. این کار برای پیوند دادن پاسخ‌ها با درخواست‌ها ضروری است، زیرا دستورات ممکن است با ترتیبی متفاوت از ترتیب درخواستشان تکمیل شوند. فراخوان‌کننده mtr-packet باید همیشه از مقدار TOKEN برای تعیین اینکه کدام درخواست دستور تکمیل شده است استفاده کند.

COMMAND رشته‌ای است که نوع درخواست دستور را مشخص می‌کند. یک دستور متداول send-probe است که یک بسته کاوش شبکه را ارسال می‌کند.

رشته‌های ARGUMENT-NAME و رشته‌های ARGUMENT-VALUE همیشه به صورت جفت می‌آیند. ارائه یک ARGUMENT-NAME بدون ARGUMENT-VALUE متناظر، یک خطای نحوی است. رشته‌های معتبر ARGUMENT-NAME به COMMAND مورد استفاده بستگی دارند.

ارسال یک بسته کاوش شبکه به یک آدرس IP مشخص. باید یکی از آرگومان‌های ip-4 یا ip-6 ارائه شود. یک دستور معتبر send-probe با یکی از پاسخ‌های reply، no-reply یا ttl-expired پاسخ می‌دهد.
آرگومان‌های زیر را می‌توان استفاده کرد:
ip-4 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۴ برای کاوش.
ip-6 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۶ برای کاوش.
protocol PROTOCOL
پروتکل مورد استفاده برای کاوش شبکه. پروتکل‌های icmp، sctp، tcp و udp قابل استفاده هستند. پروتکل پیش‌فرض icmp است.
port PORT-NUMBER
پورت مقصد مورد استفاده برای کاوش‌های sctp، tcp یا udp.
local-ip-4 IP-ADDRESS
آدرس محلی پروتکل اینترنت نسخه ۴ برای استفاده هنگام ارسال کاوش‌ها.
local-ip-6 IP-ADDRESS
آدرس محلی پروتکل اینترنت نسخه ۶ برای استفاده هنگام ارسال کاوش‌ها.
local-port PORT-NUMBER
برای کاوش‌های udp، شماره پورت محلی که کاوش‌ها از آن ارسال می‌شوند.
timeout TIMEOUT-SECONDS
تعداد ثانیه‌های انتظار برای دریافت پاسخ کاوش پیش از نادیده گرفتن آن به عنوان مفقود شده و تولید پاسخ دستور no-reply.
ttl TIME-TO-LIVE
مقدار زمان بقا (time-to-live) برای هدر بسته پروتکل اینترنت که در ساخت کاوش استفاده می‌شود. این مقدار تعداد پرش‌های شبکه (hops) را مشخص می‌کند که کاوش پیش از تولید پاسخ توسط یک میزبان واسط شبکه، از میان آن‌ها عبور خواهد کرد.
size PACKET-SIZE
اندازه بسته مورد استفاده برای ارسال کاوش، به بایت، شامل هدر پروتکل اینترنت و هدر پروتکل انتقال.
bit-pattern PATTERN-VALUE
بار مفید بسته (payload) با بایت‌هایی با مقدار مشخص‌شده پر می‌شود. مقادیر الگوی معتبر در محدوده ۰ تا ۲۵۵ هستند.
tos TYPE-OF-SERVICE
در مورد IPv4، فیلد «نوع سرویس» (type of service) در هدر IP روی این مقدار تنظیم می‌شود. در مورد IPv6، فیلد «کلاس ترافیک» (traffic class) تنظیم می‌گردد.
mark ROUTING-MARK
مقدار نشان بسته برای استفاده در مسیریابی مبتنی بر علامت (mark-based routing). (فقط در لینوکس موجود است.)
بررسی پشتیبانی از یک ویژگی خاص در این نسخه از mtr-packet و در این محیط عملیاتی خاص. دستور check-support با feature-supported پاسخ خواهد داد. آرگومان feature الزامی است.
feature FEATURE-NAME
نام ویژگی درخواست‌شده.
برخی از ویژگی‌هایی که می‌توان بررسی کرد عبارتند از: send-probe، ip-4، ip-6، icmp، sctp، tcp، udp و mark. ویژگی version را می‌توان برای بازیابی نسخه mtr-packet بررسی کرد.

میزبان مقصد کاوش send-probe را دریافت کرد و پاسخ داد. آرگومان‌های reply عبارتند از:
ip-4 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۴ میزبانی که به کاوش پاسخ داد.
ip-6 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۶ میزبانی که به کاوش پاسخ داد.
round-trip-time TIME
مدت زمانی که میان ارسال کاوش و پاسخ آن سپری شد. این زمان به صورت یک عدد صحیح بر حسب میکروثانیه سپری‌شده ارائه می‌شود.
پیش از اتمام مهلت زمانی (timeout)، هیچ پاسخی برای درخواست کاوش دریافت نشد.
مقدار زمان بقا (time-to-live) برای کاوش ارسال‌شده پیش از رسیدن کاوش به مقصد مورد نظر به پایان رسید. آرگومان‌های ttl-expired عبارتند از:
ip-4 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۴ میزبانی که مقدار زمان بقا در آن به پایان رسید.
ip-6 IP-ADDRESS
آدرس پروتکل اینترنت نسخه ۶ میزبانی که مقدار زمان بقا در آن به پایان رسید.
round-trip-time TIME
مدت زمانی که میان ارسال کاوش و پاسخ آن سپری شد. این زمان به صورت یک عدد صحیح بر حسب میکروثانیه سپری‌شده ارائه می‌شود.
mpls MPLS-LABEL-LIST
فهرستی از مقادیر سوئیچینگ برچسب چندپروتکلی (MPLS) بازگردانده شده با پاسخ کاوش. اگر آرگومان mpls حاضر باشد، یک یا چند برچسب MPLS با یک فهرست جدا شده با کاما از مقادیر نمایش داده می‌شوند. مقادیر در گروه‌های چهارتایی ارائه می‌شوند. چهار مقدار نخست در فهرست مربوط به اولین برچسب MPLS، چهار مقدار بعدی مربوط به دومین برچسب MPLS و به همین ترتیب خواهند بود. مقادیر به این ترتیب ارائه می‌شوند: label، traffic-class، bottom-of-stack، ttl.
no-route-host هیچ مسیری به شبکه یا خود میزبان برای درخواست send-probe که برای رسیدن به میزبان استفاده شده بود وجود نداشت.
کاوش ارسال نشد زیرا شبکه قطع است.
کاوش ارسال نشد زیرا میزبان از کار افتاده است.
کاوش ارسال نشد زیرا در حال حاضر تعداد بسیار زیادی کاوش تعیین‌تکلیف‌نشده در حال ارسال وجود دارند.
سیستم‌عامل اجازه ارسال کاوش با گزینه‌های مشخص‌شده را نداد.
درخواست دستور حاوی آرگومان‌های نامعتبر بود.
پاسخی ارائه شده به check-support که نشان‌دهنده در دسترس بودن یک ویژگی خاص است. آرگومان ارائه‌شده عبارت است از:
support PRESENT
در اکثر موارد، مقدار PRESENT یا ok (نشان‌دهنده پشتیبانی از ویژگی) یا no (نشان‌دهنده عدم پشتیبانی از ویژگی) خواهد بود.
در صورتی که version نام ویژگی درخواست‌شده (FEATURE-NAME) باشد، نسخه mtr-packet به عنوان مقدار PRESENT ارائه می‌شود.

یک برنامه کنترل‌کننده ممکن است mtr-packet را به عنوان یک فرآیند فرزند شروع کند و دستور زیر را روی stdin صادر کند:

42 send-probe ip-4 127.0.0.1

این دستور یک کاوش شبکه را به رابط لوپ‌بک ارسال می‌کند. هنگامی که کاوش تکمیل شود، mtr-packet پاسخی مانند زیر را روی stdout ارائه خواهد داد:

42 reply ip-4 127.0.0.1 round-trip-time 126

این نشان می‌دهد که آدرس لوپ‌بک به کاوش پاسخ داد و زمان رفت و برگشت کاوش ۱۲۶ میکروثانیه بود.

به منظور ردیابی مسیر تا یک میزبان راه دور، از چندین دستور send-probe که هر یک دارای مقدار ttl متفاوتی هستند استفاده می‌شود.

11 send-probe ip-4 8.8.8.8 ttl 1
12 send-probe ip-4 8.8.8.8 ttl 2
13 send-probe ip-4 8.8.8.8 ttl 3
...

هر میزبان میانی با یک پیام ttl-expired پاسخ می‌دهد و میزبان مقصد با یک reply پاسخ خواهد داد:

11 ttl-expired ip-4 192.168.254.254 round-trip-time 1634
12 ttl-expired ip-4 184.19.243.240 round-trip-time 7609
13 ttl-expired ip-4 172.76.20.169 round-trip-time 8643
14 ttl-expired ip-4 74.40.1.101 round-trip-time 9755
15 ttl-expired ip-4 74.40.5.126 round-trip-time 10695
17 ttl-expired ip-4 108.170.245.97 round-trip-time 14077
16 ttl-expired ip-4 74.40.26.131 round-trip-time 15253
18 ttl-expired ip-4 209.85.245.101 round-trip-time 17080
19 reply ip-4 8.8.8.8 round-trip-time 17039

توجه داشته باشید که پاسخ‌ها در این مثال بدون ترتیب چاپ شده‌اند. (پاسخ به کاوش ۱۷ پیش از پاسخ به کاوش ۱۶ می‌رسد.) به همین دلیل مهم است که دستورات با مقادیر توکن یکتا ارسال شوند و از آن مقادیر توکن برای تطبیق پاسخ‌ها با دستورات مبدأ آن‌ها استفاده گردد.

یک بسته پایتون 3.x برای ارسال ناهمگام بسته‌های کاوش شبکه با استفاده از mtr-packet در دسترس است. ببینید: https://pypi.org/project/mtrpacket

برای جدیدترین نسخه، صفحه وب mtr را ببینید: http://www.bitwizard.nl/mtr

برای وصله‌ها، گزارش‌های اشکال یا درخواست‌های ویژگی، لطفاً یک گزارش موضوع (issue) در گیت‌هاب باز کنید: https://github.com/traviscross/mtr.

mtr(8), icmp(7), tcp(7), udp(7), TCP/IP Illustrated (Stevens, ISBN 0201633469).

0.96 mtr-packet