目 录

6  mDNS中继配置

6.1  mDNS中继简介

6.2  原理描述

6.3  规格

6.4  应用场景

6.5  配置mDNS中继

6.6  维护mDNS中继

6.7  配置举例

6.7.1  配置mDNS中继示例

6.8  参考信息

6  mDNS中继配置

6.1  mDNS中继简介

定义

传统的基于TCP/IP协议的通信模式下,如果设备之间需要通信,必须知道对端设备的IP地址。由于IP地址不好记忆,为了便于记忆和提升可用性,网络管理员可以配置DNS服务以方便其他设备通过域名访问。这样,当一个设备通过域名访问其他设备时,还需要在设备上配置DNS服务器用来解析域名对应的IP地址。为了减少网络设备的手工配置成本,苹果公司提出了零配置网络Zeroconf(Zero-configuration networking)。

零配置网络是指网络设备在不需要管理员参与配置的情况下,实现自动地址配置、域名解析和服务发现,广泛应用在家庭无线网络和企业办公网络中。Bonjour技术是由苹果公司提出的基于组播域名系统mDNS(Multicast Domain Name System)和基于DNS的服务发现协议DNS-SD(DNS-Based Service Discovery)协议的零配置网络技术的解决方案,是一种应用在二层广播域的技术,实现二层广播域内网络设备自动获取地址和发现服务。大部分苹果产品(例如iPhone、iPad、Apple TV等)都支持Bonjour技术。

Bonjour技术仅能实现同VLAN内的服务发现,为了实现跨VLAN和跨网段的服务发现,华为公司提出了mDNS网关和mDNS中继的解决方案。mDNS中继负责转发Bonjour设备(支持Bonjour技术的用户终端或服务提供设备)与mDNS网关之间的mDNS报文。这样,支持Bonjour技术的用户终端可以实现跨网段的打印机和Airplay服务发现。

目的

使用Bonjour技术的服务提供设备(例如Apple TV)通过组播地址(IPv4地址为224.0.0.251)在网络中宣布自己可以提供的服务。用户终端设备(例如iPhone、iPad等客户端)通过发送目的组播地址为224.0.0.251的mDNS请求报文请求本地网络中的可用服务。一方面实现了网络中的服务共享,另一方面方便客户端能够访问网络中的服务资源。

然而,mDNS协议进行信息交互时使用的目的组播地址(224.0.0.251)仅在二层广播域生效,即只能在同一VLAN内转发,不能实现跨VLAN或跨三层设备转发。如图6-1所示,通常企业网络会规划多个VLAN或多个网段,Apple TV_1、Apple TV_2和Printer分别处于不同网段。位于VLAN10中的iPhone只能发现本VLAN内的Apple TV_1的服务;不能发现位于VLAN20的Apple TV_2服务和AC下挂的Printer服务。

图6-1  mDNS网关应用组网图

mDNS网关可以实现跨VLAN的服务发现,华为无线接入控制器(如图6-1所示的AC)V200R005C00以上版本支持mDNS网关功能,记录网络中所有可用的服务列表,并应答支持Bonjour技术的用户终端的服务请求。通过在网络中部署mDNS网关,可以实现跨VLAN的服务发现。AC上部署mDNS网关后,AC设备下挂的直连网段的服务提供设备(图6-1所示的Apple TV_1、Apple TV_2和Printer)组播发送mDNS报文通告服务,AC收到报文后记录服务信息。客户端(图6-1所示的iPhone)发送mDNS请求报文发现服务时,AC收到请求报文后通过查询服务列表回应网络中可用的服务,从而实现了跨VLAN的服务发现。

在mDNS网关的解决方案中,需要Bonjour设备与AC之间处于同一网段,即图6-1中Switch与AC之间二层转发。如果AC作为mDNS网关与Apple TV、iPhone跨网段连接时,如图6-2所示中的Switch与AC之间三层转发。由于mDNS报文是在二层广域域内组播发送,所以VLAN10和VLAN20的mDNS报文不能被Switch转发到mDNS网关,因此mDNS网关上不能记录VLAN10和VLAN20内提供的服务,也不能接收VLAN10和VLAN20的mDNS请求报文。通过在Switch上部署mDNS中继,可以解决这个问题,实现跨网段的服务发现。在Switch上部署mDNS中继后,当Switch接收到来自Apple TV或iPhone的mDNS组播报文后,将组播报文转换成单播报文发送给指定mDNS网关。同理,当接收到来自mDNS网关的单播mDNS报文后,会将单播报文转换成组播报文发送到指定VLAN中,从而实现跨网段的服务发现。

图6-2  mDNS中继应用组网图

6.2  原理描述

下面从以下三个阶段介绍mDNS中继与Bonjour设备的交互过程:

服务提供设备通告服务阶段

图6-3  服务提供设备通告服务工作原理图

服务提供设备把所能提供的服务通告给mDNS网关,这样,mDNS网关就能记录网络中所有可用的服务信息。主机名用来标识服务提供设备。服务名用来标识设备所能提供的服务,服务名中记录了服务类型。例如服务名“Officejet Pro 8100 [C12FFA] (7)._printer._tcp.local”表示能够提供打印服务。每台设备可以提供多种类型的服务。服务提供设备通告服务的工作原理如图6-3所示。

  1. 探测主机名阶段

    1. 支持Bonjour技术的Apple TV上电启动后,自动生成一个主机名,并发送目的组播地址为224.0.0.251的mDNS请求报文探测主机名是否与其他服务提供者重复,以确保主机名在网络中唯一。
    2. mDNS中继收到探测报文后将目的组播地址改为指定mDNS网关的IP地址,并向mDNS网关单播发送mDNS请求报文。
    3. mDNS网关接收到mDNS请求报文后,查询本地记录的主机名列表。

      如果存在此主机名,表示网络中已经有其他服务提供者使用此名字,则单播发送冲突报文给mDNS中继。mDNS中继接收到冲突报文后将目的地址改为组播地址并在本VLAN内组播发送。Apple TV收到冲突报文后重新生成一个主机名,重新进行探测。如果在探测时间内没有收到mDNS网关的冲突回应报文,表示主机名唯一。

  2. 通告主机名阶段

    Apple TV组播发送mDNS报文通告其主机名和IP地址,mDNS中继收到mDNS请求报文后将目的组播地址改为指定mDNS网关的IP地址,并向mDNS网关单播发送mDNS请求报文,网关收到请求报文后记录此主机名和其IP地址信息。

  3. 探测服务名阶段

    1. Apple TV发送目的组播地址为224.0.0.251的mDNS请求报文探测服务名是否与其他服务提供者重复,以确保主机名在网络中唯一。
    2. mDNS中继收到请求报文后将目的组播地址改为指定mDNS网关的IP地址,并向mDNS网关单播发送mDNS请求报文。
    3. mDNS网关收到探测报文后查询本地记录的服务列表。

      如果存在此服务名,表示网络中已经有其他服务提供者使用此服务名,则单播发送冲突报文给mDNS中继。mDNS中继接收到冲突报文后将目的单播地址改为组播地址并在本VLAN内组播发送。Apple TV收到冲突报文后重新生成一个服务名,重新进行探测。如果探测时间内没有收到mDNS网关的冲突回应报文,表示服务名唯一。

  4. Apple TV组播发送mDNS报文通告其服务信息,mDNS中继收到mDNS请求报文后将目的组播地址改为指定mDNS网关的IP地址,并向mDNS网关单播发送mDNS请求报文,mDNS网关收到请求报文后记录此服务信息,包括服务名、服务类型和TTL值等。

    说明:

    TTL值是服务提供设备提供给mDNS网关的。mDNS网关上记录的服务信息列表中的TTL值代表其服务列表的老化时间。在老化时间内,如果mDNS网关收到服务提供设备发送的服务列表更新消息(mDNS回应报文),则刷新服务信息。经过老化时间后,如果mDNS网关没有收到服务提供设备发送的服务列表更新消息,则删除该服务信息。

用户终端请求发现服务阶段

图6-4  用户终端请求发现服务工作原理图
  1. 支持Bonjour技术的用户终端(iPhone)组播发送mDNS请求报文,查询网络中是否有需要的某种服务。mDNS中继收到mDNS请求报文后将目的组播地址改为指定mDNS网关的IP地址,然后向mDNS网关单播发送mDNS请求报文。

  2. mDNS网关接收到请求报文后,查找服务列表,把能够提供此服务的主机名和IP地址单播回应给mDNS中继,mDNS中继收到响应报文后将目的地址改为组播地址,然后在本VLAN内组播发送。这样,用户终端收到响应报文后就可以选择相应的服务提供设备建立连接。

mDNS中继定时发现服务阶段

mDNS中继支持定时发现服务功能,每隔一个探测周期mDNS中继向其所连接的各VLAN内组播发送查询消息,服务提供设备收到查询消息后会回应给mDNS中继,然后mDNS中继再将服务信息转发给mDNS网关。这样,mDNS网关收到回应报文后刷新服务信息列表。一方面保证了服务提供设备的服务信息及时通告给mDNS网关;另一方面保证了mDNS网关维护的服务信息列表的及时性和完整性。

6.3  规格

仅S5720HI支持mDNS中继功能。

6.4  应用场景

图6-5所示,某企业提供有线和无线网络,Router作为企业出口网关,AP与AC之间三层转发,Apple TV_1、Apple TV_2和Printer分别与AC跨网段连接。由于Bonjour技术采用的mDNS协议的组播地址(224.0.0.251)仅在二层广播域生效,因此当AC作为mDNS网关时,不能接收Apple TV_1、Apple TV_2和Printer发送的服务通告消息。通过在Switch_1和Switch_2上部署mDNS中继,把组播mDNS报文转换成单播报文并发送给AC,这样,AC上就能记录VLAN10、VLAN20和VLAN30内的所有服务列表,从而实现跨网段的服务发现。

图6-5  mDNS中继应用组网图

6.5  配置mDNS中继

前置条件

  • 配置mDNS网关。

    说明:

    华为无线接入控制器V200R005C00以上版本支持mDNS网关功能。

  • 配置mDNS中继与mDNS网关路由可达。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mdns gateway ip ip-address,配置设备作为mDNS中继时对端mDNS网关的IP地址。

    缺省情况下,未配置mDNS网关的IP地址。

  3. 执行命令vlan vlan-id,进入VLAN视图。

    此步骤所指的VLAN ID为服务提供设备或用户终端所属的VLAN ID。

  4. 执行命令mdns relay enable,使能mDNS中继功能。

    缺省情况下,mDNS中继功能处于未使能状态。

  5. (可选)执行命令mdns probe interval interval,使能定时发现服务功能并配置定时发现服务的时间间隔。

    缺省情况下,定时发现服务功能处于未使能状态,且未配置定时发现服务的时间间隔。

    mDNS网关上维护网络中所有服务提供设备的服务信息列表,服务信息列表中记录每个服务的服务名、服务类型、TTL值、主机名和IP地址。TTL值是服务提供者提供给mDNS网关的,代表其服务的老化时间。在老化时间内,如果mDNS网关收到服务提供设备发送的服务列表更新消息(mDNS回应报文),则刷新服务信息。经过老化时间后,如果mDNS网关没有收到服务提供设备发送的服务列表更新消息,则删除该服务信息。

    如果网络中已经存在mDNS网关,服务提供设备接入网络时会主动通过mDNS中继向mDNS网关通告服务信息。如果mDNS网关接入网络之前服务提供设备已经存在,服务提供设备不会主动向mDNS网关通告服务,这种情况下可以在mDNS中继上配置定时发现服务功能。执行此步骤可以使能定时发现服务功能并配置定时发现服务的时间间隔。这样,设备每隔interval时间发送服务查询消息,请求更新本VLAN内的可用服务,待收到服务提供设备的应答消息后,转发给mDNS网关,从而保证mDNS网关上服务信息列表的及时性。

  6. 执行命令quit,返回系统视图。
  7. (可选)执行命令mdns source ip ip-address,配置定时发现服务和转发mDNS报文到mDNS网关时发送mDNS报文的源IP地址。

    缺省情况下,未配置源IP地址。

    mdns source ip有如下两个作用:
    • mDNS中继使能定时发现服务,发送mDNS请求报文时,封装配置的源IP地址,以保证能够接收到服务提供设备的回应报文。如果在VLAN上使能定时发现服务功能且对应VLANIF接口上配置了IP地址,mDNS中继发送mDNS请求报文时自动封装此VLANIF接口的IP地址,可以不执行此步骤。

    • 设备作为mDNS中继向mDNS网关转发mDNS报文时,会根据路由表将源IP地址封装为设备出接口下一跳的IP地址。如果配置了此步骤,设备会优先将源IP地址封装为配置的源IP地址。

    说明:

    推荐用户将源IP地址配置为设备连接mDNS网关接口的IP地址。

检查配置结果

执行命令display mdns relay,查看mDNS中继的配置信息。

6.6  维护mDNS中继

背景信息

在日常维护工作中,可以查看和清除mDNS中继的统计信息。
注意:

清除mDNS中继的统计信息后,以前的统计信息将无法恢复,务必仔细确认。

操作步骤

  • 执行命令display mdns relay statistics,查看mDNS中继的统计信息。
  • 执行命令reset mdns relay statistics,清除mDNS中继的统计信息。

6.7  配置举例

6.7.1  配置mDNS中继示例

组网需求

图6-6所示,某企业的移动终端通过WLAN连接网络,AP与AC之间采用三层转发。VLAN10和VLAN20内各有一台支持Bonjour技术的打印机。管理员希望企业内的用户终端能够通过Bonjour技术发现企业中所有可用的打印机服务。

图6-6  配置mDNS中继组网图

配置思路

  • 配置网络可达:通过配置AP、Switch和AC,实现Printer_1和iPhone通过WLAN接入Internet;通过配置Switch和AC,实现Printer_2通过有线接入Internet。
  • 在Switch上配置mDNS中继功能,在AC上配置mDNS网关功能。这样,mDNS网关上能够记录网络中所有可用服务信息,从而实现企业内的用户终端能够通过Bonjour技术发现企业中所有可用的打印机服务。
  • 在Switch上配置定时发现服务功能,以保证AC上服务信息列表的及时性和完整性。
说明:

本配置中的AC采用的是V200R005C00以上版本的华为无线接入控制器。

操作步骤

  1. 在Switch和AC上配置WLAN业务,实现iPhone和Printer_1通过WLAN接入Internet。具体配置步骤省略。

    说明:

    针对Apple iOS v6.0以上版本的移动终端,如果通过DHCP服务器动态获取IP地址,需要在地址池中执行命令dns-list(基于全局地址池)或dhcp server dns-list(基于接口地址池)配置DNS服务器的IP地址。

  2. 在Switch和AC上配置网络可达,实现Printer_2通过有线接入Internet。假设Printer_2的IP地址静态配置为192.168.3.2/24。

    # 配置Switch。

    <HUAWEI> system-view
    [HUAWEI] sysname Switch
    [Switch] vlan batch 20 30
    [Switch] interface gigabitethernet 0/0/2
    [Switch-GigabitEthernet0/0/2] port link-type hybrid
    [Switch-GigabitEthernet0/0/2] port hybrid pvid vlan 20
    [Switch-GigabitEthernet0/0/2] port hybrid untagged vlan 20
    [Switch-GigabitEthernet0/0/2] quit
    [Switch] interface vlanif 20
    [Switch-Vlanif20] ip address 192.168.3.1 255.255.255.0
    [Switch-Vlanif20] quit
    [Switch] interface gigabitethernet 0/0/3
    [Switch-GigabitEthernet0/0/2] port link-type hybrid
    [Switch-GigabitEthernet0/0/3] port hybrid pvid vlan 30
    [Switch-GigabitEthernet0/0/3] port hybrid untagged vlan 30
    [Switch-GigabitEthernet0/0/3] quit
    [Switch] interface vlanif 30
    [Switch-Vlanif30] ip address 192.168.4.1 255.255.255.0
    [Switch-Vlanif30] quit

    # 配置AC。

    <HUAWEI> system-view
    [HUAWEI] sysname AC
    [AC] interface gigabitethernet 0/0/1
    [AC-GigabitEthernet0/0/1] port hybrid pvid vlan 30
    [AC-GigabitEthernet0/0/1] port hybrid untagged vlan 30
    [AC-GigabitEthernet0/0/1] quit
    [AC] interface vlanif 30
    [AC-Vlanif30] ip address 192.168.4.2 255.255.255.0
    [AC-Vlanif30] quit

  3. 在Switch上配置mDNS中继功能。

    [Switch] vlan 10
    [Switch-Vlan10] mdns relay enable
    [Switch-Vlan10] mdns probe interval 3600
    [Switch-Vlan10] quit
    [Switch] vlan 20
    [Switch-Vlan20] mdns relay enable
    [Switch-Vlan20] mdns probe interval 3600
    [Switch-Vlan20] quit
    [Switch] mdns gateway ip 192.168.4.2
    

  4. 在AC上配置mDNS网关功能。

    [AC] mdns gateway enable

  5. 验证配置结果

    # 在Switch上执行命令display mdns relay,查看mDNS中继的配置信息。

    [Switch] display mdns relay          
    MDNS Relay Information:                                                         
    --------------------------------------------------------------------------------
     MDNS Gateway IP   :  192.168.4.2                                             
    --------------------------------------------------------------------------------
     Relay Enable Vlan :  vlan10  vlan20                                  
    --------------------------------------------------------------------------------
     Relay Probe Vlan  :  vlan10  vlan20                                          
    --------------------------------------------------------------------------------

    # 在AC上执行命令display mdns gateway,查看mDNS网关的配置信息。

    [AC] display mdns gateway          
    MDNS Information:                                                               
    --------------------------------------------------------------------------------
     MDNS Gateway Status  :  Enable                                                 
     MDNS Source IP       :  -                                          
    --------------------------------------------------------------------------------
     Gateway Probe Vlan   :  -                                                      
    --------------------------------------------------------------------------------

    # 在AC上执行命令display mdns service all,查看mDNS网关上记录的服务信息。

    [AC] display mdns service all          
    MDNS Service Info:                                                              
                                                                                    
    Service name : Officejet Pro 8100 [C12FFA] (6)._printer._tcp.local              
      TXT Info:                                                                     
          Data Length : 297                                                         
                                                                                    
    Service name : _printer._tcp.local                                              
      PTR Info:                                                                     
          Domain Name : Officejet Pro 8100 [C12FFA] (6)._printer._tcp.local         
                                                                                    
    Service name : Officejet Pro 8100 [C12FFA] (7)._ipp._tcp.local                  
      TXT Info:                                                                     
          Data Length : 408                                                         
                                                                                    
    Service name : _ipp._tcp.local                                                  
      PTR Info:                                                                     
          Domain Name : Officejet Pro 8100 [C12FFA] (7)._ipp._tcp.local             
                                                                                    
    Total: 4    

    # 配置完成后,在iPhone上能够找到Printer_1和Printer_2的打印服务。

配置文件

  • Switch的配置文件

    #
    sysname Switch
    #                                                                               
    vlan batch 10 20 30
    #                                                                               
    mdns gateway ip 192.168.4.2 
    #                                                                               
    vlan 10                                                                        
     mdns relay enable                                                              
     mdns probe interval 3600                                                         
    vlan 20                                                                        
     mdns relay enable                                                              
     mdns probe interval 3600  
    #                                                                               
    interface Vlanif20                                                             
     ip address 192.168.3.1 255.255.255.0                                             
    #                                                                               
    interface Vlanif30                                                             
     ip address 192.168.4.1 255.255.255.0                                             
    #                                                                               
    interface GigabitEthernet0/0/2                                                  
     port link-type hybrid
     port hybrid pvid vlan 20                                                       
     port hybrid untagged vlan 20                                  
    #                                                                               
    interface GigabitEthernet0/0/3                                                  
     port link-type hybrid
     port hybrid pvid vlan 30                                                       
     port hybrid untagged vlan 30                                  
    #
    return
  • AC的配置文件

    #
     sysname AC
    #                                                                               
    mdns gateway enable 
    #                                                                               
    vlan batch 30
    #                                                                               
    interface Vlanif30                                                              
     ip address 192.168.4.2 255.255.255.0                                             
    #                                                                               
    interface GigabitEthernet0/0/1                                                  
     port hybrid pvid vlan 30                                                       
     port hybrid untagged vlan 30                                  
    #
    return

6.8  参考信息

本特性的参考资料清单如下:

文档 描述 备注
RFC 6762 Multicast DNS -
RFC 6763 DNS-Based Service Discovery -