O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve a implementação do protocolo Bonjour no controlador sem fio e fornece diretrizes para ajudar a solucionar problemas.
A Cisco recomenda que você tenha conhecimento destes tópicos:
As informações neste documento são baseadas nestas versões de software e hardware:
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
O protocolo Bonjour é um protocolo de descoberta de serviços da Apple que localiza dispositivos e serviços em uma rede local com o uso de registros de serviço multicast Domain Name System (mDNS). O protocolo Bonjour opera em anúncios de serviço e consultas de serviço. Cada consulta ou anúncio é enviado ao endereço multicast Bonjour ipv4 224.0.0.251 (ipv6 FF02::FB). Este protocolo usa mDNS na porta UDP 5353.
O endereço usado pelo protocolo Bonjour é o endereço multicast de link local e, portanto, é encaminhado somente para a rede L2 local. Os roteadores não podem usar o roteamento multicast para redirecionar o tráfego porque o tempo de vida (TTL) está definido como 1. Isso significava que todos os provedores de serviços/origens (que anunciam o serviço) e clientes Bonjour (que solicitam o serviço) tinham que estar na mesma sub-rede. Isso leva a problemas de escalabilidade.
Para resolver esse problema, o Cisco Wireless LAN Controller (WLC) atua como um Gateway Bonjour. A WLC escuta os serviços Bonjour, armazena em cache esses anúncios Bonjour (AirPlay, AirPrint, etc.) da origem/do host. Por exemplo, a Apple TV e responde aos clientes Bonjour quando eles pedem/solicitam um serviço. Dessa forma, você pode ter as origens e os clientes em sub-redes diferentes.
Há quatro etapas básicas que ocorrem quando o mDNS é executado em uma WLC da Cisco. Essas etapas são descritas a seguir:
A WLC escutará esses serviços padrão se você não tiver um perfil mDNS personalizado criado conforme mostrado na imagem.
Cada um desses serviços tem uma string de serviço associada a ele. As cadeias de caracteres de serviço são usadas para associar instâncias de serviço a consultas de serviço. Um tipo de serviço sempre contém o nome do serviço e o protocolo. Além disso, pode conter um ou mais identificadores de subtipo. O serviço AppleTV usa: _airplay._tcp.local.
Quando o mDNS é ativado globalmente, o controlador envia consultas mDNS para 224.0.0.251 para todos os serviços em redes com fio (gerenciamento e interfaces dinâmicas) e sem fio.
Nessa captura na porta do switch WLC, os pacotes 80, 81 e 82 mostram que a WLC envia uma consulta a 224.0.0.251 pela rede com fio com o IP de origem do gerenciamento (10.48.39.142) e interfaces dinâmicas (192.168.232.11 e 192.168.239.8) como mostrado na imagem.
O pacote 83 mostra que a WLC envia uma consulta pela rede sem fio. O pacote interno mostra a consulta WLC para 224.0.0.251 da interface de gerenciamento. Como essa consulta é feita pela rede sem fio, o cabeçalho capwap é adicionado ao pacote com o IP de origem externo ainda a ser o de gerenciamento, mas o destino é o IP multicast 239.100.100.100, como mostrado na imagem.
Agora, de onde vem esse IP multicast 239.100.100.100? Na WLC, o modo multicast do Access Point (AP) (controlador > geral) foi definido como multicast com o endereço de grupo multicast como 239.100.100.100 (é apenas um exemplo, qualquer ip no intervalo 239). Os APs se unem a esse grupo multicast e escutam nele. A WLC encaminha a consulta para esse grupo, os APs a recebem e a enviam pelo ar. O endereço 239.100.100.100 (isto não é estático, isto é o que você configurou no próximo exemplo) aparece somente no cabeçalho capwap entre o WLC e os APs, os clientes wireless nunca veem nada dele (mas podem ver o pacote mdns original interno) como mostrado na imagem.
Lembre-se de que nesta configuração a WLC é um 2504 na vlan 1 e o AP está na vlan 231. Como os dispositivos estão em vlans diferentes, você precisa ter o roteamento multicast ativado para vlan 1 e 239 na rede com fio para que isso funcione.
Observação: se o roteamento multicast não estiver habilitado na vlan de gerenciamento com fio para wlc e AP, o modo multicast do AP deverá ser definido como unicast. Neste modo, o controlador envia por unicast cada pacote multicast para cada AP associado ao controlador. Este modo é muito ineficiente e não é recomendado.
Essa captura é o pacote de consulta em detalhes como mostrado na imagem.
As depurações refletem a mesma coisa vista nas capturas. Aqui o fragmento mostra somente a consulta da interface de gerenciamento.
(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
Nesse pacote, a Apple TV ( 192.168.239.37 ) envia anúncios para 224.0.0.251 . Como neste caso a Apple TV é sem fio , você pode ver o anúncio enviado sobre o capwap. A WLC observa apenas uma vez a resposta do serviço mDNS, no entanto, essa entrada de cache tem um TTL e manutenções de atividade são necessárias para mantê-la como mostrado na imagem.
A resposta detalhada da Apple TV é mostrada na imagem.
Essas depurações mostram a Apple TV em resposta às consultas da WLC . Neste cenário, a Apple TV respondeu com 21 serviços, dos quais apenas o serviço Airplay é de interesse.
*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
Mais tarde, a qualquer momento, o cliente sem fio (192.168.232.98) envia uma consulta que solicita o serviço de reprodução ao ar (normalmente quando o cliente abre uma aplicação que seja compatível com reprodução ao ar) como mostrado na imagem.
*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
A WLC responde com o serviço em cache Wireless Team (4)._airplay._tcp.local. O IP origem do pacote interno é a interface dinâmica da vlan cliente, neste caso 192.168.232.11, como mostrado na imagem.
Trecho da depuração
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.
Esta seção fornece informações que você pode usar para confirmar e solucionar problemas da sua configuração.
Para identificar e isolar problemas em mdns, é necessário que a configuração esteja correta e, portanto, requer poucas verificações básicas.
Etapa 1. O mDNS deve ser ativado globalmente.
Na GUI, navegue para Controller > mDNS conforme mostrado na imagem.
Do CLI:
show network summary (snippet)
mDNS snooping............................... Enabled
mDNS Query Interval......................... 15 minutes
Etapa 2. Se você usar um perfil mDNS personalizado, certifique-se de que todos os serviços necessários sejam adicionados a ele.
Etapa 3. Verifique se mDNS está habilitado no SSID e se o perfil mdns correto está mapeado para o SSID.
Na GUI, navegue para WLAN > WLAN ID > Advanced conforme mostrado na imagem.
Do CLI:
show wlan <ID> (snippet)
mDNS Status...................................... Enabled
mDNS Profile Name................................ default-mdns-profile
Etapa 4. Verifique se o provedor de serviços mDNS está listado nos serviços de domínios mDNS. Isso lista os nomes de domínio ( Apple TV, airprinters) dos serviços que foram armazenados em cache pela WLC.
Na GUI, navegue até Controller > mDNS > mDNS Domain Name IP> Summary conforme mostrado na imagem.
Do 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
Etapa 5. Verifique se o provedor de serviços também está listado no próprio serviço específico.
Na GUI, navegue até Controller > mDNS > General > Service Name conforme mostrado na imagem.
Do 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
Etapa 6. Se o serviço não for descoberto pelo WLC, verifique se ele deve ser aprendido no navegador bonjour (Controller>>mDNS>>navegador mDNS). O navegador Bonjour é um cache de todos os anúncios de serviço vistos na WLC e não descobertos porque a configuração não permitiu aprender. Você pode selecionar e adicionar serviços do navegador Bonjour, o que é útil quando você testa e implementa um novo serviço.
Passo 7. Estes são os comandos para depurar Bonjour:
debug mdns error enable
debug mdns message enable
debug mdns detail enable
debug mdns all enable
O navegador Bonjour e o show mdns service not-learnt também podem ser usados como uma ferramenta de depuração.
Etapa 8. Como mencionado anteriormente, se a WLC e o AP estiverem em sub-redes diferentes e o modo multicast do AP estiver definido como multicast, verifique se o roteamento multicast está habilitado na rede com fio entre as duas vlans. Nessa configuração, as vlans são vlan 1 (WLC) e vlan 231 (AP).
Conf t
!
interface Vlan1
ip pim sparse-dense-mode
!
interface Vlan231
ip pim sparse-dense-mode
!
Roteamento multicast em jogo:
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 com essas listas de verificação, a chave é entender o fluxo de pacotes quando o mDNS é executado na WLC. O fluxo de pacotes e as depurações ajudam a mergulhar profundamente em áreas onde o
os comandos de verificação são insuficientes.
Revisão | Data de publicação | Comentários |
---|---|---|
2.0 |
27-Mar-2023 |
Título fixo e Introdução condenado. Recertificação |
1.0 |
08-May-2017 |
Versão inicial |