Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
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.
Cisco vous recommande de prendre connaissance des rubriques suivantes :
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
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.
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.
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 :
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
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
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
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.
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 graphique, naviguez Controller > mDNS comme indiqué 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 <ID> (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.
Révision | Date de publication | Commentaires |
---|---|---|
2.0 |
27-Mar-2023 |
Titre fixe et Introduction condamné. Recertification |
1.0 |
08-May-2017 |
Première publication |