tcpdump بستههای 64 KB را نشان میدهد: offload و نقطه ثبت
یک بسته غولآسا در ثبت روی میزبان ممکن است پیش از قطعهبندی یا پس از تجمیع باشد. پیش از آنکه نتیجه بگیرید تونل MTU خود را نادیده گرفته است، نقطه مشاهده را مشخص کنید.
ثبت روی یک میزبان میتواند بستهای 64 KB را روی واسطهای با MTU برابر 1420 نشان دهد، و نتیجهگیری بدیهی این است که تونل حد اندازه خود را نادیده گرفته است. این نتیجه معمولاً نادرست است. نقاط ثبت روی میزبان درون مسیر پردازش قرار دارند، جایی که قطعهبندی، تجمیع و کار جمع کنترلی ممکن است هنوز رخ نداده باشد. پیش از خواندن اندازه بسته، موقعیت مشاهدهگر را بخوانید.
محل ثبت، آنچه میبینید را تغییر میدهد
offload ارسال به پشته اجازه میدهد یک واحد بزرگ را به دستگاه شبکه بسپارد، دستگاهی که بعداً آن را به قطعات هماندازه سیم میشکند. تجمیع دریافت در مسیر ورود عکس این کار را میکند و قطعات را پیش از آنکه مشاهدهگری در سمت میزبان آنها را ببیند به هم میپیوندد. بنابراین ثبت، نمای درونی میزبان را در آن نقطه ضبط میکند، نه لزوماً قابهای روی پیوند را. هر دو سازوکار به دستگاه و مسیر بستگی دارند.
ethtool -k eth0 | grep -E 'tso|gso|gro'
پیش از آنکه اندازه را نقص بدانید، در نقطه دومی ثبت کنید، ترجیحاً یک گیرنده مستقل یا آینه. اگر واحد بزرگ فقط روی میزبان فرستنده دیده شود، ممکن است سیم هرگز آن را حمل نکرده باشد. دو نقطه مشاهده از یک فایل قویتر است، بهویژه وقتی پرسش این است که واقعاً چه چیزی از دستگاه خارج شده است.
واسطه درونی و بیرونی را جدا کنید
تونل واسطه خودش را اضافه میکند، و نمای بیرونی و درونی در کپسولهسازی و در پردازش تفاوت دارند. ثبت روی دستگاه تونل بسته درونی را نشان میدهد؛ ثبت روی آداپتور فیزیکی بسته بیرونی را. اندازه، نشانیها و وضعیت جمع کنترلی میتوانند به دلایلی که هیچ ارتباطی با نقص ندارند میان آن دو تفاوت داشته باشند.
ثبت کنید هر فایل را کدام واسطه تولید کرده است. اندازهای که روی دستگاه تونل دیده میشود بسته درونی را توصیف میکند، نه قابی را که آداپتور در نهایت فرستاده است. آمیختن آن دو در یک تحلیل همان چیزی است که یک تفاوت عادی کپسولهسازی را به معما تبدیل میکند.
هشدار جمع کنترلی هم موقعیتی است
ثبت در سمت ارسال میتواند میدان جمع کنترلی را پیش از آنکه سختافزار آن را پر کند نشان دهد، که هشداری تولید میکند که هیچ گیرندهای هرگز آن را نمیدید. این شواهدی متفاوت از رد یک بسته آسیبدیده توسط میزبان دور است. جهت و نقطه ثبت تعیین میکند کدام یک از این دو را دارید.
وقتی یک انتقال واقعی شکست میخورد، مشاهدات را در گیرنده یا در نقطه دیگری از مسیر مقایسه کنید. جهت، واسطه و لایه کپسولهسازی را همراه با سابقه نگه دارید، چون تصویر صفحه بدون آنها بعداً قابل تفسیر نیست.
offload را فقط بهعنوان آزمون کنترلشده خاموش کنید
خاموش کردن offload کارایی و پردازش بسته را تغییر میدهد، پس نخستین واکنش به نمایش عجیب اندازه نیست. اگر آن را میآزمایید، یک تنظیم را تغییر دهید و ابتدا وضعیت پایه را ثبت کنید. اجرایی که MTU، قواعد دیوار آتش و پروفایل کارخواه را هم تغییر میدهد نمیتواند نتیجه را به offload نسبت دهد. تنظیم را بعداً بازگردانید.
ethtool -K eth0 tso off gro off
ping -M do -s 1400 example.com
توقف واقعی یک انتقال بزرگ پرسشی جداگانه درباره MTU مسیر و بازخوردی است که برنامه دریافت میکند. واحد تجمیعشده میزبان نه حد اندازهای در پاییندست را اثبات میکند و نه رد، و درصد پایین CPU، offload را بهعنوان علت مشخص نمیکند.
نتیجه سودمند یک نقطه ثبت توضیحدادهشده بههمراه مشاهدهای تکرارپذیر از برنامه است. با جدا شدن این دو، تغییر MTU میتواند محدودیتی واقعی را هدف بگیرد نه شکل یک بافر درونی.