ジュニパーの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のアナログ)で使用されます。

Source: https://habr.com/ru/post/J111687/


All Articles