第5章 BGP ルーティング
5.1. BGP ルーティングについて リンクのコピーリンクがクリップボードにコピーされました!
この機能は、クラスターにネイティブの Border Gateway Protocol (BGP) ルーティング機能を提供します。
MetalLB Operator を使用しており、クラスター管理者、または MetalLB Operator 以外のサードパーティークラスターコンポーネントによって作成された metallb-system namespace に既存の FRRConfiguration CR がある場合は、それらが openshift-frr-k8s namespace にコピーされているか、そのサードパーティークラスターコンポーネントが新しい namespace を使用していることを確認する必要があります。詳細は、FRR-K8s リソースの移行 を参照してください。
5.1.1. Border Gateway Protocol (BGP) ルーティングについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、FRRouting (FRR) を通じて BGP ルーティングをサポートします。FRR は、Linux、UNIX、および同様のオペレーティングシステム向けの無料のオープンソースインターネットルーティングプロトコルスイートです。FRR-K8s は、Kubernetes に準拠した方法で FRR API のサブセットを公開する Kubernetes ベースのデーモンセットです。クラスター管理者は、FRRConfiguration カスタムリソース (CR) を使用して FRR サービスにアクセスできます。
5.1.1.1. サポートされているプラットフォーム リンクのコピーリンクがクリップボードにコピーされました!
BGP ルーティングは、次のインフラストラクチャータイプでサポートされています。
- ベアメタル
BGP ルーティングでは、ネットワークプロバイダーに対して BGP が適切に設定されている必要があります。ネットワークプロバイダーの停止や設定ミスにより、クラスターネットワークが中断される可能性があります。
5.1.1.2. MetalLB Operator の使用に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
MetalLB Operator は、クラスターへのアドオンとしてインストールされます。MetalLB Operator をデプロイすると、FRR-K8s が追加のルーティング機能プロバイダーとして自動的に有効になり、この機能によってインストールされた FRR-K8s デーモンが使用されます。
4.18 にアップグレードする前に、MetalLB Operator によって管理されていない metallb-system namespace 内の既存の FRRConfiguration (クラスター管理者またはその他のコンポーネントにより追加) を、openshift-frr-k8s namespace に手動でコピーし、必要に応じて namespace を作成する必要があります。
MetalLB Operator を使用しており、クラスター管理者、または MetalLB Operator 以外のサードパーティークラスターコンポーネントによって作成された既存の FRRConfiguration CR が metallb-system namespace に存在する場合は、次の操作を行う必要があります。
-
既存の
FRRConfigurationCR がopenshift-frr-k8snamespace にコピーされていることを確認します。 -
サードパーティークラスターコンポーネントが、作成する
FRRConfigurationCR に新しい namespace を使用することを確認します。
5.1.1.3. Cluster Network Operator の設定 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Network Operator API は、BGP ルーティングを設定するために次の API フィールドを公開します。
-
spec.additionalRoutingCapabilities: ルートアドバタイズメントとは独立して使用できるクラスターの FRR-K8s デーモンのデプロイメントを有効にします。有効にすると、FRR-K8s デーモンがすべてのノードにデプロイされます。
5.1.1.4. BGP ルーティングカスタムリソース リンクのコピーリンクがクリップボードにコピーされました!
BGP ルーティングの設定には、次のカスタムリソースが使用されます。
FRRConfiguration- このカスタムリソースは、BGP ルーティングの FRR 設定を定義します。この CR には namespace があります。
5.1.2. FRRConfiguration CRD の設定 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、FRRConfiguration カスタムリソース (CR) を使用する参照例を示します。
5.1.2.1. routers フィールド リンクのコピーリンクがクリップボードにコピーされました!
routers フィールドを使用して、Virtual Routing and Forwarding (VRF) リソースごとに 1 つずつ、複数のルーターを設定できます。各ルーターに AS 番号 (ASN) を定義する必要があります。
次の例のように、接続する Border Gateway Protocol (BGP) の近隣のリストを定義することもできます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
- address: 172.18.0.6
asn: 4200000000
port: 179
5.1.2.2. toAdvertise フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s はルーター設定の一部として設定された接頭辞をアドバタイズしません。これらをアドバタイズするには、toAdvertise フィールドを使用します。
次の例のように、接頭辞のサブセットをアドバタイズできます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
toAdvertise:
allowed:
prefixes:
- 192.168.2.0/24
prefixes:
- 192.168.2.0/24
- 192.169.2.0/24
- 1
- 接頭辞のサブセットをアドバタイズします。
次の例は、すべての接頭辞をアドバタイズする方法を示しています。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
toAdvertise:
allowed:
mode: all
prefixes:
- 192.168.2.0/24
- 192.169.2.0/24
- 1
- すべての接頭辞をアドバタイズします。
5.1.2.3. toReceive フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s は近隣によってアドバタイズされた接頭辞を処理しません。toReceive フィールドを使用して、このようなアドレスを処理できます。
次の例のように、接頭辞のサブセットを設定できます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.18.0.5
asn: 64512
port: 179
toReceive:
allowed:
prefixes:
- prefix: 192.168.1.0/24
- prefix: 192.169.2.0/24
ge: 25
le: 28
次の例では、アナウンスされたすべての接頭辞を処理するように FRR を設定します。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.18.0.5
asn: 64512
port: 179
toReceive:
allowed:
mode: all
5.1.2.4. bgp フィールド リンクのコピーリンクがクリップボードにコピーされました!
bgp フィールドを使用して、さまざまな BFD プロファイルを定義し、それらを近隣に関連付けることができます。次の例では、BFD は、BGP セッションをバックアップし、FRR はリンク障害を検出できます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 64512
port: 180
bfdProfile: defaultprofile
bfdProfiles:
- name: defaultprofile
5.1.2.5. nodeSelector フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s は、デーモンが実行されているすべてのノードに設定を適用します。nodeSelector フィールドを使用して、設定を適用するノードを指定できます。以下に例を示します。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
nodeSelector:
labelSelector:
foo: "bar"
5.1.2.6. interface フィールド リンクのコピーリンクがクリップボードにコピーされました!
spec.bgp.routers.neighbors.interface フィールドは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
次の設定例を使用し、interface フィールドを使用して番号なし BGP ピアリングを設定できます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
bfdProfiles:
- echoMode: false
name: simple
passiveMode: false
routers:
- asn: 64512
neighbors:
- asn: 64512
bfdProfile: simple
disableMP: false
interface: net10
port: 179
toAdvertise:
allowed:
mode: filtered
prefixes:
- 5.5.5.5/32
toReceive:
allowed:
mode: filtered
prefixes:
- 5.5.5.5/32
- 1
- 番号なし BGP ピアリングをアクティブ化します。
interface フィールドを使用するには、2 つの BGP ピア間にポイントツーポイントのレイヤー 2 接続を確立する必要があります。番号なし BGP ピアリングは、IPv4、IPv6、またはデュアルスタックで使用できますが、IPv6 RA (ルーターアドバタイズメント) を有効にする必要があります。各インターフェイスは 1 つの BGP 接続に制限されます。
このフィールドを使用する場合は、spec.bgp.routers.neighbors.address フィールドに値を指定できません。
FRRConfiguration カスタムリソースのフィールドは、次の表で説明されています。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
| FRR が設定するルーターを指定します (VRF ごとに 1 つ)。 |
|
|
| セッションのローカル側で使用する AS 番号 (ASN)。 |
|
|
|
|
|
|
| このルーターからセッションを確立するために使用されるホスト VRF を指定します。 |
|
|
| BGP セッションを確立する近隣を指定します。 |
|
|
|
セッションのリモート終了に使用する ASN を指定します。このフィールドを使用する場合は、 |
|
|
|
明示的に設定せずに、セッションのリモートエンドに使用する ASN を検出します。同じ ASN を持つネイバーの場合は |
|
|
|
セッションを確立する IP アドレスを指定します。このフィールドを使用する場合は、 |
|
|
|
セッションを確立するときに使用するインターフェイス名を指定します。このフィールドを使用して、番号なし BGP ピアリングを設定します。2 つの BGP ピア間には、ポイントツーポイントのレイヤー 2 接続が必要です。番号なし BGP ピアリングは、IPv4、IPv6、またはデュアルスタックで使用できますが、IPv6 RA (ルーターアドバタイズメント) を有効にする必要があります。各インターフェイスは 1 つの BGP 接続に制限されます。 |
|
|
| セッションを確立するときにダイアリングするポートを指定します。デフォルトは 179 です。 |
|
|
|
BGP セッションの確立に使用するパスワードを指定します。 |
|
|
|
ネイバーの認証シークレットの名前を指定します。シークレットは "kubernetes.io/basic-auth" タイプであり、FRR-K8s デーモンと同じ namespace にある必要があります。キー "password" はパスワードをシークレットに保存します。 |
|
|
| RFC4271 に従って、要求された BGP ホールド時間を指定します。デフォルトは 180s です。 |
|
|
|
RFC4271 に従って、要求された BGP キープアライブ時間を指定します。デフォルトは |
|
|
| BGP が近隣に次に接続を試行するまで待機する時間を指定します。 |
|
|
| BGPPeer がマルチホップ分、離れているかどうかを示します。 |
|
|
| BGP セッションに関連付けられた BFD セッションに使用する BFD プロファイルの名前を指定します。設定されていない場合、BFD セッションは設定されません。 |
|
|
| 近隣にアドバタイズする接頭辞のリストと、関連するプロパティーを表します。 |
|
|
| 近隣にアドバタイズする接頭辞のリストを指定します。このリストは、ルーターで定義した接頭辞と一致する必要があります。 |
|
|
|
接頭辞を処理するときに使用するモードを指定します。接頭辞リスト内の接頭辞のみを許可するように |
|
|
| アドバタイズされたローカルプリファレンスに関連付けられた接頭辞を指定します。ローカル設定に関連付けられた接頭辞を、アドバタイズが許可される接頭辞に指定する必要があります。 |
|
|
| ローカル設定に関連付けられた接頭辞を指定します。 |
|
|
| 接頭辞に関連付けられたローカル設定を指定します。 |
|
|
| アドバタイズされた BGP コミュニティーに関連付けられた接頭辞を指定します。アドバタイズする接頭辞のリストに、ローカル設定に関連付けられた接頭辞を含める必要があります。 |
|
|
| コミュニティーに関連付けられた接頭辞を指定します。 |
|
|
| 接頭辞に関連付けられたコミュニティーを指定します。 |
|
|
| 近隣から受信する接頭辞を指定します。 |
|
|
| 近隣から受信する情報を指定します。 |
|
|
| 近隣から許可される接頭辞を指定します。 |
|
|
|
接頭辞を処理するときに使用するモードを指定します。 |
|
|
| MP BGP を無効にして、IPv4 と IPv6 のルート交換を別々の BGP セッションに分離しないようにします。 |
|
|
| このルーターインスタンスからアドバタイズするすべての接頭辞を指定します。 |
|
|
| 近隣を設定するときに使用する BFD プロファイルのリストを指定します。 |
|
|
| 設定の他の部分で参照される BFD プロファイルの名前。 |
|
|
|
このシステムが制御パケットを受信できる最小間隔をミリ秒単位で指定します。デフォルトは |
|
|
|
このシステムが BFD 制御パケットを送信するために使用する、ジッターを除いた最小送信間隔をミリ秒単位で指定します。デフォルトは |
|
|
| パケット損失を判定するための検出乗数を設定します。接続損失検出タイマーを決定するには、リモート送信間隔にこの値を乗算します。 |
|
|
|
このシステムが処理できる最小のエコー受信送信間隔をミリ秒単位で設定します。デフォルトは |
|
|
| エコー送信モードを有効または無効にします。このモードはデフォルトで無効になっており、マルチホップ設定ではサポートされていません。 |
|
|
| セッションを passive としてマークします。passive セッションでは接続を開始せず、応答を開始する前にピアからの制御パケットを待機します。 |
|
|
| マルチホップセッションのみ。着信 BFD 制御パケットの最小予想 TTL を設定します。 |
|
|
| この設定の適用を試みるノードを制限します。指定した場合、指定されたセレクターに一致するラベルが割り当てられたノードのみが設定の適用を試みます。指定されていない場合は、すべてのノードがこの設定を適用しようとします。 |
|
|
| FRRConfiguration の監視状態を定義します。 |