ジュニパーネットワークスは、Kubernetesオーケストレーションされた環境で、クラウドネイティブのContrail Networking®™リリース22.1以降を使用した仮想インターフェイスでのパケットベースの転送をサポートします。
概要
デフォルトでは、Contrail コンピューティングノードは仮想インターフェイスでのパケット転送にフローモードを使用します。つまり、すべての vRouter には、それを通過するすべてのフローを追跡するためのフロー テーブルがあります。フローモードでは、仮想インターフェイスはトラフィックの状態またはセッションを分析することによって、すべてのトラフィックを処理します。ただし、フロー モードからパケット モードに切り替えたい場合もあります。具体的には、より高いトラフィック転送パフォーマンスを達成するため、またはフローモードの特定の制限を回避するため。
パケットモードでは、仮想インターフェイスはパケットごとにトラフィックを処理し、すべてのフロー情報を無視します。このモードの主な利点は、処理タイプがステートレスであることです。ステートレス モードは、仮想インターフェイスがセッション情報を追跡せず、トラフィック分析を行ってセッションの確立方法を判断しないことを意味します。
メモ:
ネットワークポリシーを必要とする機能(ACL、セキュリティグループ、フローティングIPなど)は、パケットモードでは機能しません。
仮想インターフェイスでのパケットモードの設定
仮想インターフェイスでパケットモードを有効にするには、次の手順に従います。
- フロー モードを実行していることを確認します。フローモードは、デフォルトの転送モードです。
同じネットワーク内の別のポッドにpingを実行して、トラフィックを生成します。この例では、ポッドの IP アドレスは 25.26.27.2 です。
root@pod-vn-1:/# ping -q -c5 25.26.27.2
PING 25.26.27.2 (25.26.27.2) 56(84) bytes of data.
--- 25.26.27.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4057ms
rtt min/avg/max/mdev = 0.059/1.721/7.620/2.955 ms
- フロー を確認するには、フロー コマンド ライン ツールを使用します。次の例は、 がフロー モードである
virtualMachineInterface
ことを示しています。
root@minikube:/# flow -l --match 25.26.27.3
...
...
Listing flows matching ([25.26.27.3]:*)
Index Source:Port/Destination:Port Proto(V)
-----------------------------------------------------------------------------------
159692<=>400664 25.26.27.2:28 1 (3)
25.26.27.3:0
(Gen: 1, K(nh):39, Action:F, Flags:, QOS:-1, S(nh):39, Stats:5/490, SPort 64222,
TTL 0, UnderlayEcmpIdx:0, Sinfo 7.0.0.0)
400664<=>159692 25.26.27.3:28 1 (3)
25.26.27.2:0
(Gen: 1, K(nh):33, Action:F, Flags:, QOS:-1, S(nh):33, Stats:5/490, SPort 56567,
TTL 0, UnderlayEcmpIdx:0, Sinfo 5.0.0.0)
- で
virtualMachineInterface
パケット モードを有効にします。
という名前の packet-mode-patch.yaml
パッチ ファイルを作成し、VMI ポリシーを true
に設定します。
spec:
virtualMachineInterfaceDisablePolicy:true
- パッチを適用します。
[user@machine:~]$ kubectl -n vmi-disablepolicy patch vmi pod-vn-1-7d622c4d --patch "$(cat packet-mode-patch.yaml)"
virtualmachineinterface.core.contrail.juniper.net/pod-vn-1-7d622c4d patched
- パッチを適用すると、フロー モードがパケット モードに切り替わります。
[user@machine:~]$ kubectl -n vmi-disablepolicy get vmi pod-vn-1-7d622c4d -oyaml | yq .spec.virtualMachineInterfaceDisablePolicy
true
- パケット モードがアクティブであることを確認します。
手順 1 で ping したのと同じネットワーク内の別のポッドに ping を実行して、トラフィックを生成します。
root@pod-vn-1:/# ping -q -c5 25.26.27.2
PING 25.26.27.2 (25.26.27.2) 56(84) bytes of data.
--- 25.26.27.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4105ms
rtt min/avg/max/mdev = 0.051/2.725/13.388/5.331 ms
- フロー を確認するには、フロー コマンド ライン ツールを使用します。
root@minikube:/# flow -l --match 25.26.27.3
...
...
Listing flows matching ([25.26.27.3]:*)
Index Source:Port/Destination:Port Proto(V)
成功!パケット モードであることを示すフローが存在しません。