Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Informations générales

Configurer

Diagramme du réseau

Flux de paquets avec débogages

Étape 1. Lorsque vous activez globalement mDNS sur le WLC

Étape 2. WLC met en cache les services Bonjour ( Apple TV Advertisement )

Étape 3. WLC écoute les requêtes client pour les services

Étape 4. WLC envoie une réponse de monodiffusion aux requêtes client pour les services Bonjour

Vérification et dépannage

Introduction

Ce document décrit l'implémentation du protocole Bonjour sur le contrôleur sans fil et fournit des directives pour aider à résoudre les problèmes.

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Connaissance de base du protocole Bonjour

- Connaissances de base sur la configuration de mDNS sur WLC

- Connaissances de base du routage multidiffusion

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- WLC AIR-CT2504-K9, 8.2.141.0

- WS-C3560CX-8PC-S

- AIR-CAP3702I-E-K9

- Apple TV

- Iphone5s, 10.2

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Informations générales

Le protocole Bonjour est un protocole de découverte de services Apple qui localise les périphériques et les services sur un réseau local à l'aide d'enregistrements de services mDNS (Domain Name System) de multidiffusion. Le protocole Bonjour fonctionne sur les annonces de service et les requêtes de service. Chaque requête ou annonce est envoyée à l'adresse de multidiffusion Bonjour ipv4 224.0.0.251 (ipv6 FF02::FB). Ce protocole utilise mDNS sur le port UDP 5353.

L'adresse utilisée par le protocole Bonjour est une adresse de multidiffusion link-local et n'est donc transmise qu'au réseau L2 local. Les routeurs ne peuvent pas utiliser le routage multidiffusion pour rediriger le trafic, car la durée de vie (TTL) est définie sur 1. Cela signifiait que tous les fournisseurs/sources de services (qui annoncent le service) et les clients Bonjour (qui demandent le service) devaient être dans le même sous-réseau. Cela entraîne des problèmes d'évolutivité.

Afin de résoudre ce problème, le contrôleur LAN sans fil Cisco (WLC) agit comme une passerelle Bonjour. Le WLC écoute les services Bonjour, met en cache ces annonces Bonjour (AirPlay, AirPrint, etc.) depuis la source/l'hôte. Par exemple, Apple TV répond aux clients Bonjour lorsqu'ils demandent/demandent un service. De cette façon, vous pouvez avoir les sources et les clients dans différents sous-réseaux.

Configurer

Diagramme du réseau

Flux de paquets avec débogages

Il y a quatre étapes de base qui ont lieu quand mDNS s'exécute sur un WLC Cisco. Ces étapes sont décrites comme suit :

Étape 1. Lorsque vous activez globalement mDNS sur le WLC

WLC écoute ces services par défaut si vous n'avez pas de profil mDNS personnalisé créé comme indiqué dans l'image.

Une chaîne de service est associée à chacun de ces services. Les chaînes de service sont utilisées pour faire correspondre les instances de service aux requêtes de service. Un type de service contient toujours le nom du service et le protocole. En outre, il peut contenir un ou plusieurs identificateurs de sous-type. Le service AppleTV utilise : _airplay.tcp.local.

Lorsque mDNS est activé globalement, le contrôleur envoie des requêtes mDNS à 224.0.0.251 pour tous les services sur le réseau filaire (interfaces de gestion et dynamiques) et sans fil.

Dans cette capture au niveau du port de commutation WLC, les paquets 80, 81 et 82 montrent que le WLC envoie une requête à 224.0.0.251 sur le réseau câblé avec l'IP source de la gestion (10.48.39.142) et les interfaces dynamiques (192.168.232.11 et 192.168.239.8) comme indiqué dans l'image.

Le paquet 83 montre que le WLC envoie une requête sur le réseau sans fil. Le paquet interne affiche la requête WLC vers 224.0.0.251 à partir de l'interface de gestion. Comme cette requête se fait sur le réseau sans fil, l'en-tête capwap est ajouté au paquet avec l'IP source externe qui doit encore être celle de la gestion, mais la destination est l'IP de multidiffusion 239.100.100.100, comme illustré dans l'image.

Maintenant, d'où provient cette adresse IP de multidiffusion 239.100.100.100 ? Sur le WLC, le mode de multidiffusion du point d'accès (AP) (contrôleur > général) a été défini sur la multidiffusion avec l'adresse de groupe de multidiffusion comme 239.100.100.100 (il s'agit juste d'un exemple, n'importe quelle adresse IP dans la plage 239). Les points d'accès rejoignent ce groupe de multidiffusion et l'écoutent. Le WLC transfère la requête à ce groupe, les AP la reçoivent et l'envoient par radio. L'adresse 239.100.100.100 (ce n'est pas statique, c'est ce que vous avez configuré dans l'exemple suivant) n'apparaît que dans l'en-tête capwap entre le WLC et les AP, les clients sans fil n'en voient jamais rien (mais ils peuvent voir le paquet mdns d'origine interne) comme illustré dans l'image.

Rappelez-vous que dans cette configuration, le WLC est un 2504 dans le VLAN 1 et l'AP est dans le VLAN 231. Comme les périphériques se trouvent dans des VLAN différents, vous devez activer le routage multidiffusion pour les VLAN 1 et 239 sur le réseau câblé pour que cela fonctionne.

Remarque : si le routage multidiffusion n'est pas activé sur le réseau câblé pour wlc et le VLAN de gestion AP, le mode multidiffusion AP doit être défini sur unicast. Dans ce mode, le contrôleur monodiffuse chaque paquet de multidiffusion à chaque point d'accès associé au contrôleur. Ce mode est très inefficace et n'est pas recommandé.

Cette capture est le paquet de requête en détail, comme illustré dans l'image.

Les débogages reflètent la même chose que dans les captures. Ici, l'extrait de code affiche uniquement la requête de l'interface de gestion.

(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

Étape 2. WLC met en cache les services Bonjour ( Apple TV Advertisement )

Dans ce paquet, l'Apple TV ( 192.168.239.37 ) envoie des annonces à 224.0.0.251 . Puisque dans ce cas Apple TV est sans fil, vous pouvez voir la publicité envoyée sur capwap. Le WLC ne prend note qu'une seule fois de la réponse du service mDNS, cependant, que l'entrée de cache a une durée de vie et des keepalives sont nécessaires pour la maintenir comme indiqué dans l'image.

La réponse détaillée de l'Apple TV est présentée dans l'image.

Ces débogages montrent Apple TV en réponse aux requêtes du WLC . Dans ce scénario, Apple TV a répondu avec 21 services dont seul le service Airplay est d'intérêt.

*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

Étape 3. WLC écoute les requêtes client pour les services

Par la suite, à tout moment, le client sans fil (192.168.232.98) envoie une requête demandant un service de diffusion radio (généralement lorsque le client ouvre une application capable de diffusion radio), comme illustré dans l'image.

*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

Étape 4. WLC envoie une réponse de monodiffusion aux requêtes client pour les services Bonjour

Le WLC répond avec le service en cache Wireless Team (4)._airplay._tcp.local. L’adresse IP source du paquet interne est l’interface dynamique du VLAN client, dans ce cas 192.168.232.11, comme illustré dans l’image.

Extrait du débogage

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.

Vérification et dépannage

Cette section fournit des informations que vous pouvez utiliser afin de confirmer et de dépanner votre configuration.

Afin d'identifier et d'isoler les problèmes dans mdns, la configuration doit être correcte et nécessite donc peu de vérifications de base.

Étape 1. mDNS doit être activé globalement.

Dans l'interface utilisateur graphique, sélectionnez Controller > mDNS comme illustré dans l'image.

À partir de CLI :

show network summary (snippet)

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

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

Étape 2. Si vous utilisez un profil mDNS personnalisé, assurez-vous que tous les services requis y sont ajoutés.

Étape 3. Assurez-vous que mDNS est activé sous le SSID et que le profil mdns correct est mappé au SSID.

Dans l'interface graphique, naviguez jusqu'à WLAN > WLAN ID > Advanced comme indiqué dans l'image.

À partir de CLI :

show wlan

(snippet)

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

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

Étape 4. Vérifiez si le fournisseur de services mDNS est répertorié dans les services de domaines mDNS. Cette liste répertorie les noms de domaine ( Apple TV, airprinters) des services qui ont été mis en cache par le WLC.

Dans l'interface utilisateur graphique, accédez à Controller > mDNS > mDNS Domain Name IP> Summary comme indiqué dans l'image.

À partir de 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

Étape 5. Vérifiez si le fournisseur de services est également répertorié sous le service spécifique lui-même.

Dans l'interface graphique utilisateur, accédez à Controller > mDNS > General > Service Name comme indiqué dans l'image.

À partir de 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

Étape 6. Si le service n'est pas découvert par le WLC, vérifiez s'il doit être appris sous bonjour browser (Controller>>mDNS>>mDNS browser). Le navigateur Bonjour est un cache de toutes les annonces de service vues au niveau du WLC et non découvertes parce que la configuration n'a pas permis d'apprendre. Vous pouvez sélectionner et ajouter des services à partir du navigateur Bonjour, ce qui est pratique lorsque vous testez et mettez en oeuvre un nouveau service.

Étape 7. Voici les commandes permettant de déboguer Bonjour :

debug mdns error enable

debug mdns message enable

debug mdns detail enable

debug mdns all enable

Le navigateur Bonjour et le service show mdns non appris peuvent également être utilisés comme outil de débogage.

Étape 8. Comme mentionné précédemment, si le WLC et le point d'accès sont dans des sous-réseaux différents et que le mode de multidiffusion du point d'accès est défini sur la multidiffusion, alors assurez-vous que le routage de multidiffusion est activé sur le réseau câblé entre les deux VLAN. Dans cette configuration, les VLAN sont le VLAN 1 (WLC) et le VLAN 231 (AP).

Conf t

!

interface Vlan1

ip pim sparse-dense-mode

!

interface Vlan231

ip pim sparse-dense-mode

!

Routage multidiffusion en cours :

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

En plus de ces listes de contrôle, la clé est de comprendre le flux de paquets quand mDNS s'exécute sur WLC. Le flux de paquets et les débogages permettent d'approfondir les domaines dans lesquels le précédent

les commandes de vérification sont insuffisantes.