手当たり次第に書くんだ

飽きっぽいのは本能

AWS VPC に L2 は存在しないのか?オンプレネットワーク設計者から見たクラウドネットワークの抽象化

はじめに

AWS VPC は「仮想ネットワーク」と説明される。

AWS を通常利用する範囲では、VPC、Subnet、Route Table、Security Group、NACL、NAT Gateway、Load Balancer、Transit Gateway などを理解すれば、多くのシステムは構築できる。

しかし、オンプレミスで VLAN、L2 セグメント、ブロードキャストドメイン、VRRP、透過 Firewall、SPAN、VLAN trunk などを設計してきた立場から見ると、AWS VPC には明確な違和感がある。

VPC はネットワークであるにもかかわらず、オンプレミスで当然のように扱っていた L2 の自由度が見えない。VLAN を切ることも、L2 透過で Firewall を挟むことも、ブロードキャストを前提に探索することも、VRRP で VIP を浮かせることも、オンプレミスと同じ形では成立しない。

この記事では、その違和感の正体を整理する。

結論は次の通りである。

AWS VPC において L2 は原理的に消えているのではない。L2 の自由度が、利用者の設計対象から外され、クラウド事業者のサービス境界内に封じ込められている。

この違いを理解しないままオンプレミスの設計思想を AWS に持ち込むと、構成上の齟齬が生じる。

オンプレミスで L2 が担っている役割

オンプレミスでは、ネットワークはかなり下位レイヤーから設計対象になる。

要素オンプレミスでの意味
物理 NICホストやネットワーク機器の接続点
スイッチL2 転送を行う装置
VLANL2 セグメントを分離する単位
VLAN trunk複数 VLAN を単一リンクに載せる仕組み
MAC 学習スイッチがフレーム転送先を決めるための情報
ARPIPv4 アドレスから MAC アドレスを解決する仕組み
ブロードキャスト同一 L2 セグメント内に広く届く通信
STP / MLAGL2 冗長化やループ防止の仕組み
LACP複数物理リンクを束ねる仕組み
VRRP / HSRPL3 ゲートウェイ冗長化の仕組み
透過 FirewallL2 的に挟み込む Firewall 構成
SPAN / ミラーポートL2 トラフィックを観測する仕組み

オンプレミスでは、これらを組み合わせてネットワークを構成する。

つまり、オンプレミスでは Ethernet を前提に IP ネットワークを作る。VLAN を切り、L2 セグメントを定義し、必要に応じて L3 境界を置き、Firewall、NAT、Load Balancer、VPN、IDS/IPS などを配置する。

この設計では、L2 は単なる下位実装ではない。利用者が直接扱う設計対象である。

AWS VPC が利用者に渡す抽象境界

AWS VPC で利用者に見える主な要素は、オンプレミスの L2 要素とは異なる。

AWS 側の要素主な意味
VPC論理的に分離されたネットワーク空間
SubnetAZ に紐づく IP アドレス範囲
ENIEC2 などに接続される論理ネットワークインターフェース
Private IPENI に割り当てられる IP アドレス
Route TableSubnet 単位などで適用される経路制御
Security GroupENI に紐づくステートフルな通信制御
NACLSubnet に紐づくステートレスな通信制御
Internet GatewayVPC とインターネット間の接続点
NAT GatewayPrivate Subnet から外部へ出るための NAT 機能
Transit GatewayVPC や VPN などを集約する L3 接続基盤
Gateway Load BalancerFirewall などのアプライアンス連携に使う仕組み
PrivateLinkサービス単位で閉域接続を提供する仕組み

AWS VPC では、利用者が操作する中心は VLAN、MAC、ブロードキャストドメインではない。VPC、Subnet、ENI、Private IP、Route Table、Security Group、NACL が中心になる。

EC2 インスタンスには ENI が接続される。ENI には MAC アドレスも存在する。OS から見れば、ネットワークインターフェースがあり、IP アドレスがあり、通信が行われる。

その意味で、L2 的な要素が完全に存在しないわけではない。

ただし、ENI は自由な仮想 NIC ではない。VPC の制御プレーンに登録された論理インターフェースであり、そこに関連づく Private IP、Subnet、Security Group、Source/Destination Check などの制約の中で動作する。

AWS VPC は、利用者に仮想 Ethernet を自由に渡す仕組みではない。AWS が制御する IP 到達性モデルを、サービスとして提供する仕組みである。

なぜ AWS は L2 自由度を封じ込めるのか

AWS が L2 自由度を利用者に渡さないことには、設計上の理由がある。

マルチテナント性

クラウド基盤は、多数の利用者を同一の物理・論理基盤上で収容する。

利用者に自由な L2 挙動を許可すると、ブロードキャスト、MAC spoofing、ARP spoofing、flooding、未知ユニキャスト、ループなどが、他の利用者や基盤側の安定性に影響する可能性がある。

AWS VPC では、利用者が操作できる境界を ENI、IP、Security Group、NACL、Route Table などに限定することで、テナント間の分離と制御を成立させている。

スケール

L2 は小規模から中規模のネットワークでは扱いやすいが、大規模分散基盤では制御が難しくなる。

ブロードキャストドメイン、MAC 学習、flooding、L2 ループ、STP 的な収束は、巨大なクラウド基盤のスケール設計と相性が悪い。

クラウドでは、利用者が任意に L2 ドメインを広げるよりも、IP 到達性、経路、ポリシー、サービス単位の接続として抽象化した方が、制御プレーンとデータプレーンを大規模に管理しやすい。

障害ドメイン分離

L2 自由度は、障害の伝播範囲を広げやすい。

ブロードキャストストーム、ループ、誤った MAC 学習、冗長化設定の不整合などは、同一 L2 ドメイン内へ波及する。

AWS は AZ、Subnet、Route Table、Security Group、Load Balancer、Transit Gateway などの単位で障害境界を管理する。利用者に L2 を直接渡さないことは、障害ドメインをクラウド側で制御するための前提になる。

セキュリティ境界の明確化

オンプレミスの L2 では、同一セグメント内の通信が比較的自由になりやすい。

AWS VPC では、ENI、Private IP、Security Group、NACL、IAM、タグ、Route Table などを組み合わせて通信制御を行う。

利用者が操作する単位を L2 ではなく、クラウド制御プレーン上のオブジェクトに寄せることで、どの通信を誰が許可し、どの範囲まで到達できるのかを明確化しやすくなる。

運用自動化とサービス化

クラウドは、ネットワークを個別機器の設定集合としてではなく、API で操作可能なサービスとして提供する。

そのためには、利用者が直接扱う対象を、物理ポート、VLAN、MAC テーブル、STP 状態ではなく、VPC、Subnet、ENI、Route Table、Security Group のようなクラウドオブジェクトへ変換する必要がある。

L2 自由度の封じ込めは、クラウドネットワークを API 化し、マネージドサービスとして運用するための構造的条件である。

オンプレ設計を AWS に翻訳するときに変わる性質

オンプレミスの構成は、AWS の構成要素へ翻訳できることがある。

ただし、翻訳できることと、等価であることは別である。

ここで重要なのは、個別の製品や機能の対応関係ではない。オンプレミスで L2 が暗黙に提供していた性質が、AWS では別の責任境界へ移動することである。

AWS では、L2 が担っていた役割を、ENI、Route Table、Security Group、NACL、Load Balancer、Transit Gateway、Gateway Load Balancer、DNS、API などに分解して再構成する。

その結果として変わる性質は、主に以下である。

性質オンプレミスでの前提AWS での変化
到達性L2 隣接性や VLAN 内通信を前提にできるENI、Subnet、Route Table、SG、NACL によって明示的に定義される
所有OS や機器側で IP / VIP / MAC の扱いを制御しやすいENI に登録された IP、AWS API、クラウド側の状態管理に従う
収束VRRP、HSRP、STP、ルーティングプロトコルなどの収束に依存するヘルスチェック、API 更新、Route Table 更新、LB、DNS などの制御に依存する
挿入L2 透過やインライン配置により経路上へ挟み込めるRoute Table、GWLB、TGW などで明示的に通信を誘導する
観測SPAN、TAP、ミラーポートでパケットを観測するVPC Traffic Mirroring、Flow Logs、サービスログなどに分かれる
発見ブロードキャスト、マルチキャスト、同一セグメント探索に依存できるDNS、Service Discovery、API、Load Balancer へ寄せる
責任境界機器、OS、ネットワーク管理者の設定責任が大きいAWS サービス仕様と利用者設定の境界に分割される

つまり、AWS 的な部品に置き換えた時点で、通信の意味、障害時の振る舞い、運用手順、観測方法、責任境界が変わる。

「AWS ではこれで代替できる」と書く場合、その代替がどの性質を保持し、どの性質を失うのかを分けて考える必要がある。

置き換えはできるが等価ではない

前節では、AWS へ翻訳するときに変わる抽象的な性質を整理した。

ここでは、具体的な構成要素の対応関係として整理する。

オンプレミスの構成AWS での主な代替保持しやすい性質変わる性質
VRRP / HSRPENI 付け替え、Route Table 更新、Load Balancer、DNS フェイルオーバー単一の到達先を冗長化する目的切替速度、検知方式、制御主体、障害時の操作点
L2 透過 FirewallGateway Load Balancer、Routed Firewall、Transit Gateway 経由の集約通信を検査・制御する目的L2 透過性、挿入方式、経路設計、戻り通信の扱い
SPAN / TAPVPC Traffic Mirroring、Flow Logs、サービスログ通信や証跡を観測する目的観測粒度、取得対象、保存形式、リアルタイム性
VLAN trunk複数 ENI、複数 Subnet、ルーティング設計複数ネットワークを扱う目的VM への L2 多重収容、タグ VLAN、L2 境界の自由度
ブロードキャスト探索DNS、Service Discovery、API、Load Balancerサービスを発見する目的発見方式、依存先、明示設定の必要性
任意 IP の付与ENI に登録された Private IP、Secondary IP特定 IP で通信する目的OS 側だけで完結しない点、AWS 側の登録状態
MAC ベース制御Security Group、NACL、IAM、タグ、ENI 単位の制御通信主体を制限する目的制御単位、識別子、ポリシー適用場所
L2 延伸VPC Peering、Transit Gateway、VPN、Direct Connect離れたネットワーク間を接続する目的同一 L2 セグメント性、ブロードキャスト到達性、障害伝播の扱い

この表は「AWS ではこれを使えば同じことができる」という意味ではない。

保持しやすいのは、上位の目的である。たとえば、冗長化したい、通信を制御したい、観測したい、複数ネットワークを扱いたい、という目的は AWS 上でも実現できる。

一方で、その目的を実現していた下位の性質は変わる。L2 隣接性、透過性、VIP の扱い、観測方法、障害検知、制御主体は、AWS の到達性モデルに合わせて再定義される。

そのため、AWS 上で仮想 Firewall、IDS/IPS、VyOS、pfSense、FortiGate、Palo Alto、Kubernetes CNI、Active Directory、LDAP、Ceph、HA 構成などを考える場合、オンプレミスの構成をそのまま移植するのではなく、どの目的を維持し、どの性質が変わるのかを先に分解する必要がある。

設計翻訳の落とし穴

オンプレミスの設計経験があるほど、AWS VPC を既存の概念へ対応づけて理解しようとする。

その対応づけ自体は有効である。ただし、対応表を作った瞬間に「似ているもの」を「同じもの」として扱いやすくなる。

設計翻訳で起きる誤読は、技術要素の知識不足というより、オンプレミスで成立していた暗黙の前提を AWS 側にも持ち込むことで発生する。

1. Subnet を VLAN のクラウド版として読む

Subnet は、見た目として VLAN に近い。

どちらもアドレス範囲や分離単位として説明されるため、オンプレミス経験者は Subnet を VLAN のクラウド版として理解しやすい。

しかし、この読み方では、VLAN が暗黙に持っていた L2 隣接性、ブロードキャスト範囲、MAC ベースの挙動まで Subnet に重ねてしまう。

AWS の Subnet は、VPC 制御プレーン上の IP 到達性と配置の単位であり、L2 自由度の提供単位ではない。

2. Firewall を「通信経路上に置く箱」として考える

オンプレミスでは、Firewall はネットワーク境界に置く装置として考えやすい。

そのため、AWS でも「どこに Firewall を挟むか」という発想から始めると、Security Group、NACL、Gateway Load Balancer、Transit Gateway、Route Table の役割分担を誤読しやすい。

AWS では、通信制御は単一の箱に集約されるとは限らない。ENI 単位の Security Group、Subnet 単位の NACL、経路制御、サービス挿入、マネージド LB などに分散する。

オンプレミスの Firewall 配置図をそのまま AWS に移すと、制御点の分散という前提を見落とす。

3. HA を「VIP を浮かせる問題」として読む

オンプレミスでは、HA を考えるときに VRRP、HSRP、keepalived、VIP といった発想が出やすい。

これは、同一 L2 セグメント内で仮想 IP を共有できる前提があるためである。

AWS では、HA は VIP を浮かせる問題ではなく、AWS の制御プレーン上で到達先をどう切り替えるかという問題になる。

そのため、ENI 付け替え、Route Table 更新、Load Balancer、DNS フェイルオーバーなどが候補になるが、それぞれ検知方式、切替速度、責任境界が異なる。

4. 透過性を保ったまま挿入できると考える

オンプレミスでは、L2 透過 Firewall や IDS/IPS を既存経路に挟み込み、周辺の IP 設計を大きく変えずに導入できる場合がある。

この経験があると、AWS でも同じように「透過的に挿入する」構成を想像しやすい。

しかし、AWS では多くの場合、透過的に挟むのではなく、Route Table、Gateway Load Balancer、Transit Gateway などを使って、明示的に通信をサービスへ誘導する。

ここで必要になるのは L2 透過性の再現ではなく、どの通信をどの経路へ通すかという到達性の再設計である。

5. 自動探索をネットワークの性質として期待する

オンプレミスでは、同一 L2 セグメント内でブロードキャストやマルチキャストによる探索が成立することがある。

この経験があると、同一 Subnet 内でも同様の自動探索を期待しやすい。

AWS では、サービス発見を L2 の性質に依存させるべきではない。DNS、Service Discovery、API、Load Balancer、明示的なエンドポイント定義へ移す必要がある。

ここで変わるのは通信手段だけではない。サービスの存在を、ネットワーク上で発見するものから、制御プレーンや名前解決で定義するものへ変更することになる。

6. 観測を「全部見える場所を作る」問題として考える

オンプレミスでは、SPAN、TAP、ミラーポートによって、特定の場所を通るパケットを観測する設計ができる。

この発想のまま AWS を見ると、どこかにミラーポート相当の場所を作れば全体を観測できるように見える。

AWS では、観測もクラウド側の抽象に従う。VPC Traffic Mirroring、VPC Flow Logs、サービスログ、CloudWatch などを目的別に使い分ける必要がある。

そのため、観測設計も「どこをミラーするか」ではなく、「どのレイヤーの何を証跡として取得するか」に変わる。

AWS VPC は L2 の再現ではなく、到達性モデルである

AWS VPC を理解する上で重要なのは、クラウドネットワークをオンプレミス L2 の再現として見ないことである。

オンプレミスでは、ネットワークは L2 から構築する対象である。

AWS では、ネットワークは AWS が定義した到達性モデルを組み合わせる対象である。

この差分を整理すると、次のようになる。

観点オンプレミスAWS VPC
出発点物理 / 仮想 L2VPC / Subnet / ENI
分離単位VLAN / VRFVPC / Subnet / Route Table / SG / NACL
制御対象Port / VLAN / MAC / IP / RouteENI / IP / Route Table / SG / NACL
冗長化STP / MLAG / LACP / VRRPAZ / ENI / Route / LB / DNS / TGW
観測SPAN / TAPVPC Traffic Mirroring / Flow Logs
サービス探索Broadcast / Multicast / DNSDNS / API / Service Discovery / LB
FirewallL2 透過 / L3 RoutedSG / NACL / Routed FW / GWLB

AWS VPC は、オンプレミスの L2 自由度をそのまま再現する仕組みではない。

利用者に必要な到達性、分離、制御、観測の機能を、クラウド側が管理する抽象モデルとして提供している。

まとめ

AWS VPC において L2 が原理的に存在しないわけではない。

物理 NIC、仮想 NIC、MAC、転送プレーン、SDN 的な制御は当然存在する。しかし、それらは AWS の責任境界内に閉じられており、利用者が VLAN、ブロードキャストドメイン、MAC 学習、透過 Firewall、VRRP、VLAN trunk として自由に扱うものではない。

AWS が利用者に渡しているのは、自由な仮想 Ethernet ではない。VPC、Subnet、ENI、Private IP、Route Table、Security Group、NACL、Load Balancer、Transit Gateway、Gateway Load Balancer などによって構成される、クラウド側で制御された到達性モデルである。

オンプレミスの L2 概念は、AWS 上である程度翻訳できる。しかし、その翻訳は等価変換ではない。切替速度、検知方式、制御主体、観測範囲、障害時の責任境界、運用手順が変わる。

したがって、クラウドネットワーク設計で重要なのは、L2 を再現することではない。AWS が提供する抽象化された到達性モデルを理解し、その制約と責任境界の中で、必要な性質を再設計することである。

オンプレミスから AWS へのネットワーク設計の移行は、L2 構成の移植ではなく、必要な性質を AWS の到達性モデルへ翻訳する作業である。そして、その翻訳は等価変換ではない。

AWS VPC に L2 は存在しないのか?オンプレネットワーク設計者から見たクラウドネットワークの抽象化

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る