ジュニパーのrib骨グループの謎を解く

私の友人の多くは、ジュニパーのJunOS内のrib骨グループの動作メカニズムを完全に理解していません。 この記事では、それが何であるかを最も簡単に説明しようとします-rib骨群と、それらがなぜ必要なのか。

カットの下の詳細。





最初に、Junosのルーティングテーブルがどのように読み込まれるかを理解する必要があります。 これは(概略的に)次のように発生します。



[プロトコル] _____ [プロトコルのデータベース] _____ [RIB]



ここで:



protocol-Junosルーティングプロトコル(これは厳密にはルーティングプロトコルではありません

これには、たとえばルーターインターフェイスも含まれます)



プロトコルのdb-プロトコルデータベース(例:isis / ospf / bgpデータベース) すべてのルートがここに入力され、最適なルートが選択された後、RIBにインストールされます。



RIBはルーティングテーブルそのものです。 使用するプロトコルと使用する場所によって異なります(例:Ipv4ルートはinet.0、ldpはinet.3、vrf / virtルーター内のルートは<vrf.name> .inet.0など)



リブグループメカニズムにより、次の構造を使用できます。



[protocol] _________ [protocol's db] ______________________ [RIB-Group]、



ここで、RIBグループは以下で構成されます。

プライマリRIB-プロトコルがデフォルトでルートをインストールするテーブル

セカンダリRIB-プロトコルにルートもインストールする1つ以上の追加のルーティングテーブル。

Import-Policy-セカンダリRIBへのインストールを許可するルートと、許可しないルートを記述するポリシー。



ルーティングプロトコルから受け取ったルートを、デフォルトで動作するテーブルだけでなく、その他にもインストールする機会を得ました。 さらに、プライマリおよびセカンダリRIBの概念が表示されます。 (インポートポリシーを使用して)セカンダリRIBにインストールするルートを明示的に指定できる点が異なります(インポートポリシーに関係なく、すべてがプライマリにインストールされます)。



リブグループを使用した例を考えてみましょう。



例:

指定:MPLSネットワーク、その中にIGPとMP-BGPのみが実行されている専用BGP RR(これらのLDP / RSVP-TEは存在しません(たとえば、JCSをリフレクターとして使用し、転送方法がわからないため、LDPはありません) +安定性(不要なものはすべてオフになっているため)が必要です)、それに応じて、inet.3テーブルにルートをインストールする人はいません)。 このシナリオの問題は、vpnv4ルートを適切にするには、Junosのbgpの観点から、そのネクストホップがinet.3テーブル内にある必要があるということです。



root@JunLAB:RR> show route table bgp.l3vpn.0



bgp.l3vpn.0: 9 destinations, 9 routes (0 active, 0 holddown, 9 hidden )



root@JunLAB:RR>







9つの隠されたルート。 理由:



root@JunLAB:RR> ...ute table bgp.l3vpn.0 hidden extensive | grep "Next hop"

Next hop type: Unusable









root@JunLAB:RR> show route table inet.3



root@JunLAB:RR>







inet.3が空であるように



LDPはオフになっていますが、デフォルトですべてをinetにインストールするIGPがあります。



inet.0とinet.3を含むrib-groupを作成し、bgpループバックルートのみがinet.3にインストールされていることを確認します(ルートフィルターと既知のIPアドレス範囲を使用)。



リブグループの説明:



root@JunLAB:RR> show configuration routing-options

rib-groups {

MPBGP_LB {

import-rib [ inet.0 inet.3 ];

import-policy INET3_LB;

}

}







ここで:

inet.0-プライマリ

inet.3-セカンダリ



ポリシーの説明:



policy-statement INET3_LB {

term LOOPBACKS {

from {

route-filter 192.168.250.0/24 longer;

}

to rib inet.3;

then accept;

}

then reject;

}









IGPへのポリシーのバインド:



root@JunLAB:RR# show protocols isis

lsp-lifetime 65535;

no-ipv6-routing;

rib-group inet MPBGP_LB;

level 1 disable;

level 2 wide-metrics-only;

interface fxp1.14 {

point-to-point;

}

interface lo0.8 {

passive;

}








commitaの後、ループバックへのルートがinetであることを確認してください。



root@JunLAB:RR> show route table inet.3



inet.3: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)

+ = Active Route, - = Last Active, * = Both



192.168.250.1/32 *[IS-IS/18] 00:00:41, metric 20

> to 10.0.0.25 via fxp1.14

192.168.250.2/32 *[IS-IS/18] 00:00:41, metric 20

> to 10.0.0.25 via fxp1.14

192.168.250.3/32 *[IS-IS/18] 00:00:41, metric 10

> to 10.0.0.25 via fxp1.14

192.168.250.4/32 *[IS-IS/18] 00:00:41, metric 30

> to 10.0.0.25 via fxp1.14

192.168.250.5/32 *[IS-IS/18] 00:00:41, metric 30

> to 10.0.0.25 via fxp1.14

192.168.250.6/32 *[IS-IS/18] 00:00:41, metric 20

> to 10.0.0.25 via fxp1.14

192.168.250.7/32 *[IS-IS/18] 00:00:41, metric 30

> to 10.0.0.25 via fxp1.14



root@JunLAB:RR>








また、inet内にはネクストホップへのルートがあるため、vpnv4ルートは非表示になりません。



bgp.l3vpn.0: 9 destinations, 9 routes ( 9 active , 0 holddown, 0 hidden)

+ = Active Route, - = Last Active, * = Both



192.168.250.1:1:192.168.0.0/30

*[BGP/170] 00:22:08, localpref 100, from 192.168.250.1

AS path: I

> to 10.0.0.25 via fxp1.14, Push 16

...









また、リブグループは、vrfs間のルートリークを作成する必要がある場合に非常に便利です(IOSでは、このためにbgpプロセスを上げる必要があります。Junosでは、それなしで実行できます)。

または、vrfからGRTへのリークを実行します(IOSでは、これを実行できません(静的ルートを除き、あまり便利ではありません)。また、rib-groupはFBF(フィルターベースフォワーディング-シスコの世界のPBRのアナログ)で使用されます。



All Articles