Varför har jag MTU 1480 på mitt villafiber?

Permalänk

Varför har jag MTU 1480 på mitt villafiber?

Hej!

När jag kopplar in min macbook air via nätverkskabel direkt in i fiberkonverterarens port så verkar mitt naturliga MTU vara MTU 1480. Ska det inte vara MTU 1500 som standard?

Är det något fel på mitt Telenor Villafiber?

Körde detta i terminal för att hitta MTU:
ping -g 1430 -G 1500 -h 1 -D 8.8.8.8

Permalänk

Säkert har det göra med att du inte ser IP och ICMP header.

Testa:

ping -D -s 1472 8.8.8.8 (OK)

och

ping -D -s 1473 8.8.8.8 (om failar så har du 1500 men din Mac räknar inte övriga)

Annars om det inte funkar så ändrar du config och overridar:

sudo ifconfig en0 mtu 1500

Visa signatur

Jag har fler GPU än du och ser mig själv som GPU fattig ändå

Permalänk
Skrivet av gamingturken:

Säkert har det göra med att du inte ser IP och ICMP header.

Testa:

ping -D -s 1472 8.8.8.8 (OK)

och

ping -D -s 1473 8.8.8.8 (om failar så har du 1500 men din Mac räknar inte övriga)

Annars om det inte funkar så ändrar du config och overridar:

sudo ifconfig en0 mtu 1500

Inget av dem två första kommandona funkade, fick inget svar.

sudo ifconfig en0 mtu 1500 <- denna behövs väl inte? Har väl redan 1500.

Permalänk
Skrivet av stefaneriksson123:

Inget av dem två första kommandona funkade, fick inget svar.

sudo ifconfig en0 mtu 1500 <- denna behövs väl inte? Har väl redan 1500.
https://i.imgur.com/QWudhGL.png

Då återgår jag till spekulationen att din Mac inte räknar med IP och ICMP headers på 8 + 20 bytes

Visa signatur

Jag har fler GPU än du och ser mig själv som GPU fattig ändå

Permalänk
Medlem

Testa just på min mac, det är headers så inget att oroa sig över.
Linux ping räknar tom annorlunda, 1472 lärde jag mig nångång.

många routrar räknar också kreativt, nått man bara får lära sig.

IP 20 byte
https://en.wikipedia.org/wiki/IPv4#Header

ICMP 8 byte https://en.wikipedia.org/wiki/Internet_Control_Message_Protoc....

Citat:

varget@jump:~$ ping 8.8.8.8 -s 1472 -M do -c 3
PING 8.8.8.8 (8.8.8.8) 1472(1500) bytes of data.
1480 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=1.17 ms
1480 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=1.25 ms
1480 bytes from 8.8.8.8: icmp_seq=3 ttl=115 time=1.22 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.169/1.213/1.247/0.032 ms

varget@jump:~$ ping 8.8.8.8 -s 1473 -M do -c 3
PING 8.8.8.8 (8.8.8.8) 1473(1501) bytes of data.
ping: local error: message too long, mtu=1500
ping: local error: message too long, mtu=1500
ping: local error: message too long, mtu=1500

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2070ms

edit:
Inser nu att det kanske är en BSD sak att räkna IP (20byte) men inte icmp(8byte), vilket förklarar massa routar för mig.

Permalänk

Jag hade problem med att komma åt Apple Appstore på macbooken när jag var uppkopplad via VPN router som hade WireGuard klient igång.

Upptäckte sen med hjälp av VPN-leverantören att sänker man MTU till 1420 på VPN routerns WireGuard klient så fungerade det bra.

Förklaringen var att:
Mitt naturliga MTU var 1480. 1480-60 = 1420. Så vi ställde in 1420 på VPN routern.
WireGuard är känsligare än t.ex OpenVPN eller än att köra helt utan VPN.

Förstod efter det hur viktigt det är i nätverk att MTU är inställt rätt.

Permalänk
Medlem
Skrivet av stefaneriksson123:

Jag hade problem med att komma åt Apple Appstore på macbooken när jag var uppkopplad via VPN router som hade WireGuard klient igång.

Upptäckte sen med hjälp av VPN-leverantören att sänker man MTU till 1420 på VPN routerns WireGuard klient så fungerade det bra.

Förklaringen var att:
Mitt naturliga MTU var 1480. 1480-60 = 1420. Så vi ställde in 1420 på VPN routern.
WireGuard är känsligare än t.ex OpenVPN eller än att köra helt utan VPN.

Förstod efter det hur viktigt det är i nätverk att MTU är inställt rätt.

https://kmpic.asus.com/images/2021/12/21/8263501d-86d4-471f-92c1-50a2b1bc0de4.png

MTU är viktigt att få rätt, jag har massa historier om konstiga problem. Men normalt sett när man kör VPN så sänker man MTU på klienten som du säger. Man kan även skriva om MSS i TCP paketen i brandväggen också. Eller så köper man en länk som har högre MTU, men det funkar inte på öppna internet direkt.

Men det är inget fel på din anslutning, du har 1500 MTU.

Permalänk
Skrivet av varget:

MTU är viktigt att få rätt, jag har massa historier om konstiga problem. Men normalt sett när man kör VPN så sänker man MTU på klienten som du säger. Man kan även skriva om MSS i TCP paketen i brandväggen också. Eller så köper man en länk som har högre MTU, men det funkar inte på öppna internet direkt.

Men det är inget fel på din anslutning, du har 1500 MTU.

Okey, märkligt. Men varför visar den 1480 MTU när jag testar direkt i fiberomvandlaren?

Är det fiberomvandlaren som drar 20MTU ?

Permalänk
Medlem
Skrivet av stefaneriksson123:

Okey, märkligt. Men varför visar den 1480 MTU när jag testar direkt i fiberomvandlaren?

Är det fiberomvandlaren som drar 20MTU ?

Nej nej, det är bara olika MTU

1500 MTU på ethernet är utan IP huvud (som är dessa 20 byte som du mätte upp) även kallat L2 MTU ibland

Permalänk
Skrivet av varget:

Nej nej, det är bara olika MTU

1500 MTU på ethernet är utan IP huvud (som är dessa 20 byte som du mätte upp) även kallat L2 MTU ibland

Okey, hmm.

20 byte är ip-nummer
60-byte är antagligen någon wireguard grej?
= 1420 MTU som inställning på Wireguard-klienten i routern.

Märkligt att VPN-leverantören undrade varför jag inte fick 1500 MTU. Det kan man ju inte ens ha om ip-nummer ipv4 är 20 bytes.

Då förstår jag iallafall, tackar tackar! )

Permalänk
Medlem

Kollade vad jag hade inställt på telefonen nu, och det står bara auto på mtu. Men är väl inte orimligt med 60 byte till wireguard.

plockade fram min mac och anslöt via mobilen och testa vad jag får ut via wireguard utan att ha satt nått i konfen och får 1400 prick via ping. Så precis som du (med 20 bytes extra blir det 1420)

Permalänk
Medlem

Olika operativsystem hanterar payload på ICMP olika. När du anger storleken på "size" i MacOS specifikt, så inkluderar kommandot inte IP headers, men verkar som att det inkluderar ICMP headers som en del av "sizen" (så bakom kulisserna i kommandot så tar den din angivna size -8 bytes för att inkludera ICMP headers).

Här har vi ett fint exempel att jämföra med Windows 11

I ditt exempel så får du igenom 1480, vilket då bekräftar att size-kommandot inte inkluderar de 20 bytes för IP Headers.

I Windows 11 så tar det stopp vid 1472, vilket verkar vara för att size-kommandot inte inkluderar varken 20 bytes IP Headers eller 8 bytes ICMP header.

I Windows 11 som exempel, så inkluderas inte ICMP headers i samma kommando, medan MacOS verkar göra det:

ping 1.1.1.1 -l 1472 -f Pinging 1.1.1.1 with 1472 bytes of data: Reply from 1.1.1.1: bytes=1472 time=1ms TTL=55 ping 1.1.1.1 -l 1473 -f Pinging 1.1.1.1 with 1473 bytes of data: Packet needs to be fragmented but DF set.

MacOS: size 1480 (payload med ICMP header inkluderat, IP Headers exkluderat)
Windows 11: size 1472 (payload utan ICMP header eller IP Headers inkluderat)

Detta är även sant för olika tillverkare inom nätverksvärlden, Cisco, Juniper, Huawei, Nokia/Alcatel etc. som alla gör olika både i config och ping-kommandot vad som inkluderas eller inte Dessutom diffar det mellan samma tillverkare i olika mjukvaruversioner. Great fun.

Blandar vi in Wireguard i mixen så försvinner lite mer bytes för krypteringen. Tror det är 32 bytes för det, och sedan tunnlade TCP-paket så är vi nere på ~1400 bytes för data.

Typ såhär, utgår ifrån 1500 bytes:
-20 bytes för IPv4 headers = 1480
-8 bytes för WireGuard UDP = 1472
-32 bytes för WireGuard headers = 1440
-20 bytes för tunnlade IPv4 headers = 1420
-20 bytes för tunnlade TCP headers = 1400

= 1400 bytes för data

Därför kan det vara en god idé att konfigurera "max-segment-size" när man jobbar med tunnlar och krypterad trafik för att sköta fragmentering innan trafiken går in i tunneln.

Cisco t.ex.:

"When a host (usually a PC) initiates a TCP session with a server, it negotiates the IP segment size by using the MSS option field in the TCP SYN packet. The value of the MSS field is determined by the MTU configuration on the host. The default MSS value for a PC is 1500 bytes.

Use the ip tcp adjust-mss command in interface configuration mode to specify the MSS value on the intermediate router of the SYN packets to avoid truncation.

ip tcp adjust-mss 1400"

Visa signatur

pfSense: GA-J1900N-D3V Quad-core Celeron 2GHz, Samsung 4GB, pfSense 2.2.2@USB
ESXi: i5 3470S, Gigabyte GA-B75N, Corsair XMS3 16GB, Intel PRO/1000 VT Quad GbE, Streacom F7C, ESXi@USB
Campfire Audio Lyra II, HiFiMAN HE-400, Yamaha EPH-100, Audioengine D1, FiiO E10

Permalänk
Skrivet av simonw:

Olika operativsystem hanterar payload på ICMP olika. När du anger storleken på "size" i MacOS specifikt, så inkluderar kommandot inte IP headers, men verkar som att det inkluderar ICMP headers som en del av "sizen" (så bakom kulisserna i kommandot så tar den din angivna size -8 bytes för att inkludera ICMP headers).

Här har vi ett fint exempel att jämföra med Windows 11

I ditt exempel så får du igenom 1480, vilket då bekräftar att size-kommandot inte inkluderar de 20 bytes för IP Headers.

I Windows 11 så tar det stopp vid 1472, vilket verkar vara för att size-kommandot inte inkluderar varken 20 bytes IP Headers eller 8 bytes ICMP header.

I Windows 11 som exempel, så inkluderas inte ICMP headers i samma kommando, medan MacOS verkar göra det:

ping 1.1.1.1 -l 1472 -f Pinging 1.1.1.1 with 1472 bytes of data: Reply from 1.1.1.1: bytes=1472 time=1ms TTL=55 ping 1.1.1.1 -l 1473 -f Pinging 1.1.1.1 with 1473 bytes of data: Packet needs to be fragmented but DF set.

MacOS: size 1480 (payload med ICMP header inkluderat, IP Headers exkluderat)
Windows 11: size 1472 (payload utan ICMP header eller IP Headers inkluderat)

Detta är även sant för olika tillverkare inom nätverksvärlden, Cisco, Juniper, Huawei, Nokia/Alcatel etc. som alla gör olika både i config och ping-kommandot vad som inkluderas eller inte Dessutom diffar det mellan samma tillverkare i olika mjukvaruversioner. Great fun.

<Uppladdad bildlänk>

Blandar vi in Wireguard i mixen så försvinner lite mer bytes för krypteringen. Tror det är 32 bytes för det, och sedan tunnlade TCP-paket så är vi nere på ~1400 bytes för data.

Typ såhär, utgår ifrån 1500 bytes:
-20 bytes för IPv4 headers = 1480
-8 bytes för WireGuard UDP = 1472
-32 bytes för WireGuard headers = 1440
-20 bytes för tunnlade IPv4 headers = 1420
-20 bytes för tunnlade TCP headers = 1400

= 1400 bytes för data

Därför kan det vara en god idé att konfigurera "max-segment-size" när man jobbar med tunnlar och krypterad trafik för att sköta fragmentering innan trafiken går in i tunneln.

Cisco t.ex.:

"When a host (usually a PC) initiates a TCP session with a server, it negotiates the IP segment size by using the MSS option field in the TCP SYN packet. The value of the MSS field is determined by the MTU configuration on the host. The default MSS value for a PC is 1500 bytes.

Use the ip tcp adjust-mss command in interface configuration mode to specify the MSS value on the intermediate router of the SYN packets to avoid truncation.

ip tcp adjust-mss 1400"

Ojdå, detta betyder ju att MTU 1420 kanske funkar jättebra på Mac medans i någon annan maskin kan det funka sämre. Hur ska men ens då göra för att vara säker.

konfigurera "max-segment-size" säger du, intressant.

Min erfarenhet är endast via en dd-wrt router som användes som VPN-klient över WireGuard.
Ska få hem en OpenWRT-router får se hur det blir där i.... snurrigt värre.

Permalänk
Medlem
Skrivet av stefaneriksson123:

Ojdå, detta betyder ju att MTU 1420 kanske funkar jättebra på Mac medans i någon annan maskin kan det funka sämre. Hur ska men ens då göra för att vara säker.

konfigurera "max-segment-size" säger du, intressant.

Min erfarenhet är endast via en dd-wrt router som användes som VPN-klient över WireGuard.
Ska få hem en OpenWRT-router får se hur det blir där i.... snurrigt värre.

Nja, alla enheter hanterar paketen på samma sätt, det jag menade är att kommandot skiljer sig och kan förvirra.

MacOS: ping 1.1.1.1 -size 1480
Windows 11: ping 1.1.1.1 -size 1472

Blir båda i praktiken 20+8+1472=1500.

Visa signatur

pfSense: GA-J1900N-D3V Quad-core Celeron 2GHz, Samsung 4GB, pfSense 2.2.2@USB
ESXi: i5 3470S, Gigabyte GA-B75N, Corsair XMS3 16GB, Intel PRO/1000 VT Quad GbE, Streacom F7C, ESXi@USB
Campfire Audio Lyra II, HiFiMAN HE-400, Yamaha EPH-100, Audioengine D1, FiiO E10

Permalänk
Skrivet av simonw:

Nja, alla enheter hanterar paketen på samma sätt, det jag menade är att kommandot skiljer sig och kan förvirra.

MacOS: ping 1.1.1.1 -size 1480
Windows 11: ping 1.1.1.1 -size 1472

Blir båda i praktiken 20+8+1472=1500.

Aha, då förstår jag. Tack!

Har du någon erfarenhet av OpenWRT förresten, ser att du pillar med pfsense! Coolt!

Permalänk
Medlem
Skrivet av stefaneriksson123:

Aha, då förstår jag. Tack!

Har du någon erfarenhet av OpenWRT förresten, ser att du pillar med pfsense! Coolt!

Har inte uppdaterat min signatur på säkert 12 år Pass på den.

Visa signatur

pfSense: GA-J1900N-D3V Quad-core Celeron 2GHz, Samsung 4GB, pfSense 2.2.2@USB
ESXi: i5 3470S, Gigabyte GA-B75N, Corsair XMS3 16GB, Intel PRO/1000 VT Quad GbE, Streacom F7C, ESXi@USB
Campfire Audio Lyra II, HiFiMAN HE-400, Yamaha EPH-100, Audioengine D1, FiiO E10

Permalänk
Medlem

Jag fattar ingenting av detta, men bor i lägenhet Behöver vanliga dödliga villaägare (Hantverkar-Harry, 65 år) hålla koll på sånt här?!

Permalänk
Medlem
Skrivet av Saddl3r:

Jag fattar ingenting av detta, men bor i lägenhet Behöver vanliga dödliga villaägare (Hantverkar-Harry, 65 år) hålla koll på sånt här?!

Nej