一:组网需求    

现在的酒店电视开始普及智能电视。手机,ipad这些移动终端只要是和智能电视在同一个网段,就可以把终端上的视频投屏到智能电视,但是目前酒店客户反馈存在如下问题:

a:酒店的拓扑往往是手机和TV处于不同网段,因此手机没法直接投屏到电视。

b:如何确保A房间 的电视只能被A房间住客 投屏,而无法被 B房间住客 投屏,避免法律风险;

c:二维码固定不变,可无限制重复利用,存在二维码外泄问题

d:扫描二维码后电视端没有反馈,用户体验感差

e:需人工在web界面输入房间号和电视ip/mac

对应解决方案:

a:

?在出口EG设备上配置2个子接口,使其分别接入手机网段和TV网段;

?配置交换机允许组播,并且使手机网段与TV网段的组播报文能够被EG内网口收到;

?配置AP允许组播,使下面组播报文能透传上去。

b:在EG设备上建立手机ip和电视ip之间的绑定关系,EG设备可以根据绑定关系进行对应的报文转发,从而控制该手机只能发现对应电视,从而也只能投屏到该电视。

c:可变二维码,二维码设置一个有效期

d:为电视端提供二维码状态,增强客户的体验感

e:电视能够自动注册,减轻酒店运维压力

二、网络拓扑  

image.png

投屏拓扑环境说明:

1)EG3220:

Gi0/0口的配置如下:

Ruijie(config-if-GigabitEthernet 0/0)#show this

Building configuration...

!

no ip unreachables

no ip redirects

no ip mask-reply

ip address 192.168.1.1 255.255.255.0

arp gratuitous-send interval 5

ip nat inside

reverse-path

!

end

Gi0/0.2口的配置如下:

Ruijie(config-subif-GigabitEthernet 0/0.2)#show this

Building configuration...

!

encapsulation dot1Q 2

ip address 10.10.10.200 255.255.255.0

ip nat inside

reverse-path

!

end

Gi0/0.4口的配置如下:

Ruijie(config-subif-GigabitEthernet 0/0.4)#show this

Building configuration...

!

encapsulation dot1Q 4

ip address 30.30.30.200 255.255.255.0

ip nat inside

reverse-path

!

end

DHCP地址池配置如下:

Ruijie#show run | be ip dhcp pool

ip dhcp pool pool_Gi0/0

network 192.168.1.0 255.255.255.0

dns-server 172.18.112.28 172.30.44.20 

default-router 192.168.1.1 

!

ip name-server 8.8.8.8

!

dns-proxy

!

路由配置如下:

Ruijie#show ip route

Gateway of last resort is 192.168.23.1 to network 0.0.0.0

S* 0.0.0.0/0 [1/0] via 192.168.23.1

C 3.3.33.3/32 is local host. 

S 10.10.10.0/24 [1/0] via 192.168.1.2

S 20.20.20.0/24 [1/0] via 192.168.1.2

S 30.30.30.0/24 [1/0] via 192.168.1.2

C 192.168.1.0/24 is directly connected, GigabitEthernet 0/0

C 192.168.1.1/32 is local host.

 

2)Switch:

开启DHCP服务功能:

Ruijie>en

Ruijie#config ter

Ruijie(config)#service dhcp

创建VLAN:

Ruijie(config)#show ip int br

VLAN 1 :192.168.1.2/24

VLAN 2 :10.10.10.0/24

VLAN 3 :20.20.20.0/24

VLAN 4 :30.30.30.0/24

创建DHCP地址池:

Ruijie(config)#show run | be ip dhcp pool

ip dhcp pool vlan2

network 10.10.10.0 255.255.255.0

dns-server 172.18.112.28

default-router 10.10.10.1

!

ip dhcp pool vlan3

option 138 ip 3.3.33.3

network 20.20.20.0 255.255.255.0

dns-server 172.30.44.20

default-router 20.20.20.254

!

ip dhcp pool vlan4

network 30.30.30.0 255.255.255.0

dns-server 172.18.112.28 

default-router 30.30.30.1 

!

Gi0/3口的配置如下:

Ruijie(config-if-GigabitEthernet 0/3)#show this

Building configuration...

!

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan add all

rldp port loop-detect shutdown-port

poe enable

!

end

Gi0/5口的配置如下:

Ruijie(config-if-GigabitEthernet 0/5)#show this

Building configuration...

!

switchport mode trunk

switchport trunk native vlan 3

switchport trunk allowed vlan add 2

poe enable

!

end

Gi0/7口的配置如下:

Ruijie(config-if-GigabitEthernet 0/7)#show this

Building configuration...

!

switchport mode trunk

switchport trunk native vlan 3

switchport trunk allowed vlan add 4

rldp port loop-detect warning

poe enable

!

end


三、功能原理

1)报文交互流程图:

image.png

2)投屏协议控制代理介绍

?安卓投屏服务协议说明

安卓投屏服务用的是DLNA协议,DLNA协议的服务发现部分使用的是:SSDP发现协议。SSDP协议规定目的端口为:1900

?苹果投屏服务协议说明

苹果投屏服务用的是Bonjour协议,Bonjour协议的服务发现部分使用的是:MDNS协议。MDNS协议规定目的端口为:5353

?设备转发报文处理过程

每当有电视端与手机手机端成功建立绑定关系后,EG设备的绑定关系表项都会进行更新。

EG设备根据表项对嗅探到的组播报文进行判断是否需要转发,若收到其中一个电视端的报文,则会根据key下的映射规则来转发给对应的手机端。

转发过程中,若报文目的端口是:1900(SSDP),则转发使用的源IP为:原始报文的源ip,目的IP为:映射手机端的ip。

转发过程中,若报文目的端口是:5353(MDNS),则转发使用的源IP为:目的ip的网关子接口ip,目的IP为:映射手机端的ip。

例如:

key:123    电视端IP:192.168.2.3    手机端IP:192.168.1.3

电视端网段 网关子接口IP:192.168.2.2

手机端网段 网关子接口IP:192.168.1.2

原始报文 代理转发报文

源IP:端口 目的IP:端口 源IP:端口 目的IP:端口

192.168.2.3:5678 239.255.255.250:1900 192.168.2.3:5678 192.168.1.3:1900

192.168.1.3:6789 239.255.255.250:1900 192.168.1.3:6789 192.168.2.3:1900

192.168.2.3:5353 224.0.0.251:5353 192.168.1.2:5353 192.168.1.3:5353

192.168.1.3:5353 224.0.0.251:5353 192.168.2.2:5353 192.168.2.3:5353


四、配置步骤

1)无线开关

 

2)AP自动上线

 

3)电视无线网络

 

3)手机无线网络

 

4)网段配置

开启 “投屏服务”前,需先配置 “酒店电视网段” 与 “客户终端网段”。

“酒店电视网段” :电视所连接wifi的ip地址网段;

下发的CLI命令:upnp-proxy isolate-region server 10.10.10.2 10.10.10.254

”客户终端网段“ :手机所连接wifi的ip地址网段;

下发的CLI命令:upnp-proxy isolate-region station 30.30.30.2 30.30.30.254

 

5)投屏配置

开启 ” 投屏“服务后,默认当前匹配模式为:ip模式(电视用ip地址进行映射匹配)。

下发的CLI命令:upnp-proxy enable

 

6)高级配置

联动认证组件:选择是否需要与认证组件进行联动(web认证、商业营销认证、本地服务器认证),默认: ”不需要开启认证功能,即可使用投屏服务“ 。

下发的CLI命令:no app-auth upnp-proxy

投屏无流量检测解绑:手机在规定时间内流量未达标,则将被强制解除投屏关系,即EG设备自动删除手机与电视的绑定关系,无法继续投屏。默认:在  60分钟 内流量速率小于 0KB/s  的用户将被强制解除投屏绑定关系!

下发的CLI命令:

upnp-proxy offline-detect

upnp-proxy offline-detect time-interval 60 flowrate 0

定时下线功能:若开启定时下线功能,并配置定时下线时间,EG设备将会在每天的这个时间点,强制解除投屏关系,即EG设备自动删除手机与电视的绑定关系,无法继续投屏。默认:关闭。

下发的CLI命令:no upnp-proxy auto-unbind

开启电视自动注册:开启电视自动注册功能后,电视可自动注册上线,也可管理员手动添加电视;开启电视自动注册的同时将自动开启电视注销功能。默认:开启。

下发的CLI命令:

upnp-proxy auto-registration enable(电视自动注册)

upnp-proxy auto-logout enable(电视自动注销)

电视通讯密钥:配置电视通讯密钥后,电视发送至EG设备的自动注册报文中的sign字段内容需使用正确的通讯密钥,否则将注册失败。默认:h$71*Ayqzct#219qzt

下发的CLI命令:upnp-proxy md5-cipher-string 123456

电视投屏url密钥:修改电视投屏url密钥后,原先的二维码均失效(手动导出的二维码、电视自动生成的二维码)。默认:$!%*sm&aq

下发的CLI命令:upnp-proxy url-cipher-string 234567

投屏二维码有效时间:电视自动注册上线后,会根据EG设备返回的url生成一个对应的二维码,该二维码的有效时间为配置的 ”投屏二维码有效时间“,过了有效时间后,用户扫描该二维码会提示二维码已失效。默认:480min。

下发的CLI命令:upnp-proxy qr-valid-time 30

 

6、投屏实施步骤

1)分别连接wifi

电视:

手机:

 

2)电视自动注册

构造电视端请求URL报文

处理前:

http://192.168.23.112:20097/local/auth/php/qr.php?roomId=1&action=getQr&ip=10.10.10.2&mac=3cbd.3e20.7407&sign=110.10.10.23cbd.3e20.7407123456

处理后:(真实发送)

http://192.168.23.112:20097/local/auth/php/qr.php?roomId=1&action=getQr&ip=MTAuMTAuMTAuMg&mac=M2NiZC4zZTIwLjc0MDc&sign=d0664e88d137f9d3d25094328fb1cbdf

处理过程如下表所示:

功能


提供电视投屏URL

TV

请求

协议头

GET

GET/local/auth/php/qr.php?roomId=XXX&action=getQr&ip=XXXX&mac=XXXX   &sign=XXXXXX

HTTP/1.1

Host

192.168.1.254:20097

网关地址,电视能访问网关的地址即可,端口固定为20097

参数

说明

参数

必需

说明

roomId

utf8格式url编码   ,房间号尽量提供(电视自动注册功能中使用自带房间号便于管理)

action

获取电视投屏url时,action应为getQr

ip

电视ip地址。如:

192.168.1.1--<base64编码>--->MTkyLjE2OC4xLjE=  -----><URL安全化处理(去掉等号)>----->MTkyLjE2OC4xLjE

mac

电视mac地址。如:

00d0.1122.3344--<base64编码>--->MDBkMC4xMTIyLjMzNDQ=  -----><URL安全化处理(去掉等号)>----->MDBkMC4xMTIyLjMzNDQ

sign

md5值,算法如下(32位小写):

md5(roomId+ip+mac+"h$71*Ayqzct#219qzt"),333192.168.1.100d0.1122.3344h$71*Ayqzct#219qzt--<md5加密>--->22a35cb510dbc869b5793ccc22760c03  

 

3)电视生成二维码

构造电视请求url的报文发送至EG设备后,电视自动注册成功,同时EG设备会返回给电视一个用于生成二维码的url。使用二维码制作软件(如:草料二维码等),将该url手动去掉 ”\“ 后,生成一个二维码。

 

4)手机扫描二维码

使用手机扫描二维码,EG设备会返回给手机一个绑定成功的界面,表示成功建立手机与电视的绑定关系,手机可投屏至电视。

 

5)手机投屏至电视

手机打开视频APP(如:腾讯视频等)播放视频,并点击”投屏“按钮后,选择对应电视,即可将手机画面成功投屏至电视。