Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ホストOSでの設定を構成する

この章では、ホストOSの設定を調整して高度な機能を有効にしたり、cRPD機能の拡張性を高める方法について説明します。

ARPスケーリングの設定

最大ARPエントリー数は、Linuxホストカーネルによって制御されます。Linuxホストで sysctl コマンドを使用して、ARPまたはNDPエントリ制限を調整できます。

例えば、IPv4を使用して最大ARPエントリーを調整するには:

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh3=8192

例えば、IPv6を使用してNDPエントリーの最大数を調整するには:

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh3=8192

LinuxでのIGMPメンバーシップ

cRPDでより多くのOSPFv2/v3隣接関係を許可するには、IGMPメンバーシップの制限を増やします。

IGMPメンバーシップの制限を引き上げます。

root@host:~# sysctl -w net.ipv4.igmp_max_memberships=1000

カーネルモジュール

レイヤー3モードでcRPDを展開する前に、以下のカーネルモジュールをホストにロードする必要があります。これらのモジュールは通常、 linux-modules-extra または kernel-modules-extra パッケージで入手できます。以下のコマンドを実行して、カーネルモジュールを追加します。

  • modprobe tun

  • modprobe fou

  • modprobe fou6

  • modprobe ipip

  • modprobe ip_tunnel

  • modprobe ip6_tunnel

  • modprobe mpls_gso

  • modprobe mpls_router

  • modprobe mpls_iptunnel

  • modprobe vrf

  • modprobe vxlan

MPLSの設定

LinuxカーネルでMPLSを設定するには:

  1. modprobe または insmod を使用して、コンテナーに MPLS モジュールをロードします。

    root@crpd-ubuntu3:~# modprobe mpls_iptunnel

    root@crpd-ubuntu3:~# modprobe mpls_router

    root@crpd-ubuntu3:~# modprobe ip_tunnel

  2. ホストOSに搭載されているMPLSモジュールを確認します。

LinuxでのECMPロードバランシングのためのハッシュフィールド選択

転送されたトラフィックとローカルで生成されたトラフィック(IPv4/IPv6)の両方に対して、ECMPハッシュポリシー(fib_multipath_hash_policy)を選択できます。

IPv4トラフィック

  1. デフォルトでは、LinuxカーネルはL3ハッシュポリシーを使用してIPv4トラフィックの負荷分散を行います。L3ハッシュでは、以下の情報を使用します。
    • 送信元IPアドレス
    • 宛先IPアドレス

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 0

  2. レイヤー4ハッシュポリシーを使用してIPv4トラフィックの負荷分散を行うには、次のコマンドを実行します。レイヤー4ハッシュは、以下の情報に基づいてトラフィックのロードバランシングを行います。
    • 送信元IPアドレス
    • 宛先IPアドレス
    • 送信元ポート番号
    • 宛先ポート番号
    • プロトコル

    root@host:~# sysctl -w net.ipv4.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 1

  3. 次のコマンドを実行して、内部パケットヘッダー(IPv4/IPv6 over IPv4 GRE)でL3ハッシュを使用します。

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    このポリシーでは、IPv4トラフィックのデフォルトのアプローチで説明されているように、転送されたパケットに対してL3ハッシュがデフォルト設定されます。

    IPv6トラフィック

  4. デフォルトでは、LinuxカーネルはL3ハッシュポリシーを使用してIPv6トラフィックの負荷分散を行います。L3ハッシュポリシーは、以下の情報に基づいてトラフィックの負荷分散を行います。
    • 送信元IPアドレス
    • 宛先IPアドレス
    • フローラベル
    • 次のヘッダー(プロトコル)

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 0

  5. レイヤー4ハッシュポリシーを使用して、IPv6トラフィックの負荷分散を行うことができます。レイヤー4ハッシュポリシーは、以下の情報に基づいてトラフィックの負荷分散を行います。
    • 送信元IPアドレス
    • 宛先IPアドレス
    • 送信元ポート番号
    • 宛先ポート番号
    • 次のヘッダー(プロトコル)

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 1

  6. 次のコマンドを実行して、内部パケットヘッダー(IPv4/IPv6 over IPv4 GRE)でL3ハッシュを使用します。

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    MPLS

  7. Linuxカーネルでは、以下のパラメーターを使用して、マルチパスルートのネクストホップを選択できます。
    • ラベルのスタックが MAX_MP_SELECT_LABELS (4)
    • 送信元IPアドレス
    • 宛先IPアドレス
    • 内部IPv4/IPv6ヘッダーのプロトコル

    ネイバー検知

  8. 次のコマンドを実行して、ネイバーエントリーのライブ性(失敗/未完了/未解決)を表示します。

    root@host:~# sysctl -w net.ipv4.fib_multipath_use_neigh=1

    デフォルトでは、パケットは root@host:~# sysctl -n net.ipv4.fib_multipath_use_neigh 0 コマンドを使用してネクストホップに転送されます。

LinuxでのBGPを使用したwECMP

不等コストロードバランシングは、異なるパス(マルチパスネクストホップを含む)間でトラフィックを不均等に分散する方法です。パスの帯域幅能力が異なる場合。BGPプロトコルは、リンク帯域幅拡張コミュニティを使用して、各ルート/パスにリンクの帯域幅をタグ付けします。対応するリンクの帯域幅は、このリンク帯域幅コミュニティの一部としてエンコードできます。RPDは、この各パスの帯域幅情報を使用して、適切なlinux::weightsでマルチパスネクストホップをプログラムします。linux::weightを使用したネクストホップにより、linuxカーネルはトラフィックを非対称にロードバランシングできます。

BGPはマルチパスネクストホップを形成し、個々のパスの帯域幅値を使用して、ECMPネクストホップを形成する各ネクストホップが受信すべきトラフィックの割合を調べます。リンク帯域幅で指定された帯域幅値は、インターフェイスの絶対帯域幅である必要はありません。これらの値は、あるパスと他方のパスの相対帯域幅を反映する必要があります。詳細は、 BGPコミュニティと拡張コミュニティを定義する方法および ルーティング ポリシー一致条件でBGPコミュニティと拡張コミュニティを評価する方法を参照してください。

R1がR2とR3から宛先R4への等コストパスを受信しているネットワークがあるとします。wECMPを使用して、負荷分散されたトラフィックの90%をパスR1-R2経由で送信し、残りの10%をパスR1-R3経由で送信する場合。 policy-optionsを設定して、2つのBGPピアから受信したルートをリンク帯域幅コミュニティでタグ付けする必要があります。

  1. ポリシーステートメントを設定します。

    root@host> show configuration policy-options

  2. RPDは、帯域幅値を使用して、複数のパスネクストホップとのトラフィックの不均等なバランスをとります。

    root@host> show route 100.100.100.100 detail

  3. Linux カーネルは、各ネクストホップに linux::weights を割り当てることで、不等ロードバランシングをサポートします。

    root@host:/# ip route show 100.100.100.100

    linux::weights は、整数 255 (符号なし文字の最大値) の除算として linux にプログラムされています。ECMP ネクストホップの各ネクストホップには、帯域幅のシェアに比例する linux::weight が与えられます。

cRPDでSRv6を有効にする

以下の sysctl コマンドを使用して、cRPD で IPv6 SR 機能を有効にすることができます。

  1. SRを有効にします。

    root@host:~# sysctl net.ipv6.conf.all.seg6_enabled=1

    root@host:~# sysctl net.ipv6.conf.all.forwarding=1

  2. eth0インターフェイスでSRv6を有効にするには、以下のコマンドを設定します。

    root@host:~# sysctl net.ipv6.conf.eth0.seg6_enabled=1

  3. 次のコマンドを設定して、DT4 SIDを設定します。

    root@host:~# sysctl -wq net.vrf.strict_mode=1