面向快速切换和可靠组播的WLAN 传输系统

2022-06-29 06:08刘轶峰曾学文
电子设计工程 2022年12期
关键词:网关时延边缘

刘轶峰,曾学文,韩 锐,孙 鹏

(1.中国科学院声学研究所国家网络新媒体工程技术研究中心,北京 100190;2.中国科学院大学,北京 100049)

视频流量以及移动设备的激增使无线环境下切换和组播场景日益增多。IEEE 802.11 无线局域网(Wireless Local Area Network,WLAN)[1-2]为用户提供了广泛的互联网接入方式[3-4],但却难以满足特定场景的需求[5]。在切换方面,现有的无线切换延迟较大[6]。在组播方面,无线组播机制存在不可靠、效率低的问题[7-8],难以满足高质量业务的需求[9]。在现有方案中,将组播转成单播的方式[10]会浪费过多带宽;显式反馈与重传的方式[11-12]会导致反馈开销大、丢包恢复时间长。而前向纠错编码(Forward Error Correction,FEC)[13-14]难以有效应对无线环境中的突发丢包。

针对这些问题,该文设计并实现了一个集中控制的WLAN 传输系统。在切换方面,系统采用基于网络侧的切换方式,极大地减少了切换时延。在组播方面,系统采取喷泉码[15-16]与NACK(Negative Acknowledgement)结合的方式,提供了高效可靠的无线组播服务。

1 系统设计

1.1 系统总体架构

图1 是系统总体架构图。整个系统工作于网络边缘来支持无线切换和无线组播。系统包含边缘网关、无线接入(Access Point,AP)以及终端3 种设备。其中,边缘网关是控制平面和数据平面的物理载体。一方面,边缘网关是数据平面的路由转发设备,负责对报文进行路由转发,并能改变组播报文的协议格式来支持基于应用层喷泉码的无线组播;另一方面,边缘网关作为所有AP 的接入控制器(Access Control,AC),能够对所有AP 以及关联的无线终端进行有效管理,从而对无线快速切换提供支持。系统中的AP 不仅转发流量,还负责抽象无线资源以及关联终端的上下文信息,并通告给边缘网关。

图1 系统总体架构图

1.2 AP实现方案

AP架构如图2所示,其主要包含3个模块:配置模块、MLME(Mac Layer Management Entity)模块以及组播模块。为了加速信令处理,避免用户态与内核态的频繁切换,3 个模块均工作于Linux 内核空间,并通过与Linux内核无线子系统(cfg80211和mac80211)进行交互,来控制无线网卡的行为。

图2 基于Linux内核的AP架构

从图中可以看出,AP 是一个二层转发设备,使用Openvswich(OVS)将工作于AP 模式的无线接口wlan0 与以太网接口eth0 进行桥接,并通过设置流表对控制信令流和数据流进行正确转发。

为了让AP 模块能与边缘网关进行通信,首先在内核中创建了一个虚拟网络接口wconf,并将其桥接至OVS。wconf 作为AP 模块与以太网的纽带,连接了3 个模块与边缘网关。当模块往边缘网关发送报文时,报文的入口将会被设置为wconf(即skb->dev=wconf),OVS 可以通过这个信息来识别从模块发往边缘网关的控制信令。对于从边缘网关发往AP 模块的数据包,OVS 会将其转发至wconf 接口,而后者充当了一个消息调度器。在wconf 接口的驱动发送函数ndo_start_xmit 中,对数据包进行解析,并将它发送给对应的模块进行进一步处理。

为了实现上述双向通信流程,OVS 利用如下流表项对控制信令进行正确转发:

1)nw_dst=localhost,nw_proto=17,udp_dst=8080,actions=output:wconf

2)in_port=wconf,nw_dst=边缘网关IP,nw_proto=17,udp_dst=8080,actions=output:eth0

从第一条流表可以看出,边缘网关发往AP(目的端口为8080)的UDP 包均从wconf 端口直接转发至内核模块进行处理。从内核模块发往边缘网关(目的端口为8080)的UDP 包会根据第二条流表直接从eth0 端口快速转出。

配置模块直接与cfg80211 子系统进行交互,通过调用后者的接口来获取无线网卡的参数。另一方面,配置模块负责响应边缘网关发来的控制信令,对无线参数进行设置,例如BSS 设置、信道和带宽设置、Beacon 帧以及ProbeResponse 帧设置、安全密钥的设置等。每经过一段时间或者边缘网关询问时,配置模块会将运行时的参数上报给边缘网关。

MLME 模块负责终端接入的流程,包括认证/去认证、关联/去关联等。一方面,该模块通过一个监听接口mon0 接收来自终端的IEEE802.11 管理帧。在Linux 内核中,mac80211 子系统会复制每个收到的802.11 帧,并调用netif_receive_skb 函数将副本传递给每个无线监听端口。因此,为了能收到这些帧,MLME 模块在内核二层协议链表ptype_base 上注册了一个处理函数,用于接收ETH_P_802_2(LLC)种类的以太网帧,并筛选出发向自身(IEEE 802.11 首部DA 字段等于AP 的BSSID)的管理帧然后进行处理。另一方面,MLME 模块通过调用cfg80211 的接口发送IEEE 802.11 管理帧来响应终端的接入请求。在与终端接入交互的流程完成后,MLME 模块会对终端的连接与安全上下文进行组织,并将其同步至边缘网关。终端的连接与安全上下文是AP 与终端建立连接的必要信息,是无线快速切换的基础。

组播模块负责对组播包进行转发。由于工作于AP 模式的网络接口wlan0 在发送组播包时通常会选择一个很低的IEEE 802.11 物理层速率,从而导致无线网络中组播帧的发送速率很低。因此,在OVS 中设置如下流表项:

该流表项会将具有组播目的MAC 的IPv4 或者IPv6 包转发至组播模块。后者负责将以太网组播包转化为IEEE 802.11 组播帧,并在帧的前面添加Radiotap 首部。Radiotap 首部允许用户指定该IEEE802.11 帧的发送方式。之后,组播模块调用内核dev_queue_xmit 函数将帧发送给监听端口mon0,后者的驱动负责解析Radiotap 首部,并根据首部信息发送IEEE 802.11帧。这里,在每个组播帧的Radiotap首部中指定一个较高的MCS(Modulation and Coding Scheme)以此来提升组播帧的IEEE 802.11 物理层的发送速率。

1.3 边缘网关架构

边缘网关架构图如图3 所示。从图中可以看出,边缘网关主要实现了5 个模块,分别是关联认证模块、终端管理模块、AP 管理模块、切换管理模块以及组播编码控制模块。其中AP 管理模块、终端管理模块以及关联认证模块利用控制信令与AP、终端进行交互,不仅实现了AP 作为无线接入设备的基本功能,而且能够对所有无线设备进行管理。切换管理模块负责终端的快速切换。组播编码控制模块截取上游传来的组播包,并利用喷泉码对组播包进行编码处理,然后发送给相应的AP。如前所述,后者会将组播包经由AP 上的组播模块发送给终端。另外,边缘网关对上下行的单播流量做正常的路由转发。

图3 边缘网关架构图

2 系统关键功能

2.1 无线快速切换

为了尽可能减少媒介中断,采取了一种基于网络侧的快速切换方法,即在网络侧维护并同步终端的连接与安全上下文信息,并引导终端进行AP切换。

每个关联的终端都有一个连接与安全上下文,该上下文信息是终端首次接入AP 时与AP 进行握手交互产生的,它记录着终端的无线参数与能力。在IEEE 802.11 网络中,连接与安全上下文是AP 与一个终端进行通信的必要信息,主要包括如下信息:终端的MAC 地址、支持的速率、侦听间隔、支持的信道、HT &VHT 能力(包括20/40 MHz 带宽下的short GI、A-MPDU/A-MSDU 聚合参数、HT/VHT 支持的信道带宽等)、网卡能力(包括short preamble、short slot time、automatic power save 等)、关联ID、安全参数(包括TKIP 的IV/PN、CCMP 密钥、cipher suite selector)

连接与安全上下文信息由边缘网关进行管理,当终端需要切换到另一个AP 时,边缘网关会预先将其连接与安全上下文信息迁移至目标AP 上,然后引导终端快速切换到目标AP 并进行通信连接。这种切换引导依赖于IEEE 802.11h 协议定义的带有CSA(Channel Switch Announcement)元 素 的Action 帧。图4 是Action 帧的格式,除了一个标准的IEEE 802.11 首部之外,最重要的就是CSA 元素,其中New Channel 字段表明了终端切换的目标信道;Channel Switch Count 代表终端收到多少个Beacon 帧之后执行切换。当终端收到一个CSA 帧后,它会立即切换到指定的信道上,并且与该信道上具有相同BSSID和SSID 的AP 建立通信链路。

图4 带有CSA元素的Action帧

当终端收到一个带有CSA 元素的Action 帧后,会切换信道,并与目标信道的具有相同BSSID 的AP直接进行关联。这是因为该终端的连接与安全上下文信息已经预先迁移至目标AP 上了。这种切换方式不会改变终端IP 层信息,因此为了切换后能直接进行通信,需保证切换前后终端的默认网关一致。这样,上下文迁移配合引导的切换方式避免了传统切换复杂的握手交互,从而能减少切换时媒介中断的时延。

切换触发的条件基于一个预设的阈值(通常设为-70 dBm)。当前关联AP 的接收信号强度指示RSSI(Received Signal Strength Indication)低于此阈值时,终端会执行扫描程序来获取不同信道AP 的RSSI,并通过关联的AP 报告给边缘网关,用于决策。边缘网关发起切换时,会选择一个最合适的目标AP(例如,RSSI 最大的AP),并将终端的上下文信息迁移至目标AP,然后向终端发送一个带CSA 元素的Action 帧,引导其切换到目标AP 的信道,从而建立新路径。具体的快速切换流程如图5 所示。

图5 无线快速切换流程

2.2 无线组播

该小节主要说明边缘网关上组播编码控制模块如何对下行组播流量进行处理,从而提升无线组播传输的可靠性。

考虑到无线组播场景不适合过多的反馈,系统采用了一种应用层前向纠错编码(Application Layer Forward Error Correction,AL-FEC)与NACK 结合的方式来对抗无线组播传输过程中的丢包。其中,AL-FEC 是基于一种高效的数字喷泉码——wirehair来实现的。它具有近似线性的编解码计算复杂度,且利用了单指令多数据流(Single Instruction Multiple Data,SIMD)指令集进行加速运算。作为一种系统分组码,wirehair 以源块作为编码单位,每个源块(包含k个源符号)可以编码产生任意多个编码符号(所有编码符号组成编码块)。其中,前k个编码符号就是k个源符号(为了区分,将k个以外的编码符号称为冗余符号)。当接收端收到任意k(或者略大于k)个编码符号时,它就能以非常高的概率恢复出k个源符号。

喷泉码通常与ACK 反馈相结合,即发送端需要接收端在成功恢复源块后显式地反馈一个ACK 来通知编码器停止编码发送。在无线组播场景中,当成员较多时,这种方式会带来过多的反馈开销,不利于系统扩展。因此,采取了NACK 的方式,即编码器先主动发送一定数量的冗余符号,如果成员未成功恢复源块则反馈一个NACK。边缘网关依据NACK来调用对应源块的编码器继续发送一定量新的冗余符号。

图6 是每个编码符号携带的编码信息。在系统中,它与编码后的数据一起作为UDP 的载荷以组播的方式发送给所有成员。SBN(Source Block Number)表示源块的编号;ESI(Encoded Symbol ID)表示编码符号在编码块中的编号,每个编码块中的编码符号的ESI 按照其发送的顺序递增。k代表该编码块中源符号的个数;S代表每个编码符号(或源符号)的大小。mSBN 表示正在首次进行编码发送的源块中最小的SBN,接收端观测收到的每个编码符号的mSBN来判断某个源块是否已经编码发送完毕,并决定是否反馈NACK。

图6 编码符号携带的编码信息

由于系统码属性,wirehair 前k个编码符号就是k个源符号。边缘网关中的编码模块并不会对原始组播流量的转发带来延时,因为编码模块仅仅设置每个输入的源符号携带的编码信息,复制该源符号,然后将其直接发送。每隔一段时间t,编码模块将复制的k个源符号组成源块,创建一个编码器(预编码)并以速率r编码发送k′-k个冗余符号。这样每个编码块中,冗余符号跟在源符号后面发送。每个编码器负责一个源块的编码,而根据k、k′和r的设置,相邻的几个源码对应的编码符号可能交织在一起发送。引入几个可配置的系统参数,并根据二项分布公式来确定k′的值:k′=g(w,k+2,σ)=min。μ是一个概率值,通常设为99.99%。σ是一个预设的丢包率。理论上,如果将每个编码符号的接收看作服从独立且相同的二点分布,那么k′表示能以大于99.99%的概率收到k+2 个编码符号。2 代表wirehair 的译码开销。在给定μ以及k时,σ控制着每个编码块中冗余符号的数目,σ越大,冗余符号数越多,对抗丢包能力越好,但需要的额外带宽也会更多。

按时间t分割源块而非数量可以更好地控制时延。但是,在发送每个编码块中的源符号时,无法知道源块中源符号的个数(k),因此将源符号的K设置为0。组播组成员每收到一个编码符号,会根据其K字段来决定如何处理。如果K等于0(说明是源符号),则按SBN 暂时缓存该源符号;如果K不等于0(说明是冗余符号),则检查是否有对应的解码器,如果没有,则创建一个解码器负责该源块的解码恢复,并将缓存的所有对应的源符号和该冗余符号输入解码器。如果已经有对应的解码器,则将该冗余符号输入解码器即可。与编码类似,一个解码器负责一个源块的恢复。一旦解码器收到足够的编码符号,则恢复所有源符号,交付给上层应用然后关闭。

另一方面,每个解码器都有一个生命周期,当达到最大生命周期时,解码器会将已经恢复的源符号交付,然后直接关闭。如前所述,接收端会观测接收到的每个编码符号的mSBN 字段,每当mSBN 发生变化,如果存在解码器,其负责的SBN 小于mSBN,那么接收端单播的UDP 连接反馈一个NACK 消息给边缘网关。NACK 消息中包含该源块的SBN 以及收到的编码符号数m。边缘网关在接收到NACK 后,会根据SBN 调用对应的编码器继续以速率r组播发送g(w,k-m+2,σ)个冗余符号。如果收到来自不同组播组成员对相同源块的NACK,那么发出的冗余符号数目由接收情况最差的成员确定。

3 应用实例与结果分析

3.1 无线切换实验

利用ping 工具每隔10 ms 发送一次ICMP 请求报文,通过记录对端丢失的ICMP 请求报文数目来估计切换时延。图7 是无线切换时延的对比情况。可以看出,传统无线切换的时延在250 ms 左右,而系统提出的快速切换的时延基本少于50 ms。这是因为系统在AP 间同步终端的连接与安全上下文信息,并利用Action 帧对终端切换进行引导,这种方式大大减少了传统切换时信令交互带来的时延。

图7 无线切换时延对比

3.2 无线组播实验

测试了系统传输8 Mbps 组播业务流量的情况。边缘网关的组播编码控制模块每隔50 ms 划分一个源块(t=50 ms),并创建一个新的编码器对源块进行编码,以8 Mbps的速率(r=8 Mbps)输出冗余符号。图8显示了传输过程中AP 上行和下行流量的实时吞吐,可以看出系统利用不到16 Mbps 的下行带宽来传输8 Mbps 的组播业务,其中大约7 Mbps 的额外带宽消耗用于传输编码冗余。AP 的上行流量很小(小于100 kbps),这是因为喷泉码成功恢复了大部分丢包,只有少量的NACK 消息返回给控制器。

图8 AP上行和下行流量的实时吞吐

表1 显示了传输过程中,各个组播成员的信息与接收情况,包括信号强度、平均丢包率、源块的平均交付时延、能直接恢复的源块的比例以及须通过NACK 机制才能恢复的源块的比例。在传输时,成员#1、#3、#5 受到了突发的无线干扰,首次发送的编码冗余很难对丢包进行直接恢复。因此,它们通过NACK 机制请求边缘网关发送的新的冗余符号来进行恢复。虽然NACK 机制一定程度上增加了源块的交付时延,但是却能有效地提升无线媒介上的传输可靠性。

表1 每个成员的信息和接收情况

表2 是不同无线组播方案的主要性能对比。主要性能包括带宽消耗、每个包的平均交付时延、可靠性(被所有成员成功接收的包的比例)以及反馈开销。测试了不同方案对10 个终端传输3 Mbps 组播流量的情况,每个组播包大小为768 B。其中,ILM(Improved Legacy Multicast)表示以满足组播流量带宽的最低的MCS 进行组播传输;DMS(Direct Multicast Service)将组播流量转化为单播流量分别发送给每个成员;BACK 表示块确认机制。每当边缘网关发送完成一个块,成员如果未能完全接受则返回一个NACK 请求重传。该文方案中,每隔50 ms 划分一次源块(t=50 ms),编码器输出速率r=3 Mbps。

表2 不同方案主要性能对比

从实验结果可以看出,ILM 由于缺少包级别的纠错机制,传输可靠性很低(90.2%),难以满足高质量业务需求。DMS 将组播转化为了单播,充分利用了单播的速率自适应机制和ARQ 机制。虽然这种方式达到了很高的可靠性(99.9%),但消耗了过多带宽(31.7 Mbps)。而且组播成员越多,带宽消耗就越大,不利于系统的扩展。BACK 采用显式反馈请求重传的方式来保证可靠性。虽然能使可靠性达到98.3%,但是包的平均交付时延较大,反馈开销较多(156 个/秒)。而且随着成员增多,反馈开销也会增多,容易产生反馈风暴。该文方案通过先主动发送一部分编码冗余来对抗丢包,这消耗了额外的带宽。但是相比于ILM,该文方案使得组播传输的可靠性达到了单播水平;因为喷泉码能够有效地恢复大部分丢包,所以相比于BACK,该文方案有效地降低了包交付的时延,且大大减少了反馈开销。

4 结论

该文设计并实现了一种集中控制的WLAN 传输系统。系统通过采取基于网络侧的快速切换机制以及基于喷泉码和NACK 的无线组播方案,为用户提供了低时延的无线切换服务以及可靠高效的无线组播服务,具有广泛的应用场景。

猜你喜欢
网关时延边缘
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
计算机网络总时延公式的探讨
计算机网络总时延公式的探讨
一种主从冗余网关的故障模式分析与处理
基于物联网的IT运维可视化管理系统设计与实现
《舍不得星星》特辑:摘颗星星给你呀
一张图看懂边缘计算
在边缘寻找自我