Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Diagrama de la red

Flujo de paquetes con depuraciones

Paso 1. Cuando habilita globalmente mDNS en el WLC

Paso 2. WLC Caches Bonjour Services (Apple TV Advertisement)

Paso 3. El WLC escucha las consultas del cliente para los servicios

Paso 4. El WLC envía una respuesta de unidifusión a las consultas del cliente para los servicios de Bonjour

Verificación y resolución de problemas

Introducción

Este documento describe la implementación del protocolo Bonjour en el controlador inalámbrico y proporciona pautas para ayudar a resolver problemas.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Conocimiento básico de Bonjour Protocol

- Conocimiento básico de cómo configurar mDNS en WLC

- Conocimientos básicos sobre routing multidifusión

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- AIR-CT2504-K9 WLC, 8.2.141.0

- WS-C3560CX-8PC-S

- AIR-CAP3702I-E-K9

- Apple TV

- Iphone 5, 10.2

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

El protocolo Bonjour es un protocolo de detección de servicios de Apple que localiza dispositivos y servicios en una red local mediante el uso de registros de servicio del sistema de nombres de dominio (mDNS) multidifusión. El protocolo Bonjour opera en anuncios de servicio y consultas de servicio. Cada consulta o anuncio se envía a la dirección de multidifusión de Bonjour ipv4 224.0.0.251 (ipv6 FF02::FB). Este protocolo utiliza mDNS en el puerto UDP 5353.

La dirección utilizada por el protocolo Bonjour es la dirección multicast local del link y, por lo tanto, sólo se reenvía a la red L2 local. Los routers no pueden utilizar el routing multidifusión para redirigir el tráfico porque el tiempo de vida (TTL) está establecido en 1. Esto significaba que todos los proveedores/fuentes de servicio (que anuncian el servicio) y los clientes Bonjour (que solicitan el servicio) tenían que estar en la misma subred. Esto provoca problemas de escalabilidad.

Para solucionar este problema, el controlador de LAN inalámbrica de Cisco (WLC) actúa como una gateway Bonjour. El WLC escucha los servicios de Bonjour, almacena en caché estos anuncios de Bonjour (AirPlay, AirPrint, etc.) del origen/host. Por ejemplo, Apple TV y BONJOUR responden a los clientes de Bonjour cuando solicitan o solicitan un servicio. De esta manera puede tener los orígenes y clientes en diferentes subredes.

Configurar

Diagrama de la red

Flujo de paquetes con depuraciones

Hay cuatro pasos básicos que tienen lugar cuando mDNS se ejecuta en un WLC de Cisco. Estos pasos se describen a continuación:

Paso 1. Cuando habilita globalmente mDNS en el WLC

WLC escucha estos servicios predeterminados si usted no tiene un perfil mDNS personalizado creado como se muestra en la imagen.

Cada uno de estos servicios tiene una cadena de servicio asociada. Las cadenas de servicio se utilizan para hacer coincidir las instancias de servicio con las consultas de servicio. Un tipo de servicio siempre contiene el nombre de servicio y el protocolo. Además, puede contener uno o más identificadores de subtipos. El servicio AppleTV utiliza: _airplay._tcp.local.

Cuando mDNS está habilitado globalmente, el controlador envía consultas de mDNS a 224.0.0.251 para todos los servicios en la red por cable (interfaces dinámicas y de administración) e inalámbrica.

En esta captura en el puerto del switch del WLC, los paquetes 80, 81 y 82 muestran que el WLC envía una consulta a 224.0.0.251 sobre la red cableada con la IP de origen de las interfaces de administración (10.48.39.142) y dinámicas (192.168.232.11 y 192.168.239.8) como se muestra en la imagen.

El paquete 83 muestra que el WLC envía una consulta sobre la red inalámbrica. El paquete interno muestra la consulta WLC a 224.0.0.251 desde la interfaz de administración. Dado que esta consulta se realiza a través de la red inalámbrica, el encabezado capwap se agrega al paquete; la IP de origen externa sigue siendo la de administración, pero el destino es la IP de multidifusión 239.100.100.100, como se muestra en la imagen.

Ahora, ¿de dónde viene esta IP multicast 239.100.100.100? En el WLC, el modo multicast del punto de acceso (AP) (controlador > general) fue configurado para multicast con la dirección del grupo multicast como 239.100.100.100 (es solamente un ejemplo, cualquier ip en el rango 239). Los AP se unen a este grupo multicast y lo escuchan. El WLC reenvía la consulta a este grupo, los AP la reciben y la envían sobre el aire. La dirección 239.100.100.100 (esto no es estático, esto es lo que configuró en el siguiente ejemplo) solo aparece en el encabezado capwap entre el WLC y los AP, los clientes inalámbricos nunca ven nada de esto (pero puede ver el paquete mdns original interno) como se muestra en la imagen.

Recuerde en esta configuración que el WLC es un 2504 en vlan 1 y el AP está en vlan 231. Dado que los dispositivos se encuentran en diferentes vlan, necesita tener habilitado el ruteo multicast para vlan 1 y 239 en el cableado para que esto funcione.

Nota: Si el ruteo multicast no está habilitado en el cableado para la vlan de administración del wlc y del AP, el modo multicast del AP se debe establecer en unicast. En este modo, el controlador unidifusión cada paquete multicast a cada AP asociado al controlador. Este modo es muy ineficiente y no se recomienda.

Esta captura es el paquete de consulta en detalle como se muestra en la imagen.

Las depuraciones reflejan lo mismo que se ve en las capturas. Aquí el fragmento de código sólo muestra la consulta de la interfaz de administración.

(Cisco Controller) >debug mdns all enable

Cisco Controller) >*emWeb: Feb 22 16:24:18.203: bgSetBonjourAccessPolicy :1192 Bonjour AccessPolicy status is already in requested state Disabled

*emWeb: Feb 22 16:24:18.203: bgSetBonjourQueryInterval :1359 Bonjour query interval is already configured for requested value = 15

*Bonjour_Process_Task: Feb 22 16:24:18.215: bonjourProcessTask : 220 Processing message type = BONJOUR_AGGREGATED_QUERY

*Bonjour_Process_Task: Feb 22 16:24:18.215: sendBonjourPkt : 3881 sendBonjourPkt msg-type = BONJOUR_AGGREGATED_QUERY toSend = all

*Bonjour_Process_Task: Feb 22 16:24:18.216: Send to Wired, All vlan is TRUE

*Bonjour_Process_Task: Feb 22 16:24:18.216: sendBonjourPacketToWired : 3652 sending aggregated query on interface = management

*Bonjour_Process_Task: Feb 22 16:24:18.216: buildBonjourPacket : 2916 Preparing for l2 Multicast send

*Bonjour_Process_Task: Feb 22 16:24:18.216: buildBonjourPacket : 2936 allVlan = 0 , vlanId = 0

*Bonjour_Process_Task: Feb 22 16:24:18.216: buildBonjourPacket : 2948 simInterfaceMacAddrGet( management ) =  00:A2:89:B9:62:60

*Bonjour_Process_Task: Feb 22 16:24:18.216: Inside buildBonjourAggregatedQuery, available len = 1458

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : 7339 Sending mDNS AGGREGATED query for services configured in MSAL-DB

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 1 ] Including SRV = AirPrint in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 2 ] Including SRV = AirTunes in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 3 ] Including SRV = AppleTV in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 4 ] Including SRV = HP_Photosmart_Printer_1 in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 5 ] Including SRV = HP_Photosmart_Printer_2 in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : [ 6 ] Including SRV = Printer in aggregated query packet

*Bonjour_Process_Task: Feb 22 16:24:18.216: -----------------------------------------

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : PACKET-1 mDNS-QUERY sent for [ 6 ] services

*Bonjour_Process_Task: Feb 22 16:24:18.216: fillBonjourAggregatedQuery : mDNS-QUERY sent for all services in [ 1 ] packets

*Bonjour_Process_Task: Feb 22 16:24:18.216: -----------------------------------------

*Bonjour_Process_Task: Feb 22 16:24:18.216: buildBonjourPacket : 3054 BONJOUR_AGGREGATED_QUERY: buildBonjourAggregatedQuery()STATUS = 0

*Bonjour_Process_Task: Feb 22 16:24:18.216: buildBonjourPacket MCAST-DST-IP ADDR = 224.0.0.251

Paso 2. WLC Caches Bonjour Services (Apple TV Advertisement)

En este paquete, el Apple TV ( 192.168.239.37 ) envía anuncios a 224.0.0.251 . Dado que en este caso Apple TV es inalámbrico , puede ver el anuncio enviado a través de capwap. El WLC toma nota solamente una vez de la respuesta del servicio mDNS, sin embargo, esa entrada de la memoria caché tiene un TTL y keepalives son necesarios para mantenerlo como se muestra en la imagen.

La respuesta detallada de Apple TV es como se muestra en la imagen.

Estas depuraciones muestran Apple TV en respuesta a las consultas del WLC . En este escenario, Apple TV respondió con 21 servicios, de los cuales solo el servicio Airplay es de interés.

*Bonjour_Msg_Task: Feb 23 16:22:02.372: 18:ee:69:11:dc:60 Parsing 21 Bonjour Answers.

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgProcessServiceAdvRsp : 1562 aStringNameStr = Wireless Team (4)._airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgProcessServiceAdvRsp : 1579 RR: Wireless Team (4)._airplay._tcp.local., aType: 16, aClass: 32769, aTTL: 4500, aDataLen: 207, ptr: 0x327a9ca8, end: 0x327aa100

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgProcessServiceAdvRsp : 1581 aStringNameStr : Wireless Team (4)._airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374: Found Service Name:_airplay._tcp.local., Service Provider Name:Wireless Team (4)._airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgServiceAllowedInMsalDb : 181 srv_str = _airplay._tcp.local. type = Wireless

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgServiceAllowedInMsalDb : 195 Incoming Service Advertisement string = _airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374: Service-Name = AppleTV Service-String = _airplay._tcp.local. Type = all Origin = Wireless FOUND and is ALLOWED FOR LEARNING

<<< Airplay service registered in WLC DB >>

*Bonjour_Msg_Task: Feb 23 16:22:02.374: Service Name:_airplay._tcp.local. is supported in Master-service-db

*Bonjour_Msg_Task: Feb 23 16:22:02.374: aDataLen: 2, aSrPtrRecord.aSrvProName.size: 39

*Bonjour_Msg_Task: Feb 23 16:22:02.374: Updating updateBonjourSrPtrDb:

*Bonjour_Msg_Task: Feb 23 16:22:02.374: aType: 12, aClass: 1, aTTL: 4500, aDataLen: 2, ptr: 0x327a9d93, end: 0x327aa100

*Bonjour_Msg_Task: Feb 23 16:22:02.374:           bgProcessServiceAdvRsp : .. < SP-SR_PTR PKT >...

*Bonjour_Msg_Task: Feb 23 16:22:02.374:           bgProcessServiceAdvRsp : SERVICE NAME ......... = AppleTV

*Bonjour_Msg_Task: Feb 23 16:22:02.374:           bgProcessServiceAdvRsp : SERVICE STRING ....... = _airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374:           bgProcessServiceAdvRsp : SERVICE PROVIDER ..... = Wireless Team (4)._airplay._tcp.local.

*Bonjour_Msg_Task: Feb 23 16:22:02.374:           bgProcessServiceAdvRsp : aTTL ................. = 4500n

*Bonjour_Msg_Task: Feb 23 16:22:02.374: bgProcessServiceAdvRsp : 1546 msg : 0x327a9bda, ptr : 0x327a9d93, end : 0x327aa100, pld_len : 877

Paso 3. El WLC escucha las consultas del cliente para los servicios

Más adelante, en cualquier momento, el cliente inalámbrico (192.168.232.98) envía una consulta en la que se solicita el servicio de reproducción por aire (normalmente cuando el cliente abre una aplicación que puede reproducir por aire), como se muestra en la imagen.

*Bonjour_Msg_Task: Feb 27 17:03:15.603: 00:6d:52:5d:5a:7d Parsing 2 bonjour questions

*Bonjour_Msg_Task: Feb 27 17:03:15.603: 00:6d:52:5d:5a:7d Query Service Name: _airplay._tcp.local., RR-Type:  TYPE_DOMAIN_NAME_PTR , Class: 1

*Bonjour_Msg_Task: Feb 27 17:03:15.603: processBonjourPacket : 1017 qNameStr : _airplay._tcp.local., bonjServiceNameStr : _airplay._tcp.local., bonjSpNameStr : _airplay._tcp.local.

*Bonjour_Msg_Task: Feb 27 17:03:15.603: Service Name : AppleTV  Service String : _airplay._tcp.local. is supported in MSAL-DB

*Bonjour_Msg_Task: Feb 27 17:03:15.603: 00:6d:52:5d:5a:7d SRV : _airplay._tcp.local. is supported by client profile : default-mdns-profile

Paso 4. El WLC envía una respuesta de unidifusión a las consultas del cliente para los servicios de Bonjour

El WLC responde con el equipo inalámbrico del servicio en caché (4)._airplay._tcp.local. La IP de origen del paquete interno es la interfaz dinámica de la vlan del cliente, en este caso 192.168.232.11, como se muestra en la imagen.

Fragmento de debug

BONJOUR_AGGREGATED_QUERY_RESPONSE

*Bonjour_Process_Task: Feb 27 17:03:45.229: buildBonjourQueryResponsePld : SRV-NAME ..... : AppleTV

*Bonjour_Process_Task: Feb 27 17:03:45.229: buildBonjourQueryResponsePld : SP-NAME....... :

*Bonjour_Process_Task: Feb 27 17:03:45.229: buildBonjourQueryResponsePld : SEND TO ...... : BONJOUR_PKT_TO_WIRELESS

*Bonjour_Process_Task: Feb 27 17:03:45.229: buildBonjourQueryResponsePld : VLAN ......... : 232

*Bonjour_Process_Task: Feb 27 17:03:45.229: buildBonjourQueryResponsePld : IS MCAST ..... : NO

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : DST-MAC ...... :  00:6D:52:5D:5A:7D

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : DST-IP ....... : 192.168.232.98

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : ALL mDNS-AP .. : 0

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : TTL COUNTER .. : TIMEOUT_RESET

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : RESTART TIME . : 0

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : SNOOP STATUS . : 0

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : LSS STATUS ... : DISABLED

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : RSP SRV NAME . : AppleTV

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : MSG-ID ....... : 0

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld : POLICY STATUS  : DISABLED

*Bonjour_Process_Task: Feb 27 17:03:45.230: buildBonjourQueryResponsePld INCLUDING SpData : Wireless Team (4)._airplay._tcp.local. in AGGREGATED QUERY RESPONSE

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID SR-PTR RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID SD-PTR RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID SRV RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID TXT RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID NSEC RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID DOMAIN RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: fillBonjourDomain : 6055 : attaching SP-DOMAIN RR

*Bonjour_Process_Task: Feb 27 17:03:45.233: VALID DOMAIN-NSEC RR FOUND, attaching.....

*Bonjour_Process_Task: Feb 27 17:03:45.233: buildBonjourPacket DST-IP ADDR = 192.168.232.98

*Bonjour_Process_Task: Feb 27 17:03:45.233: Transmitting bonjour Pkt to STA: 00:6D:52:5D:5A:7D

*Bonjour_Process_Task: Feb 27 17:03:45.233: Unicast Packet sent to client  00:6D:52:5D:5A:7D  success.

Verificación y resolución de problemas

Esta sección proporciona información que puede utilizar para confirmar y resolver problemas de su configuración.

Para identificar y aislar los problemas en mdns se requiere que la configuración sea correcta y, por lo tanto, se requieren pocas comprobaciones básicas.

Paso 1. mDNS debe estar habilitado globalmente.

Desde la GUI, navegue Controlador > mDNS como se muestra en la imagen.

Desde CLI:

show network summary (snippet)

mDNS snooping............................... Enabled

mDNS Query Interval......................... 15 minutes

Paso 2. Si utiliza un perfil mDNS personalizado, asegúrese de que se le han agregado todos los servicios necesarios.

Paso 3. Asegúrese de que mDNS esté habilitado en el SSID y de que el perfil mdns correcto esté asignado al SSID.

Desde la GUI, navegue hasta WLAN > WLAN ID > Advanced como se muestra en la imagen.

Desde CLI:

show wlan

(snippet)

mDNS Status...................................... Enabled

mDNS Profile Name................................ default-mdns-profile

Paso 4. Compruebe si el proveedor de servicios mDNS aparece en los servicios de dominios mDNS. Esto enumera los nombres de dominio ( Apple TV, airprinters) de los servicios que han sido almacenados en caché por el WLC.

Desde la GUI, navegue hasta Controlador > mDNS > IP de nombre de dominio mDNS > Resumen como se muestra en la imagen.

Desde CLI:

show mdns domain-name-ip summary

Number of Domain Name-IP Entries................. 1

DomainName             MAC Address       IP Address       Vlan Id Type     TTL Time left (sec) (sec)

--------------------   ----------------  ---------------- ------- ------   ------ ------

Wireless-Team-3.local. 18:ee:69:11:dc:60 192.168.239.37   239     Wireless 4725   4163

Paso 5. Compruebe si el proveedor de servicios también aparece en el propio servicio específico.

Desde GUI, navegue hasta Controller > mDNS > General > Service Name como se muestra en la imagen.

Desde CLI:

show mdns service detailed AppleTV

Service Name..................................... AppleTV

Service String................................... _airplay._tcp.local.

Service Id....................................... 3

Service query status............................. Enabled

Service LSS status............................... Disabled

Service learn origin............................. Wireless and Wired

Number of Profiles............................... 1

Profile.......................................... default-mdns-profile

Number of Service Providers ..................... 1

Number of priority MAC addresses ................ 0

ServiceProvider MAC Address AP Radio MAC Vlan Id Type TTL Time left(sec) (sec)

-------------------- ---------------- ---------------- ------- ------ ----- ---------

Wireless Team (4)._airplay._tcp.local. 18:EE:69:11:DC:60 A4:6C:2A:7C:8F:80 239 Wireless 4500 3841

Paso 6. Si el servicio no es detectado por el WLC, verifique si debe ser aprendido en el buscador bonjour (Controlador>>mDNS>>buscador mDNS). El buscador Bonjour es una memoria caché de todos los anuncios de servicio vistos en el WLC y no descubiertos porque la configuración no permitió aprender. Puede seleccionar y agregar servicios desde el navegador Bonjour, lo cual resulta útil cuando prueba e implementa un nuevo servicio.

Paso 7. Estos son los comandos para depurar Bonjour:

debug mdns error enable

debug mdns message enable

debug mdns detail enable

debug mdns all enable

El navegador Bonjour y el servicio show mdns no aprendido también se podrían utilizar como herramienta de depuración.

Paso 8. Como se mencionó anteriormente, si el WLC y el AP están en subredes diferentes y el modo multicast del AP está configurado en multicast, entonces asegúrese de que el ruteo multicast esté habilitado en la red cableada entre las dos vlan. En esta configuración, las vlan son vlan 1 (WLC) y vlan 231 (AP).

Conf t

!

interface Vlan1

ip pim sparse-dense-mode

!

interface Vlan231

ip pim sparse-dense-mode

!

Routing multidifusión en reproducción:

Gateway#sh ip mroute 239.100.100.100

IP Multicast Routing Table

-------snippet--------------------

(*, 239.100.100.100), 2w4d/stopped, RP 10.48.39.5, flags: SJC

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Vlan231, Forward/Sparse-Dense, 2w0d/00:02:10

Vlan232, Forward/Sparse-Dense, 2w4d/00:02:11

(10.48.39.142, 239.100.100.100), 2w4d/00:02:50, flags: T

Incoming interface: Vlan1, RPF nbr 0.0.0.0, RPF-MFD

Outgoing interface list:

Vlan231, Forward/Sparse-Dense, 2w0d/00:02:10, H

Junto con esta lista de verificación, la clave es entender el flujo de paquetes cuando mDNS se ejecuta en el WLC. El flujo de paquetes y las depuraciones ayudan a profundizar en las áreas donde la

los comandos de verificación son insuficientes.