Symmetric Routing with Stateful NVAを理解するための前提
stateful NVAはconnection stateを保持するため、return packetが別の非同期instance/pathへ入るとdropされ得る。 symmetryは「同じVM instance」を必ず意味せず、vendor clusterでstate同期された同じstate domainへ戻れば成立する場合がある。
UDR、BGP、ILB HA Ports、Gateway Load Balancer、SNAT/DNATはそれぞれreturn pathへ影響する。 asymmetric failureはTCP retransmission/silent dropとして見え、Azure control-plane statusが正常でも発生する。
source/destination双方のeffective routesと、NVA ingress/egress両方向packet captureを突き合わせる。 SNATを入れるとreturn destinationがNVA addressになるためsymmetryを作りやすい場合があるが、source visibilityとのtrade-offがある。
Control plane と data plane
仕組み
forward path: workload A→UDR→NVA1→workload B。return pathでB→system/peering route→Aへ直接戻ればNVA1 stateを通らずasymmetric。
return側にもNVAへ向くrouteを置く、Load Balancer HA Portsで同一flow hashingする、NATでreturn destinationをNVAへ固定する等の設計がある。
BGP failoverではroute convergence後のnew flowはalternate NVAへ行けても、existing stateが同期されていなければ切断する。HA acceptanceをnew/existing connectionで分ける。
Packet path
routing問題は「どのresourceがあるか」ではなく、packetが各hopで何を選ぶかを順に追う。
- SYNがsource routeによりNVAへ入る。
- NVAがstate作成し必要ならNAT、destinationへforward。
- SYN/ACKのdestinationとreturn routeを計算。
- 同じstate domainへ戻る。
- NVA state match後にsourceへ配送しsession成立。
設計判断
| 判断点 | 推奨 | 理由 |
|---|---|---|
| Packet walk | forward/reverseを同じ表に書く。 | 片方向図だけでsymmetryは判断できない。 |
| HA model | state sync有無とflow hashingをvendor仕様で確認。 | route HAとsession HAは別。 |
| NAT | どこでsource/destinationが変換されるか明示。 | reverse routeのdestinationが変わる。 |
| Failure test | existing + new sessionの両方でfailover。 | convergenceとstate preservationを分離評価。 |
確認手順
Azure Portal
- source/destination NICのEffective routesを両方取得。
- NVA HA/cluster stateとsession tableを確認。
- 両側packet captureで同一5-tuple(NAT前後も記録)を追跡。
Verification discipline
- subscription / resource group / resource IDを記録する。
- 同じsource・destinationでbefore/afterを比較する。
- read-only evidenceを保存してから変更する。
- control-plane successとapplication successを別々に判定する。
az network nic show-effective-route-table -g <source-rg> -n <source-nic> -o jsonc
az network nic show-effective-route-table -g <dest-rg> -n <dest-nic> -o jsoncGet-AzNetworkInterface -ResourceGroupName <rg> -Name <nic>
障害切り分け
| 症状 | 疑う点 | 証拠 | 次の確認 |
|---|---|---|---|
| SYN出るがSYN/ACK後に確立しない | return pathがNVAをbypass | bidirectional capture | return UDR/BGP/NAT修正 |
| failoverでexisting sessionのみ切れる | state syncなし/非対応 | NVA session sync status | 仕様として受容またはstateful HA構成 |
| 片方向だけNVA instanceが違う | LB hashing/route next hop差 | NVA capture + LB flow | HA Ports/vendor setting確認 |
| ICMPは通るがTCP失敗 | stateful policy/NAT/asymmetry | TCP packet capture | 5-tupleとstate tableを確認 |
変更時の確認と rollback
- routing/policy変更前にcritical flowのforward/reverse packet pathを保存。
- NVA maintenanceはstate sync/traffic drainを使う。
- rollback後はexisting flowを再利用せずnew TCP sessionも生成し、session tableとpacket pathを確認。