瞻博网络支持在 Kubernetes 编排的环境中使用云原生 Contrail® 网络™版本 22.1 或更高版本在虚拟接口上进行基于数据包的转发。
概述
默认情况下,Contrail 计算节点使用流模式在虚拟接口上转发数据包。这意味着每个虚拟路由器都有一个流量表来跟踪通过它的所有流量。在流模式下,虚拟接口通过分析流量的状态或会话来处理所有流量。但是,在某些情况下,您可能希望从流模式切换到数据包模式。具体来说,就是为了实现更高的流量转发性能,或者绕过流模式的某些限制。
在数据包模式下,虚拟接口按数据包处理流量,并忽略所有流量信息。此模式的主要优点是处理类型是无状态的。无状态模式意味着虚拟接口不会跟踪会话信息,也不会通过流量分析来确定会话的建立方式。
注意:
需要网络策略的功能(如 ACL、安全组、浮动 IP)无法在数据包模式下工作。
在虚拟接口上配置数据包模式
按照以下步骤在虚拟接口上启用数据包模式。
- 验证您正在运行流模式。流模式是默认的转发模式。
通过对同一网络中的另一个 Pod 执行 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
- 验证数据包模式是否处于活动状态。
通过 ping 您在步骤 1 中 ping 的同一网络中的另一个 Pod 来生成流量。
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)
成功!不存在表示您处于数据包模式的流。