MPLS とは
MPLS (Multi-Protocol Label Switching)は、様々な L2/L3 プロトコル (IPv4/IPv6/Ethernet/ATM/Frame-Relay 等) にラベルを取り付け、そのラベルに基づいてそのプロトコルを高速に転送するスイッチング方法です。
MPLS による具体的な流れを以下に示します。
MPLS の仕組みとメリット
まずは OSPF 等のルーティングプロトコルによりルート情報を伝搬します。
次に LDP 等のラベル伝搬プロトコルによりそのルート情報に対応するラベル情報を伝搬します。
下図の例にある通り、このラベルは、同じルート情報であっても、ルータ毎に異なっていても構いません。ラベル情報が伝搬したらデータ転送ができる準備が整ったことになります。
すると MPLS によるデータ転送が可能になります。MPLS 網内でラベル (Label) を交換 (Switching) しながら目的地に向かいます。
通常の IP パケットルーティングでは IP ヘッダ (主に 32 bits の宛先 IP アドレスですが、特殊なケースではソースルーティングのようなオプションがあるため可変長) によりルーティングを決定していましたが、MPLS では20 bits の ラベル (固定長) だけで判断できるため、高速転送が可能となる訳です。
しかしこれはルーティングをソフトウェア処理 (CPU 処理) していた時代の話であり、最近はこのメリットはほとんどありません。というのも、最近のルータはルーティングもハードウェア処理 (ASIC 処理) をしているためです。
MPLS はもともとは ATM 上で IP を運ぶ際の高速転送技術として発展してきましたが、現在の活用方法としてはMPLS-VPNという VPN 構築などの多用途で大きなウェイトを占めています。
MPLS にはデータリンクヘッダと IP ヘッダの間にラベルを含む 20 bits の MPLS ヘッダ (Shim ヘッダ) を取り付けるフレームモード (パケットモード)と、 ATM の VPI/VCI や Frame-Relay の DLCI にラベルをマッピングするセルモードの 2 種類がありますが、最近は Ethernet がネットワークの主流となっており、ここではフレームモードをメインに解説します。
MPLS のレイヤー
MPLS の役割は転送です。レイヤー 2.5 だと主張する声もあるようですが、nesuke 的にはMPLS のレイヤーは 3 です。
レイヤー 2 は主にレイヤー 1 に紐付くビット伝送方式が定義されているものです。つまり、光ケーブルなら光ケーブルなりの、メタルケーブルならメタルケーブルなりの、ISDN 回線なら ISDN 回線なりの適したビット伝送方式があるわけで、それを担うのがレイヤー 2 です。
MPLS では特にそのような役割は無く、IP と同じく、宛先情報を見て転送先を決定するだけです。なのでレイヤー 3 と考えられます。
MPLSヘッダ(Shimヘッダ)のフォーマット
Ethernet 上で IPv4 に MPLS ラベルを付ける場合の MPLS ヘッダ (Shim ヘッダ) のフォーマットを以下に示します。
Label Field
20 bits。転送先を決定する識別子。なお、Label は宛先 NW アドレスではなくFEC (Forwarding Equivalence Class) 毎に割り当てられます。
FEC とは、簡単に言うと、"MPLS NW 内で、同じ振る舞いをさせたいパケットの集まり" のことで、ユニキャストの場合、例えば、 宛先 NW アドレスや ToS 等の値、もしくはそれらの組合せ等によりクラス分けされます。
一番わかりやすい事例は "FEC = 宛先 NW アドレス" になります。マルチキャストの場合は、例えば、送信元/宛先 IP アドレスの組合せ等によりクラス分けされます。
EXP Field
3 bits。実験的に利用されるビットで、現在は IP Precedence の情報をマッピングしてQoS の目的で利用されています。
S Field
1 bit。スタックビット。MPLS ヘッダは 1 つのパケットに 2 つ以上おくことができます。
このスタックビットが 0 の場合、その MPLS ヘッダの後に さらに MPLS ヘッダが続くことを示します。
スタックビットが 1 の場合、その MPLS ヘッダの後には IPv4 等の転送するプロトコルが続きます。
MPLS-VPN では、1 つのパケットに 2 つの MPLS ヘッダを利用しています。
TTL Field
8 bits。IP ヘッダの TTL と同様、ループ防止のために使われます。
MPLS が取り付けられるタイミングで新たにセットすることもできますし、IP ヘッダの TTL 値をセットする (TTL Propagation) こともできます。
コメント