仮想ルーティング インスタンス(VRF-Lite)
このトピックを読むと、JCNR での仮想ルーティング インスタンスの実装を理解できます。
仮想ルーティング インスタンスを使用すると、管理者は、クラウドネイティブ ルーターを、それぞれが独自のルーティングテーブルを持つ複数の独立した仮想ルーターに分割できます。ひとつのデバイスを多数の仮想ルーティング インスタンスに分割することにより、複数のデバイスにネットワークをセグメント化させる必要なく、ネットワークを介して移動するトラフィックを分離できます。仮想ルーティング インスタンスを使用して、ネットワーク上の顧客のトラフィックを分離し、顧客固有のインスタンスを顧客所有のインターフェイスにバインドすることができます。仮想ルーティングおよび転送(VRF)は、しばしばレイヤー3サブインターフェイスと組み合わせて使用され、単一の物理インターフェイス上のトラフィックを差別化して、複数の仮想ルーターに関連付けることができます。各論理レイヤー 3 サブインターフェイスは、1 つのルーティング インスタンスのみに属することができます。詳細については、「 仮想ルーター インスタンス 」のトピックを参照してください。
構成
Cloud-Native Routerでは、ネットワーク添付ファイル定義(NAD)マニフェストを使用して、仮想ルーティング インスタンスを作成できます。次に、 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についての詳細は、『Cloud-Native Routerの使用例と設定の概要』を参照してください。
次に、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ルーティングテーブルがCloud-Native Routerコントローラに作成されます。Cloud-Native Routerを設定して、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
Cloud-Native Routerは、インターフェイス、受信、解決、およびテーブルネクストホップを持つルートについて、仮想ルータールーティングインスタンス間のルートリークをサポートしています。