文章目录
前言
在WiFi直连(WiFi Direct,也称为peer-to-peer,P2P)中,设备可以不通过AP(Access Point)进行连接。在P2P group中,称为GO(Group Owner)的设备具有像AP一样的功能,其他被称为GC(Group Client)的设备就去连接GO。支持WiFi Direct功能的设备都可以称为GO或GC。在Group Formation阶段,设备会被确定称为GO还是GC。笔者将会后面的博客讨论Group Formation过程。在P2P group中,只会存在一个GO,其他许多的GC去连接这个GO,然后进行通信。
一、P2P的模型
1.1 P2P的组成
P2P体系结构由支持设备间通信的交互组件组成。
P2P设备
- 能够作为P2P GO(Group Owner)或P2P GC(Group Client)角色。
- 能够协商成为GO或GC。
- 能够支持WSC(Wi-Fi Simple Configuration)Registrar和P2P discovery机制。
- 能够支持WLAN和P2P并发运行。
P2P GO角色:
- 类似于AP实体,对P2P GC提供BSS功能和服务。
- 提供WSC功能。
- 可能提供关联GC之间的通信。
P2P GC角色:
- 实现STA的功能。
- 提供WSC Enrollee功能。
1.2 P2P的拓扑
P2P拓扑是1:n策略,多个GC可以连接同一个GO。这些连接的设备被称为一个P2P Group。
在DMG之外的运行每个client可能是P2P GC或传统的不具有P2P功能的Client。在DMG之内运行的每个client必须是具备P2P功能的GC。
图1 在DMG之外的P2P组成和拓扑
图2 在DMG中的P2P组成和拓扑
一个P2P Group有唯一的SSID,图3表示1:1的拓扑。
图3 P2P Group 拓扑为1:1
1.3 P2P并发模式
支持P2P功能的设备可以并发模式运行,也就是STA(Station)模式和P2P模式共存。在并发模式中,P2P设备可以连接一个AP。因此,P2P设备可以GO+STA或GC+STA模式运行。在并发模式中,设备存在两个interface接口,并且这两个interface大概率处于同一个channel信道,也有可能处于不同的channel和band。
在下图中可以看到,P2P设备处于并发模式。
图4 P2P Concurrent Device
图4显示了P2P设备有一个MAC实体作为了WLAN-STA,另外一个MAC实体作为了P2P Device。双MAC功能可以通过两个独立的物理MAC实体提供,每个实体与自己的PHY实体关联,或者两个虚拟MAC实体与一个PHY实体关联。
一个P2P group可以与一个并发操作的WLAN BSS处于相同或者不同的信道中。比如,WLAN BSS可能处于5.2GHz的channel 36,而P2P group在2.4GHz的channel 6。
1.4 功能和服务
1.4.1 基本功能和服务
在DMG之外运行的P2P,规范是假设以下STA功能和服务在设备中已经实现:
- IEEE 802.11g或比2.4GHz更新的PHY
- IEEE 802.11i(IES-CCMP)
- WiFi Protected Setup
- WiFi Multimedia
在DMG之内运行的P2P,规范是假设以下STA功能和服务在设备中已经实现:
- 在IEEE 802.11-2020中定义的DMG操作
- 在IEEE 802.11-2020中定义的AES-GCMP
- WiFi Protected Setup
图5 P2P及其依赖的技术
P2P技术一个主要的应用场景就是Miracast,设备之间共享媒体数据,所以P2P还必须支持WMM(WiFi Multimedia),WMM是一种源自802.11e的Qos服务,主要是针对实时音视频数据的传输。
1.4.2 P2P的特殊功能和服务
P2P设备还支持以下特殊功能:
- P2P Discovery:让设备轻易快速简单地识别并连接周围其他P2P设备和服务。
- P2P Group Operation:在DMG之外运行时类似于基础BSS操作,如IEEE802.11-2020所定义。在DMG内运行时类似于PBSS操作。
- P2P Power Management:提供了一系列的功能去减少P2P设备的功率消耗。
1.4.3 P2P的两种地址
- P2P Device Address
一个P2P设备在加入P2P Group之前都是使用的Device Addr开展Discovery等工作。对于一个P2P设备而言,Device Addr是唯一的,作用等同于MAC地址。 - P2P Interface Address
而当P2P设备加入P2P Group之后,它与Group中的其他设备交互时采用的时Interface Addr。另外,由于一个设备可以加入多个P2P Group,所有在每个P2P Group中设备必须采用不同的Interface Addr。当某一个P2P Group结束之后,设备在该Group中使用的Interface Addr也随之消失。
二、P2P discovery阶段
2.1 介绍
P2P discovery阶段让P2P设备快速查找周围的其他P2P设备,并建立连接。P2P discovery主要由以下几个部分组成:
- Device Discovery,让两个设备到达相同的信道并交换彼此的设备信息(例如设备名称和设备类型)。在P2P协议规范中,Device Discovery在1,6,11信道进行。
- Service Discovery,是一个可选特性,允许P2P设备在形成连接之前发现可用的上层服务。
- Group Formation,用于确定哪台设备时GO,并形成一个新的P2P Group。
- P2P Invitation,用于调用一个存在P2P Group或者邀请一个P2P设备加入这个Group。
2.2 P2P设备Discovery过程
基本原理:P2P设备进行主动扫描从而发现附近的其他设备,设备使用probe request和probe response帧去发现彼此。P2P Group形成之后,GO会发送beacon帧去发现设备。
P2P Device不会回复probe request帧,除非它是GO或者处于Listen State。
P2P Device不会发送beacon帧,除非它是GO。
下面这张图展示了Discovery的过程:
Scan阶段:扫描阶段使用IEEE Std 802.11-2012
中定义的扫描过程。P2P设备可以在这个阶段查找其他的P2P设备或者P2P Group,并选择最佳的信道去建立P2P Group。在Scan阶段,设备扫描自己支持的所有信道(可以是Channel 1,6,11,也可以是全新到扫描)去寻找周围的其他设备。在Scan阶段的P2P设备不会回复Probe Request帧。
Listen状态:不属于P2P Group中的设备如果处于Listen状态可以被其他的设备发现。Listen状态会给定一个信道,叫Listen Channel监听信道。这是从Social Channels中选择的一个信道,2.4GHz频段中Channel 1,6,11被作为Social Channels。
Listen Channel应在设备Discovery之初选择,并应保持不变,直到P2P Discovery阶段完成。
处于Listen状态的P2P设备只能对Probe Request探测请求帧进行应答,探测请求帧包含P2P IE、P2P通配符SSID元素、一个通配符BSSID和一个目的地址(广播地址或其P2P设备地址)。
每个P2P 设备都会选择一个随机数,随机数的上限和下限分别是maxDiscoverableInterval和minDiscoverableInterval,默认情况分别为3和1。如果随机数为1,那么设备会处于Listen状态的时间为100TU,如果随机数为3,那么设备处于Listen状态的时间为3*100TU。随机数的机制主要是为了避免两个设备Listen和Search的时间同步,导致互相搜索不到彼此。
Search状态:P2P device会在social channel上发送一个或多个Probe Request帧。这些Probe Request帧包含以下信息。
- P2P IE
- WSC IE,以及Device Name,Primary Device Type和Device Password ID等。
- SSID,用来设置P2P Wildcard SSID
- BSSID