macOS 10.15では、Cisco AnyConnect セキュア モビリティ クライアント 4.8大学のVPNに接続します。
接続が通常よりかなり遅くなっています。これはおそらく、MTU 1300 の設定が低すぎるためです。
コマンドを使用するとifconfig
、接続に関する次の情報が得られます。
utun2: flags=80d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1300
inet ###.###.##.## --> ###.###.##.## netmask 0xfffffe00
inet6 ###::####:###:###:###%utun2 prefixlen 64 scopeid 0x10
inet6 ###:####:#:#::### prefixlen 128
nd6 options=201<PERFORMNUD,DAD>
(IP アドレスは # で匿名化されています)
これを変更するにはどうすればよいですか? Cisco クライアントの設定にも、構成ファイルにも何も見つかりませんでした。
システム設定の変更は役に立たないので、ターミナル経由で次のことを試しました。
sudo ifconfig utun2 mtu 1470
コマンドを使用すると正しい値が表示されますifconfig
が、接続自体は変更されません(速度も、ここで表示されるMTU値も変更されません)。https://www.speedguide.net/analyzer.php再接続後、MTU は再び 1300 に登録されます。
MTU を効果的かつ永続的に変更するにはどうすればよいですか?
答え1
VPN カプセル化によりパケットに追加のオーバーヘッドが追加されるため、最大転送単位を標準の 1500 バイト イーサネット フレーム MTU 未満に減らすと、カプセル化されたパケットが断片化されないようにすることができます。
パケットの断片化をチェックするには、ping
「断片化しない」スイッチを使用できます。
私のバージョンのping
、MacOS High Sierra では、次のオプションを使用してスイープ サイズを指定できます。
nevin% ping -g 1200 -G 1500 -D <remote host>
結果は次のようになります:
1472 bytes from x.x.x.x: icmp_seq=64 ttl=48 time=108.894 ms 556 bytes from 192.168.2.1: frag needed and DF set (MTU 1492) Vr HL TOS Len ID Flg off TTL Pro cks Src Dst 4 5 00 d505 f712 0 0000 40 01 2739 192.168.2.111 x.x.x.x
私の en0 MTU は 1500 ですが、上記の応答ではルーターの MTU が 1492 であることを示しています。
「パス MTU 検出」は、2 つのホスト間のリンクの断片化しきい値を下回るパケット サイズを維持しようとしますが、ICMP が途中でブロックされていない場合に最も効果的に機能します。(エラー メッセージが表示されずにパケットが失われ始めた場合は、ICMP が上流のどこかのポイントでブロックされており、これが速度低下の原因である可能性があります。リモート ホストがローカル MTU を超えるパケットを送信しているが、スケール ダウンを指示するエラーが発生していない可能性があります。
つまり、MTU のサイズを大きくしてもパフォーマンスは向上しません。