为Hyper-v创建虚拟交换机会阻止主机接收udp多播

时间:2016-09-28 13:33:32

标签: windows networking udp multicast hyper-v

基本上我的问题是,一旦我通过Hyper-V管理器创建外部虚拟交换机,我无法接收多播udp数据包(流视频),这是为客户操作系统提供完整网络所必需的。

如果我使用VLC并在没有虚拟交换机的情况下在我的主机上播放RTSP网址,那么它会毫无问题地播放,一旦我添加虚拟交换机,我就无法播放多播RTSP网址。

回归故事

我已经创建了几个docker服务,可以通过Hyper-v在我的Windows 10 Pro主机上的Ubuntu 16.04 VM环境中运行。我的docker服务需要能够接收我使用VirtualBox成功完成的多播udp数据包...但我想使用Hyper-v。一旦我解决了为什么我的主机无法接收多播,那么我将继续进行测试,以确保我的容器也能够。

信息

在尝试流式传输多播RTSP url时执行此show join命令时,虚拟交换机上的239.168.1.75地址会正确增加其引用计数,然后在VLC关闭后,引用计数会回落,因此它看起来像它正在加入/离开小组。

netsh interface ip show join

Interface 1: Loopback Pseudo-Interface 1

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.251
0                    4  Yes   239.255.255.250

Interface 28: vEthernet (New Virtual Switch)

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.1
0                    3  Yes   224.0.0.251
0                    1  Yes   224.0.0.252
0                    0  Yes   239.168.1.75
0                    4  Yes   239.255.255.250

Interface 15: Local Area Connection* 5

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.1

路线打印

===========================================================================
Interface List
 15...00 ff 10 60 55 c4 ......Juniper Network Connect Virtual Adapter
 28...9c eb e8 35 1a 1e ......Hyper-V Virtual Ethernet Adapter
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.138     25
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.1.0    255.255.255.0         On-link     192.168.1.138    281
    192.168.1.138  255.255.255.255         On-link     192.168.1.138    281
    192.168.1.255  255.255.255.255         On-link     192.168.1.138    281
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link     192.168.1.138    281
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link     192.168.1.138    281
===========================================================================
Persistent Routes:
  None

Igmpquery(https://code.google.com/archive/p/igmpquery

使用此工具时,我可以查询网络并在删除虚拟交换机时获得响应,但一旦再次添加,它就会失败。

使用虚拟交换机

IGMP query generator V1.4
    Project web site: http://code.google.com/p/igmpquery/
    Requires WinPcap

\Device\NPF_{807EAC56-4C04-424D-9DDE-4411FB900E3C}
    Description: Juniper Network Connect Virtual Adapter

    Address Family Name: AF_INET
    Address: 0.0.0.0
    Netmask: 255.0.0.0
    Broadcast Address: 0.0.0.0
IGMPv2 general query 0.0.0.0 -> 224.0.0.1

listening for responses ...


\Device\NPF_{27895664-EDF7-44E0-9753-E549EDCAD6E7}
    Description: Realtek USB NIC

无虚拟交换机

IGMP query generator V1.4
    Project web site: http://code.google.com/p/igmpquery/
    Requires WinPcap

\Device\NPF_{807EAC56-4C04-424D-9DDE-4411FB900E3C}
    Description: Juniper Network Connect Virtual Adapter

    Address Family Name: AF_INET
    Address: 0.0.0.0
    Netmask: 255.0.0.0
    Broadcast Address: 0.0.0.0
IGMPv2 general query 0.0.0.0 -> 224.0.0.1

listening for responses ...


\Device\NPF_{27895664-EDF7-44E0-9753-E549EDCAD6E7}
    Description: Realtek USB NIC

    Address Family Name: AF_INET
    Address: 192.168.1.138
    Netmask: 255.255.255.0
    Broadcast Address: 0.0.0.0
IGMPv2 general query 192.168.1.138 -> 224.0.0.1

listening for responses ...
15:44:06.551   192.168.1.85      ->   224.0.0.252       IGMP Rpt 224.0.0.252
15:44:06.593   192.168.1.71      ->   224.0.0.251       IGMP Rpt 224.0.0.251
15:44:06.624   192.168.1.79      ->   224.0.0.252       IGMP Rpt 224.0.0.252
15:44:06.828   192.168.1.89      ->239.255.255.250       IGMP Rpt 239.255.255.250

1 个答案:

答案 0 :(得分:0)

我不是100%确定魔法子弹是什么,尽管它现在正在工作。

  • 删除虚拟交换机
  • 重置网络设置
    • netsh winsock reset
    • netsh int ip reset
    • ipconfig / release
    • ipconfig / renew
    • ipconfig / flushdns
    • netsh advfirewall set allprofiles state off
  • 重新启动
  • 添加虚拟交换机
  • 重新启动
  • 现在运行igmp工具时,我从虚拟交换机中获取了自己电脑的响应,但主网络上没有其他设备
  • 卸载VirtualBox
    • 看似没有帮助
  • 沮丧,去睡觉
  • 第二天醒来并运行igmp工具后,我开始收到虚拟交换机外主网络设备的回复
  • 经过测试的流式多播,一切运行良好