你好,
在Hyper-V的交换机嵌入式分组(SET)环境中使用端口镜像常导致流镜像不完整。 这是因为SET的数据包分配和负载均衡机制会影响镜像行为,导致安全虚拟机接收的流量不完整。 为了澄清这个问题,建议先检查PowerShell中的源和目标设置。
你可以用 Get-VMNetworkAdapter -VMName <原始VM> PortMirroring属性检查它是否被设置为虚拟机Source。 同样,在安全虚拟机上运行Get-VMNetworkAdapter -VMName <SecurityVM>时,确认端口镜像属性为 。Destination 如果需要调整,可以用 进行修改Set-VMNetworkAdapter -VMName <VM> -PortMirroring Source|Destination|None。 这是检查源/目的模式的最直接方法。
在SET环境中,端口镜像的表现不如单个网卡vSwitch稳定。 SET将流量分配到多个成员端口,镜像流量只能在路径的一部分复制,导致丢包率达到90%,如你所见。 这不是虚拟机本身的网络问题,而是SET的镜像限制。 为了验证,你可以使用PowerShell Get-VMSwitchTeam ,观察 Get-NetAdapterStatistics成员端口间的流量分布,以确认镜像流量是否只存在于某些端口。
至于缓冲区和队列限制,Hyper-V vSwitch 本身不提供直接的缓冲区调整接口,但你可以检查 Get-NetAdapterAdvancedProperty 网卡驱动的硬件设置,比如接收/发送缓冲区的大小。 如果镜像流量在NIC层被丢弃,这就是第一个检查点。
为了确定数据包丢弃的位置,可以进行分层检查:在vSwitch层,使用 Get-VMNetworkAdapterPacketCapture NetEventSession或NetEventSession跟踪镜像流量是否进入vSwitch。 在 SET 团队层,通过 Get-NetAdapterStatistics 查看每个成员端口的丢弃计数。 在安全虚拟机端,使用Wireshark或确认Get-NetAdapterStatistics接收方已丢弃。
总体来说,你遇到的主要问题是SET中镜像行为不完整。 如果需要完全镜像,建议在非SET(未设置)的专用vSwitch上配置端口镜像,或使用外部TAP/SPAN解决方案。
多米克配音。