第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 に存在する場合は、次の操作を行う必要があります。

  • 既存の FRRConfiguration CR が openshift-frr-k8s namespace にコピーされていることを確認します。
  • サードパーティークラスターコンポーネントが、作成する FRRConfiguration CR に新しい 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
Copy to Clipboard Toggle word wrap

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: 
1

            - 192.168.2.0/24
      prefixes:
        - 192.168.2.0/24
        - 192.169.2.0/24
Copy to Clipboard Toggle word wrap

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 
1

      prefixes:
        - 192.168.2.0/24
        - 192.169.2.0/24
Copy to Clipboard Toggle word wrap

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 
1

                le: 28 
2
Copy to Clipboard Toggle word wrap

1 2
接頭辞の長さが le 接頭辞長以下で、ge 接頭辞長以上である場合に適用されます。

次の例では、アナウンスされたすべての接頭辞を処理するように 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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

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"
Copy to Clipboard Toggle word wrap

5.1.2.6. interface フィールド

次の設定例を使用し、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 
1

        port: 179
        toAdvertise:
          allowed:
            mode: filtered
            prefixes:
            - 5.5.5.5/32
        toReceive:
          allowed:
            mode: filtered
      prefixes:
      - 5.5.5.5/32
Copy to Clipboard Toggle word wrap

1
番号なし BGP ピアリングをアクティブ化します。
注記

interface フィールドを使用するには、2 つの BGP ピア間にポイントツーポイントのレイヤー 2 接続を確立する必要があります。番号なし BGP ピアリングは、IPv4、IPv6、またはデュアルスタックで使用できますが、IPv6 RA (ルーターアドバタイズメント) を有効にする必要があります。各インターフェイスは 1 つの BGP 接続に制限されます。

このフィールドを使用する場合は、spec.bgp.routers.neighbors.address フィールドに値を指定できません。

FRRConfiguration カスタムリソースのフィールドは、次の表で説明されています。

Expand
表5.1 MetalLB FRRConfiguration カスタムリソース
フィールド説明

spec.bgp.routers

array

FRR が設定するルーターを指定します (VRF ごとに 1 つ)。

spec.bgp.routers.asn

integer

セッションのローカル側で使用する AS 番号 (ASN)。

spec.bgp.routers.id

string

bgp ルーターの ID を指定します。

spec.bgp.routers.vrf

string

このルーターからセッションを確立するために使用されるホスト VRF を指定します。

spec.bgp.routers.neighbors

array

BGP セッションを確立する近隣を指定します。

spec.bgp.routers.neighbors.asn

integer

セッションのリモート終了に使用する ASN を指定します。このフィールドを使用する場合は、spec.bgp.routers.neighbors.dynamicASN フィールドに値を指定できません。

spec.bgp.routers.neighbors.dynamicASN

string

明示的に設定せずに、セッションのリモートエンドに使用する ASN を検出します。同じ ASN を持つネイバーの場合は internal を指定し、異なる ASN を持つネイバーの場合は external を指定します。このフィールドを使用する場合は、spec.bgp.routers.neighbors.asn フィールドに値を指定できません。

spec.bgp.routers.neighbors.address

string

セッションを確立する IP アドレスを指定します。このフィールドを使用する場合は、spec.bgp.routers.neighbors.interface フィールドに値を指定できません。

spec.bgp.routers.neighbors.interface

string

セッションを確立するときに使用するインターフェイス名を指定します。このフィールドを使用して、番号なし BGP ピアリングを設定します。2 つの BGP ピア間には、ポイントツーポイントのレイヤー 2 接続が必要です。番号なし BGP ピアリングは、IPv4、IPv6、またはデュアルスタックで使用できますが、IPv6 RA (ルーターアドバタイズメント) を有効にする必要があります。各インターフェイスは 1 つの BGP 接続に制限されます。

spec.bgp.routers.neighbors.port

integer

セッションを確立するときにダイアリングするポートを指定します。デフォルトは 179 です。

spec.bgp.routers.neighbors.password

string

BGP セッションの確立に使用するパスワードを指定します。PasswordPasswordSecret は同時に使用できません。

spec.bgp.routers.neighbors.passwordSecret

string

ネイバーの認証シークレットの名前を指定します。シークレットは "kubernetes.io/basic-auth" タイプであり、FRR-K8s デーモンと同じ namespace にある必要があります。キー "password" はパスワードをシークレットに保存します。PasswordPasswordSecret は同時に使用できません。

spec.bgp.routers.neighbors.holdTime

duration

RFC4271 に従って、要求された BGP ホールド時間を指定します。デフォルトは 180s です。

spec.bgp.routers.neighbors.keepaliveTime

duration

RFC4271 に従って、要求された BGP キープアライブ時間を指定します。デフォルトは 60s です。

spec.bgp.routers.neighbors.connectTime

duration

BGP が近隣に次に接続を試行するまで待機する時間を指定します。

spec.bgp.routers.neighbors.ebgpMultiHop

boolean

BGPPeer がマルチホップ分、離れているかどうかを示します。

spec.bgp.routers.neighbors.bfdProfile

string

BGP セッションに関連付けられた BFD セッションに使用する BFD プロファイルの名前を指定します。設定されていない場合、BFD セッションは設定されません。

spec.bgp.routers.neighbors.toAdvertise.allowed

array

近隣にアドバタイズする接頭辞のリストと、関連するプロパティーを表します。

spec.bgp.routers.neighbors.toAdvertise.allowed.prefixes

string array

近隣にアドバタイズする接頭辞のリストを指定します。このリストは、ルーターで定義した接頭辞と一致する必要があります。

spec.bgp.routers.neighbors.toAdvertise.allowed.mode

string

接頭辞を処理するときに使用するモードを指定します。接頭辞リスト内の接頭辞のみを許可するように filtered を設定できます。ルーターに設定されているすべての接頭辞を許可するには、all に設定します。

spec.bgp.routers.neighbors.toAdvertise.withLocalPref

array

アドバタイズされたローカルプリファレンスに関連付けられた接頭辞を指定します。ローカル設定に関連付けられた接頭辞を、アドバタイズが許可される接頭辞に指定する必要があります。

spec.bgp.routers.neighbors.toAdvertise.withLocalPref.prefixes

string array

ローカル設定に関連付けられた接頭辞を指定します。

spec.bgp.routers.neighbors.toAdvertise.withLocalPref.localPref

integer

接頭辞に関連付けられたローカル設定を指定します。

spec.bgp.routers.neighbors.toAdvertise.withCommunity

array

アドバタイズされた BGP コミュニティーに関連付けられた接頭辞を指定します。アドバタイズする接頭辞のリストに、ローカル設定に関連付けられた接頭辞を含める必要があります。

spec.bgp.routers.neighbors.toAdvertise.withCommunity.prefixes

string array

コミュニティーに関連付けられた接頭辞を指定します。

spec.bgp.routers.neighbors.toAdvertise.withCommunity.community

string

接頭辞に関連付けられたコミュニティーを指定します。

spec.bgp.routers.neighbors.toReceive

array

近隣から受信する接頭辞を指定します。

spec.bgp.routers.neighbors.toReceive.allowed

array

近隣から受信する情報を指定します。

spec.bgp.routers.neighbors.toReceive.allowed.prefixes

array

近隣から許可される接頭辞を指定します。

spec.bgp.routers.neighbors.toReceive.allowed.mode

string

接頭辞を処理するときに使用するモードを指定します。filtered に設定すると、prefixes リスト内の接頭辞のみが許可されます。all に設定すると、ルーターに設定されているすべての接頭辞が許可されます。

spec.bgp.routers.neighbors.disableMP

boolean

MP BGP を無効にして、IPv4 と IPv6 のルート交換を別々の BGP セッションに分離しないようにします。

spec.bgp.routers.prefixes

string array

このルーターインスタンスからアドバタイズするすべての接頭辞を指定します。

spec.bgp.bfdProfiles

array

近隣を設定するときに使用する BFD プロファイルのリストを指定します。

spec.bgp.bfdProfiles.name

string

設定の他の部分で参照される BFD プロファイルの名前。

spec.bgp.bfdProfiles.receiveInterval

integer

このシステムが制御パケットを受信できる最小間隔をミリ秒単位で指定します。デフォルトは 300ms です。

spec.bgp.bfdProfiles.transmitInterval

integer

このシステムが BFD 制御パケットを送信するために使用する、ジッターを除いた最小送信間隔をミリ秒単位で指定します。デフォルトは 300ms です。

spec.bgp.bfdProfiles.detectMultiplier

integer

パケット損失を判定するための検出乗数を設定します。接続損失検出タイマーを決定するには、リモート送信間隔にこの値を乗算します。

spec.bgp.bfdProfiles.echoInterval

integer

このシステムが処理できる最小のエコー受信送信間隔をミリ秒単位で設定します。デフォルトは 50ms です。

spec.bgp.bfdProfiles.echoMode

boolean

エコー送信モードを有効または無効にします。このモードはデフォルトで無効になっており、マルチホップ設定ではサポートされていません。

spec.bgp.bfdProfiles.passiveMode

boolean

セッションを passive としてマークします。passive セッションでは接続を開始せず、応答を開始する前にピアからの制御パケットを待機します。

spec.bgp.bfdProfiles.MinimumTtl

integer

マルチホップセッションのみ。着信 BFD 制御パケットの最小予想 TTL を設定します。

spec.nodeSelector

string

この設定の適用を試みるノードを制限します。指定した場合、指定されたセレクターに一致するラベルが割り当てられたノードのみが設定の適用を試みます。指定されていない場合は、すべてのノードがこの設定を適用しようとします。

status

string

FRRConfiguration の監視状態を定義します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat