پرش به مطلب اصلی

PingClient

اطلاعیهٔ نسخهٔ ۲: این صفحه جایگزین مستندات قدیمی Ping wire v1 است. گزینه‌ها و راهبردهای قدیمی مانند strategy، wrap-*/warp-*، source، dest، check-identifier، xor-byte و roundup-size دیگر معتبر نیستند و برنامه آن‌ها را با خطای مهاجرت رد می‌کند.

PingClient در نسخهٔ ۲ یک packet کامل IPv4 را در یک ICMP Echo Request واقعی حمل می‌کند. هر سمت فقط با تنظیم send-replies: true برای درخواست دریافتی Echo Reply با نوع 0 و با identifier، sequence number و دادهٔ دقیق همان درخواست می‌فرستد. پیش‌فرض این گزینه false است؛ در این حالت clone، کپی و ارسال Reply انجام نمی‌شود. این گزینه در دو سمت مستقل تنظیم می‌شود. رهگیری درخواست، جلوگیری از replay و مصرف Reply‌های منطبق حتی با غیرفعال‌بودن ارسال Reply ادامه دارد. دادهٔ داخلی یک‌بار تحویل داده می‌شود و منتظر Reply نمی‌ماند؛ اگر ارسال Reply فعال باشد، Reply پیش از تحویل داده فرستاده می‌شود. دادهٔ جدید جهت مخالف همیشه در یک Echo Request جدید حمل می‌شود.

درخواست‌های در انتظار و replay در یک tracker مشترک و synchronized برای کل node پیگیری می‌شوند؛ تطبیق درخواست و پاسخ به WID مربوط به packet line وابسته نیست. هر ring حداکثر ۱۰۲۴ ورودی دارد.

تنظیمات معتبر فقط این‌ها هستند:

گزینهالزامیپیش‌فرض
local-ipv4بله—
peer-ipv4بله—
send-repliesخیرfalse
identifierخیر"random"
sequence-startخیر1
ttlخیر64
tosخیر0

send-replies باید یک مقدار boolean باشد؛ حذف آن همان رفتار false را دارد. مقدار identifier می‌تواند "random" یا عدد صحیح 0..65535 باشد و مقدار تصادفی پیش‌فرض صفر نیست. sequence-start عدد صحیح 0..65535 و ttl و tos عدد صحیح 0..255 هستند. درخواست تکراری داده را دوباره تحویل نمی‌دهد و فقط در صورت فعال‌بودن این گزینه Reply دیگری دریافت می‌کند.

حداکثر اندازهٔ packet داخلی ۱۴۷۲ بایت است و سربار carrier ۲۸ بایت است. IPv4 داخلیِ fragmented معتبر است، ولی carrier بیرونی fragmented، IPv6، packet malformed یا checksum نامعتبر رد می‌شود. برای توضیح کامل و مثال config فعلی، به مرجع انگلیسی PingClient مراجعه کنید.

خطاهای رد packet با سطح ERROR و علت مشخص ثبت می‌شوند. پیام شامل اندازهٔ packet، حداکثر اندازهٔ packet داخلی و carrier، سربار و headroom موجود و مورد نیاز است. محدودکنندهٔ پنج‌ثانیه‌ای بین همهٔ علت‌های خطا، جهت‌ها و worker‌های هر node مشترک است؛ همهٔ packet‌های ردشده پیام جداگانه تولید نمی‌کنند.

پس از بازکردن درخواست Echo، packet داخلی روی همان worker دریافت‌کننده ارسال می‌شود. پاسخ Echo، بررسی replay و تطبیق درخواست نیز روی همان worker انجام می‌شوند؛ tracker مشترک به affinity جریان TCP/UDP نیاز ندارد. fragmentهای داخلی با حفظ بایت‌ها و مرزهایشان مستقیم ارسال می‌شوند و منتظر fragment اول نمی‌مانند. اگر مصرف‌کنندهٔ بعدی stateful باشد، خودش مالکیت worker جریان را برقرار می‌کند.

متادیتای node​

متادیتای برگرفته از کد منبع:

ویژگیمقدار
version2
node flagskNodeFlagNone
can_have_prevtrue
can_have_nexttrue
layer_groupkNodeLayer3
layer_group_prev_nodekNodeLayer3
layer_group_next_nodekNodeLayer3
required_padding_left28 بایت
وضعیت lineندارد