◆ MPLS - MPLSルータのパケット転送( PHP無効の動作 )
MPLSを有効にしたルータ、つまりLERやLSRでは、IPパケットを受信するとFIBテーブルを参照して転送を
行いラベル付きパケットを受信するとLFIBテーブルを参照して転送を行います。これらのテーブルに宛先の
情報がない場合はそのパケットは破棄されます。以下は後に解説するPHPという機能が無効な時の動作です。
PHP機能が無効な場合、Egress LSR(出口側のLSR)であるLERは、LFIBテーブルとFIBテーブルの両方を
参照してから転送する必要がありますが、PHP機能が有効にした場合は高速な転送処理が可能になります。
◆ MPLS - MPLSルータのパケット転送( PHP有効の動作 )
PHPはLERの1つ前のLSRでラベルを外して転送する技術です。これにより下図の通り、LER (Egress LSR) は
LFIBテーブルを参照することなく、FIBテーブルだけを参照して転送するようになるので、より効率的な動作が
実現することになります。CiscoルータではデフォルトでPHPが有効なため以下の動作がデフォルトとなります。
PHPが有効な場合は、LERは自身配下にいるネットワークを隣接するLSRに、LDPでラベル情報を通知する時、
LERは自身配下にいるネットワークのラベルをImplicit Nullとして通知します。Implicit Nullのラベル情報を
学習したLSRは、LFIBテーブル上でこのネットワークに対しラベルをPop (外す) 位置付けとして学習します。
※ Implicit Null(暗黙のヌル)、つまり、最後のLERからの通知だからラベル外して当然でしょ?暗黙の了解でしょ? ということ。
ちなみにPHPは、Penultimate Hop Poping の略です。Penultimateは「最後から2番目の」という意味です。
上図の通り、最後から2番目のLSRで、ラベル付きパケットのラベルを外してパケットをフォワードしています。
理解できたでしょうか。いきなりFIBテーブルとLFIBテーブルで見ると理解するのが難しいかもしれないので、
FIBテーブルとLFIBテーブルのもとである、ルーティングテーブルとLIBテーブルもその内容を見てみましょう。
※ なぜ、CiscoルータでDirectly Connectのネットワークの local binding が imp-null なのか、それはPHPが有効だからです。
◆ MPLS - LSRで行うラベル処理
LSRで行っているラベル処理が色々と出てきたので整理します。LSRで行うラベル処理は全部で4つあります。
LSRのラベル処理 |
説明 |
Insert ( Impose ) |
IPパケットへのラベル付加。主にMPLS網の入口となるLER ( Ingress LSR ) で行う。 |
Swap |
先頭ラベルの交換。主にMPLS網内のLSRで行う。 |
Remove ( Pop ) |
先頭ラベルの除去。主にMPLS網内のLSRで行う。 |
Untag |
ラベルの全ての除去。主にMPLS網の出口となるLER ( Egress LSR ) で行う。 |
LSRのラベル処理で先頭ラベルの交換、先頭ラベルの除去など「先頭」という言葉が気になります。MPLSでは
複数のラベルを付加することができます。これを「ラベルスタック」と言いますが、MPLS-VPN実装時には
2つのラベルが付加されることになるのでこのRemove(Pop)とUntagの違いがよく理解できると思います。
現時点では、LSRはラベルスタックされたラベルパケットを受信した場合、先頭ラベルのみを参照してラベル
スイッチングすることを理解しておきましょう。
|