EVPNネットワークサポート
概要 ジュニパークラウドネイティブのContrail NetworkingリリースR22.4は、転送モードL2とL2_L3を使用した、Type2プレフィックスと仮想ネットワークを使用したEVPN/VXLAN転送をサポートしています。レイヤー2接続用EVPN、データカプセル化用VXLANにより、CN2はCN2仮想ネットワークとEVPN-VXLANシグナル化サービス間の接続を確立できます。
EVPN の概要
EVPNはBGP(Border Gateway Protocol)の拡張機能で、ネットワークでレイヤー2 MACアドレスやレイヤー3 IPアドレスなどのエンドポイント到達可能性情報を伝送できます。このコントロール プレーン技術は、MAC アドレスと IP アドレスのエンドポイント配信にマルチプロトコル BP(MP-BGP)を使用し、MAC アドレスはルートとして扱われます。また、EVPNは、全アクティブなマルチホーミングモデルを通じて、マルチパス転送と冗長性も提供します。エンドポイントまたはデバイスは、2 つ以上のアップストリーム デバイスに接続し、すべてのリンクを使用してトラフィックを転送します。リンクまたはデバイスに障害が発生した場合、残りのアクティブなリンクを使用してトラフィックが流れ続けます。
EVPN では、MAC 学習はコントロール プレーンで処理されます。これにより、レイヤー 2 ネットワークで一般的な未知の IP のデータ プレーン フラッディングを回避できます。EVPNは、EVPN-VXLAN対応スイッチ間のさまざまなデータプレーンカプセル化技術もサポートしています。EVPN-VXLANアーキテクチャでは、VXLANはオーバーレイデータプレーンカプセル化を提供します。
VXLANの概要
VXLANは、オーバーレイトンネリングプロトコルです。VXLANトンネリングプロトコルは、MACフレームをレイヤー2のUDPヘッダーにカプセル化します。これは、VXLANがイーサネットフレームを、物理ネットワークヘッダー(IPヘッダー、イーサネットヘッダー)を外部ヘッダーとしてUDPパケットにカプセル化することを意味します。その結果、VXLANにより、デバイスは物理的なアンダーレイに関係なく、ネットワーク全体でUDPパケットをルーティングできます。
カプセル化とカプセル化解除を実行するエンティティは、VTEP(VXLANトンネルエンドポイント)と呼ばれます。CN2がVXLANセグメントを確立した後、VTEPはVMまたはポッドトラフィックをVXLANヘッダーにカプセル化し、そのトラフィックを別のVTEPに送信します。受信 VTEP は、カプセル化を削除または除去し、データを転送します。VMまたはポッドは、VXLANを使用して通信するには、同じVXLANセグメントに属している必要があります。
EVPN-VXLAN の概要
ジュニパーネットワークスでは、EVPN はコントロール プレーン機能を、VXLAN はデータ プレーン機能を実行します。EVPNは、コントロールプレーンでのMACアドレス学習を処理します。VXLAN は、レイヤー 2 ネットワークをレイヤー 3 ネットワーク上にオーバーレイするトンネリング スキームを定義します。このトンネリングスキームでは、トンネリングにUDP/IPカプセル化を使用して、ユニキャストおよびマルチキャストトラフィックの全アクティブマルチパスをサポートすることで、イーサネットフレームを最適に転送することができます。
VXLANカプセル化の優先度の設定
EVPNのデフォルトのカプセル化プロトコルは、MPLS over UDPです。クラスタでEVPN-VXLANを有効にするには、クラスタのカプセル化優先度順を変更するGlobalVrouterConfig
必要があります。のオブジェクトGlobalVrouterConfig
の セクションで、カプセル化のencapsulation
encapsulationPriorities
最優先事項として VXLAN をdefault-global-vrouter-config
設定します。
次の例では GlobalVrouterConfig
、VXLANをカプセル化の最優先事項として示しています。
apiVersion: core.contrail.juniper.net/v1 kind: GlobalVrouterConfig metadata: creationTimestamp: "2022-08-23T10:45:52Z" generation: 6 labels: core.juniper.net/parent: 9b83eddfaaa5778ad6b99cb81c803529cf911d492b9e7ec6d63d029d name: default-global-vrouter-config resourceVersion: "35583" uid: b2b57f5c-8dd0-4cd1-848f-0ec23f2819df spec: encapsulationPriorities: encapsulation: - VXLAN - MPLSoGRE - MPLSoUDP fqName: - default-global-system-config - default-global-vrouter-config linklocalServices: linklocalServiceEntry: - ipFabricServiceIP: - 10.87.76.29 - 10.87.76.31 - 10.87.76.32 ipFabricServicePort: 6443 linklocalServiceIP: 10.200.0.1 linklocalServiceName: kubernetes linklocalServicePort: 443 parent: apiVersion: core.contrail.juniper.net/v1 kind: GlobalSystemConfig name: default-global-system-config uid: 2f9ff5cf-4d40-4e8f-b7d3-2e403624c572 portTranslationPools: pools: - portRange: endPort: 57023 startPort: 56000 protocol: tcp - portRange: endPort: 58047 startPort: 57024 protocol: udp status: observation: "" state: Success
仮想ネットワーク向け VXLAN VNI を手動で設定する
VXLANネットワーク識別子(VNI)は、VXLANセグメントを一意に識別します。VNIにより、CN2は、トラフィックのクロスオーバーなしに複数のVXLANセグメントで同じMACフレームを使用できます。つまり、CN2は、同じVMまたはポッド間に複数のVXLANセグメントを確立し、トラフィックを分離することができます。同じVNI上のVMまたはポッドは相互に通信し、別のVNI上のVMまたはポッドは、通信するためのルーターを必要とします。VLANトンネルエンドポイント(VTEP)は、別のVMまたはポッドの転送テーブルを探す際に、データカプセル化を実行し、VNIとMACアドレス情報を参照します。VTEP が転送テーブルを決定すると、1 つの VTEP エンドポイントがネットワーク上の別のエンドポイントに UDP パケットを送信します。
CN2は、VNの作成時にVN(仮想ネットワーク)に固有のVNIを割り当てます。CN2リリース22.4では、仮想ネットワークのVNIを手動で設定できます。また、ネットワーク添付ファイル定義(NAD)を使用してVNIを定義することもできます。
以下のYAML例は、VNでユーザー定義のVNIを示しています。
apiVersion: core.contrail.juniper.net/v1 kind: VirtualNetwork metadata: namespace: evpnl2test name: vn1 spec: v4SubnetReference: apiVersion: core.contrail.juniper.net/v1 kind: Subnet namespace: evpnl2test name: sn1 virtualNetworkProperties: forwardingMode: l2 virtualNetworkNetworkId: 5000
次の YAML 例では、NAD でユーザー定義の VNI を示しています。
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: evpnl2 namespace: evpnl2test annotations: juniper.net/networks: '{ "ipamV4Subnet": "172.26.10.0/24", "virtualNetworkNetworkID": 5000 }' spec: config: '{ "cniVersion": "0.3.1", "name": "evpnl2", "type": "contrail-k8s-cni" }'