tcpdump паказвае пакеты 64 КБ: offload і пункт захопу
Вялікі пакет у захопе на хасце можа быць да сегментацыі або пасля агрэгацыі. Вызначце пункт назірання, перш чым рабіць выснову, што тунель праігнараваў свой MTU.
Захоп на хасце можа паказаць пакет памерам 64 КБ на інтэрфейсе, чый 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 можа нацэліцца на рэальнае абмежаванне, а не на форму ўнутранага буфера.