mDNS故障排查(译)

摘要:
WLC上mDNS网关的理解及排查第一部分:介绍这篇文档描述了Bonjour协议在WLC上的操作,该文档旨在协助工程师理解该工作流量的原理以及提供故障排查的指导。当mDNS全局开启的时候,控制器会发送mDNSqueries消息到目的组播地址224.0.0.251,以查询有线和无线网络的服务。这个组播地址239.100.100.100只出现在WLC和APs的CAPWAP的头部中,无线clients不会感知到它。
WLC上mDNS网关的理解及排查

第一部分:介绍

这篇文档描述了Bonjour协议在WLC上的操作,该文档旨在协助工程师理解该工作流量的原理以及提供故障排查的指导。

第二部分:需求和前提

知识需求:

Cisco建议你对Bonjour协议、在WLC配置mDNS、以及多播路由有一定的基础知识,以便你能更好的理解。

设备组件:

该文档是基于如下设备和相关软件版本完成的:

  • AIR-CT2504-K9 WLC, 8.2.141.0
  • WS-C3560CX-8PC-S
  • AIR-CAP3702I-E-K9
  • Apple TV
  • Iphone5s, 10.2

该文档是在指定的LAB环境中完成的,所有的设备开始都是默认的配置。如果你的网络是在线的,有业务,那么需要你了解你的操作对网络的潜在影响。

第三部分:背景信息

Bonjour协议是一种Apple服务发现协议,它使用多播域名系统(multicast Domain Name System,mDNS)服务记录来定位本地网络上的设备和服务。

Bonjour协议通过服务通告(serviceannouncements)和服务查询(servicequeries)来运作。每个查询和通告消息都以组播地址224.0.0.251为目的地址发送出去(如果在IPv6中,地址为FF02::FB),该协议在UDP5353上使用mDNS。

Bonjour协议使用的地址是链路本地多播地址,因此仅转发到本地L2网络。路由器无法使用多播路由重定向流量,因为生存时间(TTL)设被置为1。那么,这就有一个问题,所有的服务提供者(或者称为源,通告服务的设备)和Bonjour客户端(请求服务的设备)都必须位于同一子网,这就限制扩展性。那么,为了解决这个问题,思科WLC就充当这个Bonjour的网关。由WLC来监听Bonjour服务,缓存这些来自源的Bonjour通告(例如AirPlay、AirPrint等)。例如,Apple TV会在Bonjour客户端请求服务的时候给予响应。那么这样的方式就就可以让源和客户端位于不同的子网中。

第四部分:配置拓扑

网络拓扑图

mDNS故障排查(译)第1张

第五部分:数据流和debug操作

当mDNS在Cisco WLC上运行时,会发生如下基本的四个步骤。 这些步骤描述如下:

步骤1:当在WLC全局开启mDNS

默认情况下,WLC(version8.3.143)上mDNS监听如下的服务:

mDNS故障排查(译)第2张

如下所示的是自定义的mDNS profile:其中的每一个服务都有一个Service String与之关联。Service Strings是为服务查询匹配服务实例的。一个服务类型就是包含了服务名称(Service Name)和协议(Protocol)。另外,它还可以包含一个或多个子类型标识符(subtype identifiers)。如下的AppleTV Service使用 _airplay._tcp.local. 这个字符串。

mDNS故障排查(译)第3张

当mDNS全局开启的时候,控制器会发送mDNS queries消息到目的组播地址224.0.0.251,以查询有线和无线网络的服务。

如下的抓包信息,是在WLC switch port抓取,我们可以看到80、81和82 三个query报文是以management(10.48.39.142)和动态接口(192.168.232.11 & 192.168.239.8)作为源,发送到组播地址224.0.0.251的,来查询有线网络上的服务。

mDNS故障排查(译)第4张

包83显示的是WLC发送到无线网络的查询。在内部的报文显示WLC的查询报文还是以源为management,目的地址为224.0.0.251的。无线上的query报文,会被添加上CAPWAP头部,该报文外部的IP地址还是management,但是此图中目的地址就是组播地址239.100.100.100了。

mDNS故障排查(译)第5张

其中的组播地址239.100.100.100,是在WLC全局配置的。APs会加入这个组播组以监听这个它。WLC转发query报文到这个组播组,APs收到查询报文后,将它发送到无线空口环境。这个组播地址239.100.100.100只出现在WLC和APs的CAPWAP的头部中,无线clients不会感知到它(但是clients看得到作为数据封装在报文中的原始mDNS报文)。

mDNS故障排查(译)第6张

这里的设置中,WLC是2504在vlan1中,并且AP在vlan231。由于这两个设备是在不同的vlan,那么需要在vlan1和vlan231的有线网络开启组播路由,才能使其正常工作

注意:如果组播路由没有在WLC和AP的管理VLAN开启,则必须将AP组播模式设置为单播。在此模式下,WLC将每个多播数据包单播发送到与WLC关联的每个AP。此模式效率非常低,不建议使用。

如下抓取的数据包是query数据包的详细部分:

mDNS故障排查(译)第7张

如下的debug信息体现的之前抓取报文的相同部分:

(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来维护它,如图所示。

mDNS故障排查(译)第8张

如下报文是Apple TV的响应:

mDNS故障排查(译)第9张

这些debug信息显示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监听客户端针对对应服务的query

之后,在任何时间点,无线客户端(192.168.232.98)发送一个请求airplay service的query报文(通常在客户端打开一个具有播放功能的应用程序时),如图所示:

mDNS故障排查(译)第10张

*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使用缓存服务Wireless Team(4)._ airplay._tcp.local进行响应。 内部数据包的源IP是客户端vlan的动态接口,在本例中为192.168.232.11,如图所示。

mDNS故障排查(译)第11张

如下是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.

第六部分:验证和故障排查

本节提供了可用于确认和排除配置故障的信息。
为了识别和隔离mDNS中的问题,需要配置正确,因此只需要很少的基本检查。

步骤1:mDNS必须全局开启

WLC的GUI界面,Controller>mDNS

mDNS故障排查(译)第12张

CLI界面查看:

show network summary (snippet)
mDNS snooping............................... Enabled
mDNS Query Interval......................... 15 minutes

步骤2:如果你使用的是自定义的mDNS profile,确定所有的所需的服务都被添加进去。

步骤3:保证mDNS在对应的SSID下面开启,并且对应了正确的mDNS profile。

通过GUI界面查看,WLAN>WLAN ID>Advanced

mDNS故障排查(译)第13张

通过CLI查看:

show wlan <ID>(snippet)
mDNS Status...................................... Enabled
mDNS Profile Name................................ default-mdns-profile

步骤4:验证mDNS服务提供者是否在“Domain Names”列表中。

GUI查看:Controller>mDNS>mDNS Domain Name IP>Summary,这里就是WLC缓存的domain names(例如Apple TV,Airprinters)。

mDNS故障排查(译)第14张

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

mDNS故障排查(译)第15张

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 browser(Controller >> mDNS >> mDNS browser)中学到了。 Bonjour browser是在WLC上看到的所有服务通告的缓存,由于配置不允许学习而未被发现。 我们可以通过从Bonjour browser中选择服务来添加该服务,这在我们测试和实施新服务时非常方便。

步骤7:如下是debug Bonjour的相关命令(注意,命令开启后,信息很多!)

debug mdns error enable
debug mdns message enable
debug mdns detail enable
debug mdns all enable

Bonjour browser和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上运行时的数据包流。 数据包流和debug有助于深入研究上述验证命令不足的部分。

原文链接:https://www.cisco.com/c/en/us/support/docs/wireless/wireless-lan-controller-software/210835-Troubleshooting-mDNS.html#anc13

免责声明:文章转载自《mDNS故障排查(译)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在ChemDraw中缩短双键长度利用Warensoft Stock Service编写高频交易软件--DEMO下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Live555 分析(一):类介绍

从程序的结构来看,live项目包括了四个基本库、程序入口类(在mediaServer中)和一些测试代码(在testProgs中)。 四个基本静态库是UsageEnvironment、BasicUsageEnvironment、groupsock和liveMedia。 UsageEnvironment: 包括抽象类UsageEnvironment和抽象类Ta...

Ethernet帧的分析(转)

网络通信协议 一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。 IEEE802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(FrameRelay),高级数据链路控制HDLC(H...

IPv6如何实现arp类似的功能

本文转自头条https://www.toutiao.com/i6828807334622396941/ 一、IPv4与IPv6报头对比 1、IPv4报头   (1)版本 :当前 IP 版本,IPv4。 (2)首部长度:指的是 IPv4 报头长度,20-60 个字节,因为 Option 字段是 0-40 个字 节。 (3)区分服务:用于 Qos 报头。...

EIGRP 超强总结

1)EIGRP的特征和属性:EIGRP是一个高级的距离矢量协议,因为它的快速收敛和保证无环。有以下特征:1、组播和单播:EIGRP组播地址是224.0.0.10 ,使用组播和单薄取代广播2、支持多种网络层协议3、100%无环路:采用DUAL算法4、快速收敛:一个运行EIGRP的路由器保存所有邻居的路由表信息,以至于它能快速适应可替代的路由。如果没有合适的路...

关于组播239.255.255.250

网络很慢,用SNIFFER监控,观察到内网一个IP10.192.68.66与239.255.255.250有着大量的数据传送,占据大量带宽.各位同仁有没有遇到类似情况,小虾初步怀疑是有人在网内看网络电视导致的. (曾经在一个论坛里看见说是一个播放软件的插件引起的,但是没有说具体是什么软件) 发现很多网友出现跟我一样的情况,在一个英文网站上跟“Upnp”这...

netlink组播的使用

Linux的netlink机制是非常好的Linux内核与应用层进行双向交互数据的方式。其常用的单播方式可以实现内核为服务端,应用层为客户端的通信方式。如果需要实现应用层为服务端,内核为客户端的通信方式,则需要使用组播。这种场景一般是应用层守护进程需要实现获取内核的某些模块的状态信息。 内核中已经定义好的组有: #define NETLINK_ROUTE...