ipv6 pmtu discovery blackholeの盲点 - janog...• 頑張っちゃって link local...
TRANSCRIPT
![Page 1: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/1.jpg)
IPv6 PMTU Discovery Blackholeの盲点
株式会社ビーコンエヌシー
データセンター事業部
國武 功一 1
![Page 2: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/2.jpg)
@kunitake
github.com/kunitake
2児の父親
明日長女の5歳の誕生日なのに、高松までうどん食べに来た父を許しておくれ……
自己紹介
2
![Page 3: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/3.jpg)
• いつまでたってもPTMU Discovery
Blackholeがなくならない
• 起きてても意外と気づいてない
– 偉そうに語ってる自分もミスったorz
– ごく最近でも、IPv6に強そうな某社がやってた模様
この発表の動機
3
![Page 4: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/4.jpg)
• PMTU Discoveryおさらい
• よく知られた事例
• Filteringの盲点
• そもそも Too bigを発生させない方法
• 最後に
Agenda
4
![Page 5: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/5.jpg)
Path MTU Discoveryおさらい
5
![Page 6: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/6.jpg)
Path MTU Discoveryおさらい
• IPv6 では中継ノードでフラグメントしない(始点ノードが実施)
– IPv4 ではルータ等の中継ノードがフラグメントを実施
– 送信パケットに対する ICMPv6 Error Message を受信時、MTU を変更
• 最初のリンクのMTU が初期値
• ICMPv6 Packet Too Big Message 受信時、始点ノードでフラグメントして再送
– IPv6最小MTU は、1280byte
• L2 SWのMTUにひっかかった場合は破棄される
• Path MTU Discovery の実装が難しいノードは 1280byte 固定
6
![Page 7: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/7.jpg)
Path MTU Discoveryおさらい
MTU1500 MTU1454 MTU1500 MTU1280 MTU1500
client Server
Size=1500
Packet Too Big (MTU=1454) Size=1454
Packet Too Big (MTU=1280) Size=1280
7
![Page 8: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/8.jpg)
Path MTU Discoveryおさらい
MTU1500 MTU1500 MTU1280 MTU1500
client Server
Size=1500
Packet Too Big (MTU=1454) Size=1454
Packet Too Big (MTU=1280) Size=1280
8
Too big作る人!
(転送先のMTUが小さい)
MTU1454
Too bigを受け取る人!
(大きなデータを送ってるノード)
![Page 9: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/9.jpg)
1. Too big パケットが作れない
2. Too bigパケットが受信・転送できない
Blackholeの主な原因
9
![Page 10: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/10.jpg)
• コンテンツを送信する側
– ウェブサーバ
– メール送信者(大きな添付ファイルとか)
– Dropbox的ななにか
Too big 受け取るのはだれ?
10
![Page 11: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/11.jpg)
• IPv4と違って、IPv6では途中ルータがパケットをフラグメントすることは禁止されており、PMTU Dicoveryが動作することによる再送を期待しているため。
Too bigが届かないと、通信ができない!
PMTUD Blackholeなぜ困る?
11
![Page 12: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/12.jpg)
• 一発でわかるワンパターン体験
• 今日日のエンジニアは、telnetすら使わないとか人から聞きましたが…
実際の切り分けデモ
12
![Page 13: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/13.jpg)
僕らには
Happy Eyeball
があるじゃないか!!
↑TCPのセッションは張れてる
のでだめです…
13
![Page 14: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/14.jpg)
Too bigを必ず届ける、受け取る!
or/and
Too bigを発生させない!
がIPv6通信には必須
つまり…
14
![Page 15: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/15.jpg)
よく知られた事例
15
![Page 16: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/16.jpg)
• L3’s icmp rate limit
• Firewall Policy
• LB構成でToo bigがちゃんとエンドに届くか
ここを疑え!
16
1.Too bigパケットが作れない
2.Too bigパケットが転送できない
2.Too bigパケットが転送できない
別の意味で、ここを疑え!(後述)
![Page 17: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/17.jpg)
• 頑張っちゃって link local addressのみでネットワーク作っちゃった、かつ異なるMTUサイズを混ぜちゃった
RFC4291: Routers must not forward any packets
with link-local source or destination addresses to
other link.
• UPS/UTMのおせっかい <- TODAY
ここを疑え!
17
1.Too bigパケットが作れない
2.Too bigパケットが転送できない
![Page 18: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/18.jpg)
Filteringの盲点
18
![Page 19: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/19.jpg)
• 実はFirewallのポリシーでは、事実上、
Too big は落とせない(フロー上、自動的に許可される)
Firewall見直し、これで安心?
19 なんと、こんな設定書いてもToo bigは落とせない…
![Page 20: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/20.jpg)
-A INPUT -m state ¥
--state ESTABLISHED,RELATED ¥
-j ACCEPT
iptables/ip6tablesでも
20
RELATED
meaning that the packet is starting a new connection,
but is associated with an existing connection, such as an
FTP data transfer, or an ICMP error.
![Page 21: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/21.jpg)
• こんなメッセージに見覚えはありませんか?
では、誰が落としてるの?
21
[00001] 2014-07-17 19:00:00 [Root]system-critical-00436: Large
ICMP packet! From 2001:db8:ffff::222 to 2001:db8::80,
proto 58 (zone Untrust, int ethernet0/1). Occurred 6 times.
![Page 22: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/22.jpg)
• [ScreenOS] Large Size ICMP Packet (size >
1024) in IPv6 environment.
http://kb.juniper.net/InfoCenter/index?page=content&id=KB26473&actp=RSS
(http://juni.pr/QJCruH)
多くのICMPパケットは大きくないため、1024
バイト以上のICMPパケットを攻撃パケットや
Loki (ICMP Tunnel)の通信などとみなして、たたき落としてくれる素敵機能。
たとえばこんな機能
22
![Page 23: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/23.jpg)
なぜひっかかるのか?
23
3.2. Packet Too Big Message 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MTU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | As much of invoking packet | + as possible without the ICMPv6 packet + | exceeding the minimum IPv6 MTU [IPv6] |
こいつだ!
![Page 24: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/24.jpg)
• 1280byte以下であることは仕様で決まっているが、どこまでパケットを頑張って詰め込むかは、実装依存
今回問題になったFirewallでは、1000byte
1000 byte < 1024byte….
Too bigのパケット長
24
![Page 25: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/25.jpg)
• Rancidリポジトリをexport
• Find一発。ね?簡単でしょ?
10秒でできるチェック
25
# find . –print0 |xargs -0 grep icmp-large -l
![Page 26: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/26.jpg)
• 他の製品でも、UTM/IPSでこんな感じのおせっかい機能がありそう
• エンタープライズ向けのFirewallは、単純にポリシーだけを見ていると、足元をすくわれることも
氷山の一角か
26
今回の例では、IPv4/IPv6で設定が共通なので、最初は問題なくても、IPv4由来で途中で有効化すると、気付かないうちにIPv6で問題が発生する。またフィルタリングポリシーよりも優先される。
![Page 27: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/27.jpg)
そもそも…
Too bigを
発生させない! 27
![Page 28: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/28.jpg)
TCP 3way handshake復習
28
Client Server
SYN+options(TCP MSS)
SYN, ACK+options(TCP MSS)
ACK
MSS ( Maximum Segment Size )
互いに自身のMSSを通知
![Page 29: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/29.jpg)
• TCP MSS optionが動作する前提で、サーバ側のMTUを1280 octetsに設定しておけば、Packet Too bigは発生しない
• MTUサイズ変更の境界にいることの多いブロードバンドルータが TCP MSS
Clampingに対応した場合も、Packet Too
big は発生しない(ただし、Path MTUを知っているわけではないことに注意)
ということは…
29
![Page 30: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/30.jpg)
• Path MTU Discovery blackholeの回避
• サーバにおけるMTUキャッシュの削減
• TCP再送の抑制
• 輻輳回線での Too bigのドロップ時の影響回避
• IPv4で上手くやれてきた実績
TCP MSS Clamping 嬉しさいろいろ
30
![Page 31: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/31.jpg)
• 救えるのはTCPだけ。UDPは、もともとフラグメントを嫌って short packetでやり取りしていることが多いが、留意する必要がある
• サーバ側で MTU=1280に設定することで、スループットが落ちる可能性
• 結局 Path MTU Discovery Blackhole問題の隠ぺいでしかない。
TCP MSSで解決?
31
![Page 32: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/32.jpg)
• テストテストテスト
– Too bigを通すにはセオリーなだけに、設定を見直すだけで安心している?
– 運用経験がまだ浅い
ワンパターンな問題だと気づけるのは、場数を踏んでこそ
– 監視がイケてない
• ポートチェックだけでは、検知できない
なぜ気づけない?
32
![Page 33: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/33.jpg)
• 設定変更時
いま入れようとしている設定が、IPv6にも影響を与える設定なのか、与えるなら、悪い影響を与えないかを検討する必要がある。
• MTUが小さくなるクライアント環境を用意し、継続的に監視・導入前テスト
– ポート監視だけではだめ。1280バイト以上となるコンテンツが取得できることのチェックが必要
再発防止策
33
![Page 34: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/34.jpg)
MTU 1500
たとえばこんな監視環境
34
監視サーバ
Firewall
MTU 1280
MTU 1500
Too big作る人!
(転送先のMTUが小さい)
サーバからデータ
ポート監視ではなく、文字列監視を
![Page 35: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/35.jpg)
• MTUが小さくなる環境構築
– クライアント環境で以下を実行するだけ
こんなことしちゃだめよ?
35
# ifconfig en0 mtu 1280
これは、Too bigを受け取れるかのテストにはならず、
TCP MSSによる調整が発生する。
逆にいえば、これで問題解消する場合は、
Path MTU Discovery Blackholeが原因
![Page 36: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/36.jpg)
• 実はPMTU Discovery Blackholeを引き起こす環境を作るのは難しい。
• 起きてしまった時の、PMTU Discovery
Blackholeの罪深さ
TCPのセッションは普通に張れるので…
• happy eyeballs では救えない
• IPv4にフォールバックもしない
最後に
36
![Page 37: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/37.jpg)
• ネットワークチーム(弊社事例解析)
• 資料作れと背中を押した人 by @mikiT_T
• ネタの提供 by @ taji_314159265
Special Thanks to
37
![Page 38: IPv6 PMTU Discovery Blackholeの盲点 - JANOG...• 頑張っちゃって link local addressのみでネッ トワーク作っちゃった、かつ異なるMTUサイ ズを混ぜちゃった](https://reader033.vdocuments.us/reader033/viewer/2022042106/5e857ff155591e26a16428d9/html5/thumbnails/38.jpg)
• JANOG33.5 Interim Meeting
– フラグメンテーションの今後を考えよう
http://www.janog.gr.jp/meeting/janog33.5/doc/janog33.5_fragmentation.pdf
• 第6回IPv6オペレーションズフォーラム
– IPv6 Path MTU の傾向と対策 - MTU が小さくて何が悪い!?
https://speakerdeck.com/tsahara/ipv6-path-mtu-in-the-world-and-japan
参考
38