Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ホストOSでの設定の構成

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

ARP スケーリングの設定

最大 ARP エントリー数は、Linux ホスト・カーネルによって制御されます。ネイバーの数が多い場合は、Linux ホストの ARP エントリー制限を調整する必要があるかもしれません。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 を使用して最大 ND エントリーを調整するには、次のようにします。

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

cRPDでのOSPFのチューニング

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

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

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

MPLS の設定

Linux カーネルで MPLS を設定するには、次のようにします。

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

    root@crpd-ubuntu3:~# modprobe mpls_iptunnel

    root@crpd-ubuntu3:~# modprobe mpls_router

    root@crpd-ubuntu3:~# modprobe ip_tunnel

  2. ホストOSにロードされたMPLSモジュールを確認します。
  3. ホストに を読み込んだmpls_router後、以下のコマンドを設定して、インターフェイス上で MPLS をアクティブにします。

    root@host:~# sysctl -w net.mpls.platform_labels=1048575

MPLS ルートの追加

ネットリンクメッセージは、Linuxカーネルとルートを通信(追加/学習)するために使用されます。MPLS ルートは、カーネルの更新に内部的にネットリンクソケットを使用するユーティリティを使用して iproute2 カーネルに追加されます。ユーティリティを使用して iproute2 MPLS ルートをホストに追加するには:

  1. ネットワークインターフェイスで mpls を有効にします。

    root@host:/# cli

    root@host> show interfaces routing

  2. 以下のコマンドを実行して、ホストOSにmplsルートを追加します。

    root@host:~# ip -f mpls route add 100 as 200/300 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  3. 次のコマンドを実行して、Linux で MPLS fib エントリを表示します。

    root@host:~# ip -f mpls route show

MPLS ラベル付きルートの追加

このユーティリティを使用して、MPLSラベル付きのパケットをカプセル化し、 iproute2 ホストにルートを追加するには:

  1. 以下のコマンドを実行して、ホストOSへのパケットをカプセル化します。

    root@host:~# ip route add 172.20.0.0/30 encap mpls 200 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  2. 次のコマンドを実行して、mpls ルートを表示します。

    root@host:~# ip route show

VRF デバイスの作成

VRF デバイスをインスタンス化してテーブルに関連付けるには、次のようにします。

  1. 次のコマンドを実行して、VRF デバイスを作成します。

    root@host:~# ip link add dev test1 type vrf table 11

  2. 次のコマンドを実行して、作成された VRF を表示します。

    root@host:~# ip [-d] link show type vrf

  3. ホスト OS の VRF のリストを表示するには、次のコマンドを実行します。

    root@host:~# ip vrf show

VRF へのネットワークインターフェイスの割り当て

ネットデバイスを VRF デバイスに割り当てることで、ネットワーク インターフェイスを VRF に割り当てます。接続されたルートとローカル ルートは、VRF デバイスに関連付けられたテーブルに自動的に移動されます。

VRF にネットワーク インターフェイスを割り当てるには:

次のコマンドを実行して、インターフェイスを割り当てます。

root@host:~# ip link set dev <name> master <name>

root@host:~# ip link set dev eth1 vrf test

VRF に割り当てられたデバイスの表示

デバイスを表示するには:

次のコマンドを実行して、VRF に割り当てられているデバイスを表示します。

root@host:~# ip link show vrf <name>

root@host:~# ip link show vrf red

VRF へのネイバーエントリの表示

VRF デバイスにスレーブされたデバイスに関連付けられているネイバー エントリを一覧表示するには:

次のコマンドを実行して、プライマリ オプションを ip コマンドに追加します。

root@host:~# ip -6 neigh show vrf <NAME>

root@host:~# ip neigh show vrf red

root@host:~# ip -6 neigh show vrf red

VRF のアドレスの表示

VRF に関連付けられたインターフェイスのアドレスを表示するには:

次のコマンドを実行して、プライマリ オプションを ip コマンドに追加します。

root@host:~# ip addr show vrf <NAME>

root@host:~# ip addr show vrf red

VRF のルートの表示

VRF のルートを表示するには:

  1. VRF デバイスに関連付けられている IPv6 ルート テーブルを表示するには、次のコマンドを実行します。

    root@host:~# ip -6 route show vrf NAME

    root@host:~# ip -6 route show table ID

  2. 次のコマンドを実行して、VRF デバイスのルート ルックアップを実行します。

    root@host:~# ip -6 route get vrf <NAME> <ADDRESS>

    root@host:~# ip route get 192.0.2.1 vrf red

    root@host:~# ip -6 route get oif <NAME> <ADDRESS>

    root@host:~# ip -6 route get 2001:db8::32 vrf red

  3. VRF デバイス内の IPv4 ルートを表示するには、次のコマンドを実行します。

    root@host:~# ip route list table <table-id>

VRF からのネットワーク インターフェイスの削除

VRF デバイスへのエンスレーブメントを解除することで、ネットワーク インターフェイスを VRF から除去します

次のコマンドを実行して、ネットワーク インターフェイスを削除します。

root@host:~# ip link set dev NAME nomaster

ネットワーク インターフェイスを削除すると、接続されたルートは既定のテーブルに移動され、ローカル エントリはローカル テーブルに移動されます。

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

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

IPv4トラフィック

  1. デフォルトでは、Linux カーネルはレイヤー 3 ハッシュ ポリシーを使用して IPv4 トラフィックのロード バランシングを行います。レイヤー 3 ハッシュでは、次の情報を使用します。
    • 送信元 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)でレイヤー 3 ハッシュを使用します

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

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

    このポリシーでは、 IPv4トラフィックのデフォルトアプローチで説明されているように、転送されるパケットのレイヤー3ハッシュがデフォルトになります。

    IPv6トラフィック

  4. デフォルトでは、Linux カーネルはレイヤー 3 ハッシュポリシーを使用して IPv6 トラフィックのロードバランシングを行います。レイヤー 3 ハッシュ ポリシーは、次の情報に基づいてトラフィックのロード バランシングを行います。
    • 送信元 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)でレイヤー 3 ハッシュを使用します。

    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 への等しいコスト パスを受信しているとします。負荷分散されたトラフィックの 90% をパス R1-R2 経由で送信し、残りの 10% のトラフィックをパス R1-R3 経由で wECMP を使用して送信する場合は、 を構成し 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セグメントルーティング機能を有効にすることができます。

  1. セグメントルーティングを有効にします。

    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