MPLS(Multiprotocol Label Switching)とは

MPLS(Multiprotocol Label Switching)とは

MPLSの概要 

MPLSはIETFにより標準化されているパケット転送技術です.IPルーティングではルーターはIPパケットを受け取り,そのIPヘッダを読み取ってルーティングテーブルの情報を元にパケットを転送します.

MPLSではパケットにラベルと呼ばれる固定長の識別子を付与し,その情報を元にパケットを転送します.MPLSの利点はこの固定長のラベルによる転送処理の高速性がありますが,現在の高性能化したネットワーク機器ではそのメリットは大きなものではなくなっています.

もう一つの利点はトラフィックエンジニアリングによるトラフィックフローのコントロールです.これは,トラフィックのバランシングを図り,特定の経路へ負荷が偏ることを防止します.かつてATMによって実現されていた高度なトラフィックエンジニアリング機能を既存の設備の上で動作させることが可能となりました.

MPLSは多くのサービスプロバイダのバックボーンや企業間のWAN網として使われるようになり,MPLSを利用したVPNやVPLSなどの技術の元として広く活用されています.

LSP(Label Switching Path) 

MPLSによって構成されるIPパケットの転送経路をLSPと呼びます.LSPはFEC(Forwarding Equivalence Class)と呼ばれるトラフィックフローの識別子ごとに生成されます.

ラベル 

MPLSではラベルと呼ばれる識別子をパケットに付与します.シムヘッダとも呼ばれます.MPLSラベルは32bitsの固定長です.このMPLSラベルを元にLSPパスに沿って転送が行われます.

Formatsize[bits]description
Label20MPLSラベルがマッピングされるフィールド.値は0~1,048,575.0~15は予約済み.
EXP3CoS情報を含むフィールド.
S(Stacking)1MPLSがスタッキングされていることを示す.1はボトムラベルで,0はMPLSラベルが積み重なっていることを示す.
TTL8TTL値を格納するフィールド.IPヘッダのTTLがコピーされたものが入る.ラベルがポップされる時IPヘッダのTTLが上書きする.
Label numberdescription
0IPv4 Explicit NULL Label.MPLSヘッダをポップしてIPv4ルーティングによりパケットを処理する.(UHP:Ultimate Hop Popping)
1Router Alert Label.ラベル情報で処理せず,ソフトウェア処理を行う.
2IPv6 Explicit NULL Label.MPLSヘッダをポップしてIPv6ルーティングによりパケットを処理する.
3Implicit NULL Label.Penultimate LSRで使用され,MPLSラベルをポップする.(PHP:Penultimate Hop Popping)
4~15RFCによって将来のために予約済み.
16~1,023VPN VRF routing tableのマッピングラベルに使用される.
1,024~99,999JUNOSの将来のサポート用に予約済み,スタティックLSPでの定義に使用可能.
100,000~1,048,575LSPの構築用に自動的に使用される,(LDP, RSVP)

ラベル操作 

MPLSでは以下のようなラベル操作を行います.

operationdescription
PushLSPでパケットにMPLSラベルを追加する操作.Ingressルーターによって処理される.
SwapLSRを通過するたびにMPLSラベルを交換する処理.トランジットルーターによって行われる.
PopMPLSラベルを削除してIPパケットにする処理.PenultimateLSRによって行われる.

LSR(Label Switching Router) 

MPLS網はLSRと呼ばれるMPLSをサポートするルーターで構成されます.LSR同士はLDPやRSVPを使用してラベル情報を交換します.MPLS網内ではLSRがパケットに対して入力ラベルと出力ラベルをスワップして次のLSRに転送します.LSRにはその役割によりいくつかの種類があります.役割はLSPごとに定められ,一つのルーターが複数の役割を持つこともあります.

Roledescription
IngressルータIngressルータはMPLS網内に入るデータの入り口となる.IPパケットにMPLSラベルを付与し,カプセル化する(Push).カプセル化されたパケットはLSPの出口に到着するまでラベルを見てスイッチングされる.
TransitルータLSPの中間に存在する全てのルータがトランジットルーターとなる.一つのLSPは0~253個のルーターで生成できる(Igress, Egressルーターを除く).トランジットルーターは受信したMPLSパケットのラベルを見てMPLS転送テーブルを参照し,スワップ操作を行なったのちにMPLS TTLを1減らす.
Penultimateルータトランジットルーターの1つに含まれるが,LSPの最後から2番目,Egressルータの1つ前でラベルポップの操作を行う(PHP操作).1つ手前のルーターでポップ操作をすることにより,Egressルータの処理負荷を下げることができる.
EgressルータEgressルータはLSPの出口となるルーター.Penultimateルーターからパケットを受信し,IPのルートを見てパケットを転送する.

MPLSの基本設定 (JUNOS)

インタフェースへのMPLSファミリ適用 

MPLSを使用するインタフェースへMPLSファミリを適用します.loインタフェースやfxpインタフェースなどの管理インタフェースにはMPLSラベルを設定できません.

set interfaces ge-0/0/0 unit 0 family mpls

MPLSプロトコルの設定 

MPLS Protocolの設定を行います.MPLSを有効にするインタフェースを設定します.

set protocols mpls interface ge-0/0/0.0

もしくは以下のように全てのインタフェースを設定した後,無効にするインタフェースを設定することも可能です.

set protocols mpls interface all
set protocols mpls interface ge-0/0/1.0 disable

MPLS設定の確認 

MPLSが有効になっているインタフェースを確認します.

show interfaces terse

MPLSが有効になっているインタフェースのみを確認します.

show mpls interface