背景

Bonjour:是苹果电脑公司在其开发的操作系统Mac OS X10.2版本之后引入的服务器搜索协议所使用的一个商标名,适用于LAN。 Bonjour使用多点传送域名系统服务记录来定位各种设备,比如打印机或者其他电脑,以及另外设备上的服务。 

简单来说,就是终端可以通过Bonjour协议来发现局域网内同样支持Bonjour协议的服务器。

Bonjour协议基于RFC6762:MDNS协议。

Airplay:AirPlay是苹果公司的在iOS4.2及OS X Mountain Lion中加入的一种播放技术,可以将iPhone、iPod touch、iPad及Mac(需要OS X Mountain Lion或更新版)上的视频镜像传送到支持Airplay的设备(如:音箱、Apple TV)中播放。使用Airplay需要iOS4.2版本的设备或Mac电脑上的iTunes10.1以上版本。视频镜像则需要iOS 5及OS X Mountain Lion。

通过Airplay,可以把iOS、macOS系统的屏幕显示的信息通过无线网络镜像到支持Airplay投影的设备上,比如Apple TV或者一些电视盒子。

image.png


技术原理

原生的Airplay实现存在如下问题:

具体解决方法如下:

1、跨三层发现:设备定时向局域网内发出查询服务的报文,如果存在对应的服务器,服务器会响应应答,设备收到响应之后就会把应答的结果缓存起来,以便终端查询的时候设备能够直接返回对应的结果。

2、抢占功能:一个终端投影到服务器的时候,设备能够发现并记录终端的投影信息,其他终端查询的时候,就查询不到已经连接的服务器的信息,直到前一个终端断开连接,其他终端才能查询。

3、自动命名:设备会自动将Airplay服务器的名字后面加上IP地址作为区分。

image.png

image.png

image.png

image.png

image.png

image.png

功能限制

配置及调试

iPad、Apple TV、Print分别位于不同VLAN上,iPad需要借助Bonjour网关获取Apple TV、Print的IP地址,进而与Apple TV、Print进行通信。

image.png



【配置方法】

开启Bonjour网关功能。  

Ruijie# configure terminal

Ruijie(config)# interface vlan 2

Ruijie(config-if-vlan 2 )# bonjour-gateway enable

【检验方法】 检查是否开启Bonjour网关功能


Ruijie# show run | begin interface vlan 2

Current   configuration : 491 bytes

 

interface   vlan   2

 bonjour-gateway enable

!





【配置方法】

配置Bonjour策略。


Ruijie# configure terminal

Enter   configuration commands, one per line.    End with CNTL/Z.

Ruijie(config)# bonjour-gateway strategy-mode teacher

Ruijie(config-bonjour-gateway)#service type ftp ip 10.0.0.5

Ruijie(config-bonjour-gateway)#service vlan range 5 6

Ruijie(config-bonjour-gateway)#service vlan access-vlan

Ruijie(config-bonjour-gateway)#exit

Ruijie(config)#

Ruijie(config)#interface vlan 2

Ruijie(config-if-vlan 1)# bonjour-gateway enable

Ruijie(config-if-vlan 1)# bonjour-gateway strategy teacher



【检验方法】

检查是否启动Bonjour网关功能。  

Ruijie#show   run | begin interface VLAN 1

Current   configuration : 491 bytes

 

interface   VLAN 2

 bonjour-gateway enable

 bonjour-gateway strategy teacher

!

检查是否配置Bonjour策略。  

Ruijie#show   run | begin bonjour-gateway

Current   configuration : 491 bytes

 

bonjour-gateway   strategy-mode teacher

 service type ftp ip   10.0.0.5

 service vlan range 5

 service vlan access-vlan

!



【配置方法】

配置设备关闭自动命名功能。


Ruijie#configure   terminal

Enter configuration commands, one per   line.  End with CNTL/Z.

Ruijie(config)#   bonjour-gateway airplay-rename disable



【检验方法】

检查是否配置设备关闭自动命名功能。  

Ruijie#show   run | begin bonjour-gateway

Current   configuration : 491 bytes

 

bonjour-gateway   airplay-rename disable!

配置设备主动查询Bonjour服务


【配置方法】

配置设备主动查询Bonjour服务。


Ruijie#configure   terminal

Enter configuration commands, one per   line.  End with CNTL/Z.

Ruijie(config)#bonjour-gateway   query enable

Ruijie(config)#bonjour-gateway   query interval 20



【检验方法】

检查是否配置设备主动查询Bonjour服务。  

Ruijie#show   run | begin bonjour-gateway

Current   configuration : 491 bytes

 

bonjour-gateway query enable

bonjour-gateway query interval 20




【配置效果】

启动Bonjour定点投屏功能,Bonjour将根据绑定关系应答给终端。



【配置方法】

关闭Bonjour定点投屏功能。  

Ruijie#configure   terminal

Ruijie(config)#  

Ruijie(config)#no   bonjour-gateway airplay-fixed enable



【检验方法】

检查是否已关闭Bonjour定点投屏功能。  

Ruijie#sh   run | include fixed

Ruijie#



命令:show bonjour-gateway service-database [ ip xxx.xxx.xxx.xxx ]

image.png

image.png


命令:show bonjour-gateway con sta [ mac ]

image.png


关闭禁止抢占功能

bonjour-gateway   airplay-preemption disable


开启禁止抢占功能

no   bonjour-gateway airplay-preemption disable


image.png


image.png



image.png


允许10.104.93.222访问10.104.196.46,访问目的端口为7100和6361,不允许其他地址访问10.104.196.46的这两个端口。

应用场景特点

查询代理和响应转发

如下图所示,iPad、Apple TV、Print分别位于不同VLAN上,iPad需要借助Bonjour网关获取Apple TV、Print的IP地址,进而与Apple TV、Print进行通信。

多媒体网关禁止抢占功能

同时,不同终端可能会在同一时间使用Apple TV的屏幕投影功能,这个时候 ,不同的终端在没有开启Bonjour网关功能的时候会相互抢占,开启Bonjour网关之后就能够实现禁止抢占的功能。

多媒体网关服务器自动命名功能

如果网络中存在多个Apple TV,可能终端上显示的投影设备的名字是一样的,造成混淆,目前支持自动以名字+IP进行命名,用来区分不同的服务器。

image.png

功能部属

全局开启Bonjour网关功能,Bonjour网关才能处理该接口收到的组播DNS请求报文;开启禁止抢占功能,不能关闭;能够自动命名发现的服务器。

典型故障案例

开启Bonjour功能时,旧版本中会出现AP内存使用过高,Bonjour缓存太多的VSP报文。


初步判断:

1、版本早于AP_RGOS 11.9(6)W3B1。

2、AC端查看配置确认开启了bonjour_gateway enable。

3、AP端查看总内存超过80%,bonjour_gateway使用内存(rss字段)超过50000基本就可以判断环境中存在此问题。

解决方案:

1、升级到AP_RGOS 11.9(6)W3B1及之后版本。

2、bonjour gateway属于三层代理和跨网段投屏功能,在没有此使用功能需求时,不开启此功能。

3、如果有三层代理和跨网段投屏功能需求时,对开启bonjour_gateway功能网段进行裁剪,仅投屏服务器和投屏终端所在的网段进行开启,其余无此需求的网段不开启。

4、可以把确认不需要投屏的AP关闭Bonjour功能(AP中配置bonjour mdns-disable)。

注意事项