仮想ルーティング インスタンス(VRF-Lite)
概要 このトピックでは、JCNR での仮想ルーティング・インスタンスの実装についてお読みください。
仮想ルーティング インスタンスを使用すると、管理者は、クラウドネイティブ ルーターを、それぞれが独自のルーティング テーブルを持つ複数の独立した仮想ルーターに分割できます。デバイスを多数の仮想ルーティング インスタンスに分割することにより、複数のデバイスにネットワークをセグメント化させる必要なく、ネットワークを介して移動するトラフィックを分離できます。仮想ルーティング インスタンスを使用して、ネットワーク上の顧客のトラフィックを分離し、顧客固有のインスタンスを顧客所有のインターフェイスにバインドすることができます。仮想ルーティングおよび転送(VRF)は、しばしばレイヤー3サブインターフェイスと組み合わせて使用され、単一の物理インターフェイス上のトラフィックを差別化して、複数の仮想ルーターに関連付けることができます。各論理レイヤー3サブインターフェイスは、1つのルーティングインスタンスのみに属することができます。詳細については、「 仮想ルーターインスタンス」 のトピックを参照してください。
構成
ネットワーク接続定義 (NAD) マニフェストを介して、JCNR に仮想ルーティング・インスタンスを作成できます。次に、 bluenet
仮想ルーター ルーティング インスタンスを作成するNADの例を示します。
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: blue spec: config: '{ "cniVersion":"0.4.0", "name": "blue-net", "plugins": [ { "type": "jcnr", "args": { "instanceName": "bluenet", "instanceType": "virtual-router" }, "kubeConfig":"/root/.kube/config" } ] }'
instanceType
が virtual-router
に設定されていることに注意してください。NAD の詳細については、『JCNR の使用例と設定の概要』を参照してください。
以下は、blue
ネットワークに接続されたインターフェイス(192.168.11.10/24)
を持つpodblue
ポッドの構成例です(簡潔にするために出力はトリミングされています)。
apiVersion: v1 kind: Pod metadata: name: podblue annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "blue", "interface":"net1", "cni-args": { "interfaceType":"veth", "dataplane":"dpdk", "mac":"aa:bb:cc:dd:ee:10", "ipConfig":{ "ipv4":{ "address":"192.168.11.10/24", "gateway":"192.168.11.1", "routes":["192.168.11.0/24"] }, "ipv6":{ "address":"abcd::192.168.11.10/112", "gateway":"abcd::192.168.11.1", "routes":["abcd::192.168.11.0/112"] } } } } ] spec: ...
kubectl apply -f manifest
コマンドを使用して NAD マニフェストとポッド マニフェストを適用すると、bluenet
ルーティング インスタンスとbluenet.inet.0
ルーティング テーブルが JCNR コントローラに作成されます。JCNR を構成して、podblue
からリモート・ネットワーク上のポッドへの通信を使用可能にすることができます。追加のcRPD設定は、cRPDシェルにアクセスすることで実行できます。cRPDの設定例を次に示します。
ローカルファブリックインターフェイスとBGPプロトコルを設定します。
set interfaces ens2f0 unit 0 family inet address 10.10.10.11/24 set protocols bgp group overlay type internal set protocols bgp group overlay local-address 10.10.10.11 set protocols bgp group overlay local-as 64520 set protocols bgp group overlay neighbor 10.10.10.12 peer-as 64520
ここで、
10.10.10.12/24
はBGPピアまたはネイバールーターのIPアドレスです。BGP プロトコルを使用して、
inet
ルートをエクスポートします。set policy-options policy-statement send_direct term 1 from protocol direct set policy-options policy-statement send_direct term 1 then accept set policy-options policy-statement send_direct term reject then reject set protocols bgp group overlay export send_direct
bluenet
ルーティングインスタンスからdefault
ルーティングインスタンスにルートをリークします。set groups cni routing-instances bluenet routing-options interface-routes rib-group inet blue_to_inet set routing-options rib-groups blue_to_inet import-rib bluenet.inet.0 set routing-options rib-groups blue_to_inet import-rib inet.0
プレフィックス
192.168.12.0
に一致するBGPルートのみをinet.0
からbluenet
ルーティングインスタンス(192.168.12.0/24
はリモートポッドネットワーク)にリークします。set policy-options policy-statement inet_to_blue term from_bgp from instance master set policy-options policy-statement inet_to_blue term from_bgp from protocol bgp set policy-options policy-statement inet_to_blue term from_bgp from route-filter 192.168.12.0/24 orlonger set policy-options policy-statement inet_to_blue term from_bgp then accept set policy-options policy-statement inet_to_blue term reject then reject set routing-options rib-groups inet_to_blue import-rib inet.0 set routing-options rib-groups inet_to_blue import-rib bluenet.inet.0 set routing-options rib-groups inet_to_blue import-policy inet_to_blue set groups cni routing-instances bluenet routing-options instance-import inet_to_blue
JCNRは、インターフェイス、受信、解決、およびテーブルネクストホップを持つルートの仮想ルータールーティングインスタンス間のルートリークをサポートしています。