目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

網路圖表

帶有調試的資料包流

步驟 1.當您在WLC上全局啟用mDNS時

步驟 2.WLC快取Bonjour服務（Apple TV廣告）

步驟 3.WLC偵聽客戶端的服務查詢

步驟 4.WLC傳送單播響應到客戶端對Bonjour服務的查詢

驗證與疑難排解

簡介

本檔案說明Bonjour通訊協定在無線控制器上的實作，並提供協助排除問題的準則。

必要條件

需求

思科建議您瞭解以下主題：

- Bonjour協定基礎知識

- 有關如何在WLC上配置mDNS的基本知識

- 組播路由的基本知識

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- AIR-CT2504-K9 WLC，8.2.141.0

- WS-C3560CX-8PC-S

- AIR-CAP3702I-E-K9

- Apple電視

- Iphone5s，10.2

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

背景資訊

Bonjour協定是一種Apple服務發現協定，它使用組播域名系統(mDNS)服務記錄來查詢本地網路上的裝置和服務。Bonjour協定用於服務通告和服務查詢。每個查詢或通告都傳送到Bonjour組播地址ipv4 224.0.0.251 (ipv6 FF02：：FB)。此協定在UDP埠5353上使用mDNS。

Bonjour協定使用的地址是本地鏈路組播地址，因此只轉發到本地L2網路。由於生存時間(TTL)設定為1，路由器無法使用組播路由來重定向流量。這意味著所有服務提供商/源（通告該服務）和Bonjour客戶端（請求服務）必須在同一子網中。這會導致可擴充性問題。

為了解決此問題，思科無線LAN控制器(WLC)會作為Bonjour閘道。WLC偵聽Bonjour服務，從源/主機快取這些Bonjour廣告（AirPlay、AirPrint等）。例如，Apple TV和Bonjour客戶端在請求/請求服務時響應。這樣，源裝置和客戶端就可以位於不同的子網中。

設定

網路圖表

帶有調試的資料包流

在Cisco WLC上運行mDNS需要執行四個基本步驟。這些步驟說明如下：

步驟 1.當您在WLC上全局啟用mDNS時

如果您沒有建立自訂mDNS設定檔（如圖所示），WLC會監聽這些預設服務。

每個服務都有一個相關聯的服務字串。服務字串用於將服務例項與服務查詢相匹配。服務型別始終包含服務名稱和協定。此外，它可以包含一個或多個子型別識別符號。 AppleTV服務使用：_airplay._tcp.local。

當全局啟用mDNS時，控制器會針對有線（管理和動態介面）和無線網路上的所有服務將mDNS查詢傳送到224.0.0.251。

在WLC交換器連線埠的此擷取中，封包80、81和82顯示WLC使用管理來源IP (10.48.39.142)和動態介面（192.168.232.11和192.168.239.8），透過有線網路向224.0.0.251傳送查詢，如下圖所示。

Packet 83顯示WLC透過無線傳送查詢。內部資料包顯示從管理介面到224.0.0.251的WLC查詢。由於此查詢是透過無線進行的，因此capwap報頭會增加到資料包中，而外部源IP仍然是管理源IP，但目的地是組播IP 239.100.100.100，如圖所示。

現在，此組播IP 239.100.100.100從何而來？在WLC上，存取點(AP)組播模式(controller > general)設定為組播組地址為239.100.100.100（例如，239範圍內的任何ip）。AP加入此組播組並偵聽它。WLC將查詢轉發到此組，AP接收查詢並透過無線傳送。地址239.100.100.100（這不是靜態的，這是您在下一個示例中配置的）只出現在WLC和AP之間的capwap報頭中，無線客戶端看不到其中的任何內容（但可以看到內部原始mdns資料包），如圖所示。

請記住，在此設定中，WLC是VLAN 1中的2504，AP是VLAN 231。由於裝置位於不同的vlan中，您需要為有線上的vlan 1和239啟用組播路由，這樣才能正常工作。

注意：如果在有線上未為wlc和AP管理VLAN啟用組播路由，則AP組播模式必須設定為單播。在此模式中，控制器會將每個組播資料包單播到與控制器關聯的每個AP。此模式效率非常低，不建議使用。

此捕獲是查詢資料包的詳細資訊，如圖所示。

調試所反映的內容與捕獲中看到的內容相同。在這裡，代碼片段只顯示來自管理介面的查詢。

(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

步驟 2.WLC快取Bonjour服務（Apple TV廣告）

在此資料包中，Apple TV (192.168.239.37)向224.0.0.251傳送通告。因為在本例中Apple TV是無線的，所以您可以看到透過capwap傳送的廣告。WLC僅注意到一次mDNS服務回應，但快取專案具有TTL，且需要使用keepalive對其進行維護，如圖所示。

Apple TV的詳細響應如圖所示。

這些調試顯示Apple TV響應WLC的查詢。在這個場景中，Apple TV回應了21項服務，其中只有Airplay服務感興趣。

*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

步驟 3.WLC偵聽客戶端的服務查詢

稍後，無線客戶端(192.168.232.98)在任何時間點傳送請求空中播放服務的查詢（通常當客戶端打開具有空中播放功能的應用程式時），如圖所示。

*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

步驟 4.WLC傳送單播響應到客戶端對Bonjour服務的查詢

WLC以快取的服務無線組(4)。_airplay._tcp.local作出響應。內部資料包的源IP是客戶端vlan的動態介面，在本例中為192.168.232.11，如圖所示。

偵錯的片段

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.

驗證與疑難排解

本節提供的資訊可用於確認組態和對其進行疑難排解。

為了辨識和隔離mdn中的問題，需要正確配置，因此不需要進行基本檢查。

步驟1.必須全局啟用mDNS。

在GUI中，導航Controller > mDNS，如圖所示。

在 CLI 上：

show network summary (snippet)

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

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

步驟 2.如果您使用自定義mDNS配置檔案，請確保所有必需的服務都增加到該配置檔案。

步驟 3.確保在SSID下啟用了mDNS，並且正確的mdns配置檔案已對映到SSID。

在GUI中，導覽至WLAN > WLAN ID > Advanced，如下圖所示。

在 CLI 上：

show wlan <ID> (snippet)

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

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

步驟 4. 驗證mDNS服務提供程式是否在mDNS域服務中列出。這會列出WLC快取之服務的網域名稱(Apple TV、airprinters)。

在GUI中，導航到Controller > mDNS > mDNS Domain Name IP> Summary，如下圖所示。

在 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

步驟 5. 驗證該服務提供商是否也列在特定服務本身下。

在GUI中，導覽至Controller > mDNS > General > Service Name，如下圖所示。

在 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

步驟 6.如果WLC未發現該服務，請檢查是否可在bonjour瀏覽器（Controller>>mDNS>>mDNS瀏覽器）下獲取該服務。 Bonjour瀏覽器是在WLC上看到的所有服務通告的快取，由於配置不允許學習，因此未發現該快取。您可以從Bonjour瀏覽器選擇並增加服務，這在測試和實施新服務時非常有用。

步驟 7.以下是用於調試Bonjour的命令：

debug mdns error enable

debug mdns message enable

debug mdns detail enable

debug mdns all enable

Bonjour瀏覽器和show mdns service not-learnt也可用作調試工具。

步驟 8.如前所述，如果WLC和AP位於不同的子網中，並且AP組播模式設定為組播，請確保在兩個vlan之間的有線網路上啟用組播路由。在此設定中，vlan是vlan 1 (WLC)和vlan 231 (AP)。

Conf t

!

interface Vlan1

ip pim sparse-dense-mode

!

interface Vlan231

ip pim sparse-dense-mode

!

播放中的組播路由：

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

除了這些核對表，關鍵還要瞭解mDNS在WLC上運行時的資料包流。資料包流和調試有助於深入瞭解先前的

驗證命令不足。