AIX veteránok véleményére lennék kíváncsi az alábbi probléma kapcsán, köszönettel.
Adott egy AIX ssh kliens és egy Linux ssh szerver, sok hop távolságra egymástól. Kettejük között található egy ipsec gateway, amelyen az MTU 1294 byte.
AIX->Linux irányban működőképes a "traceroute" parancs (külön "tracepath" nincs, de az AIX traceroute-ba bele van építve az MTU csökkentése szükség esetén). Ez a pontos PMTU-t nem keresi meg (cca. 1400-ról mindjárt cca. 1000-re ejti, majd nem megy feljebb; a valós gateway MTU a kettő között van).
Linux->AIX irányban kezdeményezve sem a traceroute, sem a tracepath-t, sem a beépített PMTUD nem működik (brutál tűzfalszabályok vannak); jobb híján a helyi 1500-as MTU-t veszi PMTU-nak a Linux.
A probléma az, hogy az alábbi parancs:
aix$ ssh linux cat bigfile
"megakad".
tcpdump szerint az AIX a SYN packet-be 1300-at rak MSS-nek.
Linux a SYN/ACK-ba 1460-as MSS-t tesz (PMTU - IP hdrs - TCP hdrs == 1500 - 20 - 20 == 1460, ahol ugye a PMTU=1500 nem valós, csak éppen a tűzfalszabályok miatt nem találja meg a Linux PMTUD az igazi PMTU-t, ezért a helyi MTU-val, 1500-zal dolgozik).
A csomagokon be van nyomva a DF (don't fragment). Ez feltehetően annak a következménye, hogy PMTUD után nincs értelme fragmentálni.
Amikor a Linux az első 1300 byte-os csomagot küldi (az AIX-tól kapott MSS-nek megfelelően), DF-fel, akkor a gateway az út közepén ezt kikukázza, és küld egy "Fragmentation required / DF flag set" ICMP csomagot a Linux ssh szervernek. Ennek nincs hatása (bár úgy tűnik, megérkezik); a Linux nem kezd tördelni, és a kimenő szegmensméretet sem csökkenti.
Az alábbi kerülőket találtuk:
Mindkettő statikus/globális beállítás, ezért kellemetlen.
A kérdésem az, hogy ennek az egésznek lehet-e oka az AIX szerver félrekonfigurálása. A weben találtam
tcp_pmtu_discover
és
tcp_mssdflt
nevű kernelbeállításokat. Az olvasottak alapján úgy gondolom, hogy ha ezeket rosszul állítják be (= PMTUD kikapcsolása, plusz mind az interface MTU, mind az interface-hez (ill. a route-hoz) tartozó default MSS-nek a gateway MTU fölé állítása), akkor az indokolja a látottakat.
Lényegében az AIX által kiküldött 1300-as MSS valótlan (korrekt PMTUD-nek nem lehet az eredménye!), és azok a csomagok, amelyeket a Linux valóban ekkorára méretez, elakadnak a gateway-ben. Az onnan származó "fragmentation required / DF set" ICMP üzeneteket pedig a Linux nem veszi figyelembe, amikor a saját PMTUD-je nincs letiltva.
Látott már valaki ilyet?
Köszönöm.