英语原文共 5 页
Linux中IEEE 1609 WAVE/DSRC栈的实现
摘要
专用短程通信(DSRC)是一种无线通信标准,旨在用于车辆和基础设施之间的高速安全通信。为了克服车辆环境所带来的诸如高移动性等限制,IEEE发布了被广泛称为车载环境无线接入(WAVE)的802.11p修正案。到目前为止大多数WAVE协议栈的实现和研究都是基于模拟器的,而本文主要研究在基于Linux的系统上实现IEEE 1609 WAVE / DSRC协议栈,该系统构成了车载通信的支柱。本文深入探讨了Linux内核中为了满足车辆通信的需要而必须进行的更改和新模块的开发。我们还简要讨论了在此过程中所面临的各种挑战和设计决策。最后,我们通过将我们开发的协议栈与商业上可用的协议栈在包丢失方面的性能进行比较来得出结论。
关键词:IEEE 1609.x, IEEE 802.11p, 车辆通信, WAVE, DSRC, V2V, V2I
介绍
近年来,随着V2V安全通信标准的引入,车辆安全应用迈出了重要的一步,以应对车辆环境所带来的各种挑战。考虑到高移动性环境中网络的动态特性,对当前的无线技术进行了修订。2010年,IEEE发布了802.11p修改方案6,即众所周知的车辆环境无线接入(WAVE)[1]。它定义了允许IEEE 802.11在高速无线电环境中使用的机制,这种环境通常用于行驶中的汽车。
本文的其余部分组织如下:第二节和第三节分别对DSRC技术和WAVE stack进行了概述;第四部分揭示了工作背后的动机;在第五节中对开发环境进行了描述;第六节讨论在Linux中开发所提议的WAVE堆栈所遵循的方法;第七节揭示了我们的实验方法,并阐明了所进行的实验的结果。
专用短程通信(DSRC)概述
DSRC已在美国、欧盟、日本等国家标准化。美国和欧盟使用同一频段(5.850-5.925 GHz),但信道定义不同,日本DSRC的频谱是5.77-5.850。本文关注的是美国的DSRC标准。
处于5.850-5.925之间的75 MHz频段是一个免费但特定的频段,仅用于V2V和V2I通信[2]。与其他无线频段一样,WiFi、蓝牙等设备可以自由共存,不受任何限制,但不允许使用其他无线技术。无线电必须在符合DSRC标准规定的规范信道使用,这提供了多方面的优势,例如没有与其他无线信号的竞争,避免频带拥挤以及可以预测特定通道上的确定数据。安全关键数据可以在专用通道上通信,非安全数据可以通过其他通道传输,这消除了对流量优先级的需要。
图1 短距离微波频谱
车载环境下的无线接入(WAVE)协议栈
图2给出了包含不同层的WAVE协议栈的结构。IEEE 802.11p详细描述了PHY层的实现,并标注了堆栈驻留的基础。它可以细分为WAVE PHY和WAVE Lower MAC两部分。IEEE 802.11p PHY是对IEEE 802.11a PHY的扩展,它指定了DSRC频段操作所需的最小变化。它基于与IEEE 802.11a相同的OFDM方案,但是它工作在10Mhz的频率,而不是20Mhz,是通过将OFDM定时参数加倍来实现的。DSRC共有7个通道,其中6个SCH(服务通道)和1个CCH(控制通道)。图1展现了各种用途的信道分配情况。
IEEE 1609.4[3]负责不同消息的多通道操作和优先级排序。IEEE 1609.3[4]描述了对WAVE的网络支持,并提供了一个低开销的WAVE短消息协议(WSMP)。IEEE 1609.2了提供必要的安全服务。
图2 WAVE协议栈
在接下来的部分中,我们将简要介绍实现细节,首先从底层开始,然后上升到协议栈,同时还将论述将其整合到Linux系统所必要的修改内容。
应用前景
到目前为止,还没有可供V2V和V2I应用程序开发人员直接使用的WAVE stack开源实现,这一领域的研究成果较为细碎。目前,商业上可用的硬件和软件都很昂贵,也无法提供灵活定制。
开发环境
本文将WAVE协议栈构建在Linux操作系统之上。选择Linux的主要原因是它的灵活性、开放源码的特性、广泛的接受度、优秀的文档、健壮的网络等等。它包含各种802.11无线驱动程序的开源实现。我们调查了各种可以适配802.11p修改方案的WiFi芯片组和模块,选定了Atheros WiFi芯片组在当前开发中使用。Linux无线社区已经为Atheros开源驱动程序提供了各种补丁,可以对它们进行性能调优。
大多数无线芯片组都有相应的固件,这些固件负责模块的功能,包括MAC层管理等。针对我们的开发目的,选择一个可修改状态而无需接触底层固件的WiFi模块是必要的。Atheros WiFi模块不需要在芯片组上加载固件(基于ath5k和ath9k驱动),MAC层和其他初始化完全包含在Linux无线内核模块和相关驱动程序中管理,这种就被称为softmac设备。这使我们可以仅通过更改Linux系统级别的代码来修改这些模块的行为,并消除对WiFi OEM供应商的依赖。
DSRC信道工作在5.850 GHz到5.925 GHz的频段内,而大多数WiFi卡的频段有限,不超过5.850 GHz,所以我们需要一个支持DSRC频段的模块。SparkLAN wpa-128n(802.11a/b/g/n双频半迷你卡)基于Atheros AR9380-AL1A芯片组,可识别及配置为DSRC工作频率,同时按照需求对Linux中开源的Atheros ath9k驱动程序进行了修改。选定了Gateworks Ventana GW5400单板计算机[8]作为开发平台,GW5400基于飞思卡尔i.MX6四核Cortex-A9 SoC处理器,1GHz主频, 1Gbyte DDR3-1066 内存, 256m 系统闪存,6个迷你pcie插座,支持802.11abgn无线通信、4G WiMAX无线通信、3G CDMA/GSM蜂窝调制解调器和其他PCI Express外设的任意组合,采用Ublox LEA-6S-0000 GPS以获取5hz和PPS信号下的GPS数据。
研究方法
6.1 了解Linux无线网络子系统
Linux上的802.11子系统主要由wpa_suplicant、hostapd、nl80211、cfg80211、mac80211和驱动程序组成。wpa_supplicant用于验证客户端站点和控制漫游。hostapd是一个用户空间守护进程,它有助于创建无线接入点(WAP)和身份验证服务器。nl80211是一个用于80211的netlink接口。cfg80211是一个配置API, mac80211是Linux内核中用于实现softmac驱动程序[9]的框架。为了进一步深入,对所有这些关键组成部分的深刻理解是非常必要的。
6.2 WAVE和802.11的不同
WAVE设备在BSS(OCB)环境之外运行,这些设备不需要关联/认证,因为两个车辆之间的有效交互时间非常小。要合并OCB模式,必须在无线堆栈中进行更改,从驱动程序开始,到mac80211、cfg80211,最后甚至到iw等用户空间应用程序。内核模块使用cfg80211接口通过导出的内核函数在OCB和其他模式之间进行切换,用户也可以使用iw工具来改变模式。
6.3 监管基础设备
可用的无线信道因国而异。为了确保访问适当的信道和传输功率,需要在无线堆栈中设置正确的监管域。Linux内核提供了一种监管执行机制来实现各种监管策略[11],它还提供了一组应用程序来更改到适当的管理域。Linux中的监管基础设施由cfg80211、一个监管数据库(无线regdb)和CRDA组成。除了驱动程序和硬件提供的限制/定制监管解决方案之外,监管基础设施还可以解决全球监管规则的变化。监管数据库(wireless-regdb)在用户空间维护,包含各个国家/地区的许可,CRDA用户空间代理将监管域上载到内核[9]。
图3 Linux监管基础设施
一些无线模块内置了存储在其内部EEPROM上的管理权限。Linux规范作为这些规范权限之上的额外一层而运行。图3显示了Linux的监管基础结构。
为了启用DSRC通道,将对特定国家的无线管理数据库进行更改。用户需要指定所需的带宽、这些通道上的最大传输功率,并使用必要的安全密钥重新编译数据库。稍后,使用用于编译规范数据库的相同键重新编译CRDA。一旦这些更改被合并,用户空间应用程序就可以请求内核更改管理域。
6.4不同协议层的变更
6.4.1 PHY层:IEEE 802.11p
通过更新ath9k驱动中的OFDM定时参数,将通道带宽从20 MHz修改为10 MHz,因为它负责初始化模块。DSRC通道(CCH和SCH)是在驱动程序和用户管理中定义的。
6.4.2 MAC层:IEEE 1609.4
我们开发了一个支持多通道操作和通道路由的内核模块。该模块还支持由IEEE 1609.4定义的信道协调,其中设备在CCH和SCH间隔之间切换[3]。
CCH和SCH间隔保持每50ms交替一次。对于要通信的两个设备,它们应该在相同的信道和各自的信道间隔中。但是,当一个设备启动时,它如何知道它应该将自己放在哪个间隔中呢?这就是脉冲每秒(PPS)的作用。DSRC标准定义在每个PPS的开头,间隔是CCH间隔[3]。因此,一旦设备启动,它等待下一个PPS到达,并且在它到达时,设备立即将自己置于CCH间隔中,并相应地启动切换过程。Linux内核代码被修改为包含ps-gpio通知链,1609.4内核模块使用该通知实现多通道同步。此外,我们还采用了一种使用内核hr定时器的备份方法来处理GPS在短时间内丢失PPS的情况。根据标准,还为CCH和SCH通道引入了两个单独的消息队列。内核模块还提供了Sys调试界面,使用户可以灵活地在各种模式之间切换。
在实现1609.4时,我们面临的主要挑战是优化CCH和SCH之间的通道切换时间,以实现同步。DSRC标准规定在保护频带内应该进行信道切换,即4ms,在此期间不允许无线电传输数据。最初平均切换时间约为8ms,后来通过分析在Linux内核中切换通道时执行的操作流,将其降低到4ms以下。没有直接的方法可以通过配置接口更改通道。为了改变通道,我们必须离开当前模式,切换到各自的通道,然后重新加入OCB模式,这是一个耗时的过程。为了缩短通道切换时间,我们将ath9k驱动配置为默认使用fastcc模式,将mac80211修改为跳过对站信息的刷新,最后在模式(OCB) leave函数中绕过了部分内核代码,这涉及到驱动层。驱动层被绕过,因为它在离开OCB时执行通道设置,而OCB不是必需的。因此,如果接口类型是OCB,我们只是从mac80211层返回,而不是一直深入到驱动层。
6.4.3 网络和传输层:IEEE 1609.3
在大多数车载环境应用中,数据包是广播的,是单跳的。所以为了支持高优先级通信[4],我们引入了波短消息协议(WSMP)。我们实现了一个内核模块来将WSMP协议与对传统套接字接口的支持合并到Linux内核中。此外,该模块还负责提供网络管理服务,如处理来自更高层次的服务请求、通道分配、创建WAVE服务公告(WSA),以及维护管理信息库(MIB)。
系统中可以注册多个具有不同通道需求和优先级的应用程序,这就需要一个运行优先级最高的应用程序的仲裁算法。优先级较低但通道要求相同的应用程序也可以并行运行。这个仲裁过程是由管理实体在内核级执行的,其中关于已注册应用程序的所有信息都在散列表中可用。在从用户空间启动应用程序时,可以将应用程序的通道和服务优先级作为命令行参数提供。
我们构建了一个用户空间库libwave,它为WAVE应用程序提供了一个高级接口,可以通过通用的netlink套接字与1609.3模块进行通信。它提供了应用程序注册、取消注册、发送和接收的功能。
6.4.4 安全层:IEEE 1609.2
车辆环境在通过连接实现广泛的安全和信息娱乐应用的同时,也会招致安全攻击。为了保护安全关键信息不受窃听、欺骗、篡改和重放攻击,IEEE建立了1609.2工作组以开发为WAVE设备提供安全服务的标准。IEEE 1609.2通过数字签名和加密技术为WAVE管理和应用程序消息定义了身份验证技术,用于向已知的接收方[5]发送机密消息。
标准将安全服务分为处理功能和管理功能。处理功能提供安全数据和WSA通信,而管理功能提供密钥和证书维护。该标准用于提供安全服务的加密机制,包括椭圆曲线数字签名算法(ECDSA)、椭圆曲线集成加密方案(ECIES)、具有密码块链接消息认证码(CCM)模式的计数器模式中的高级加密标准(AES)和 SHA-256哈希算法。
基于灵活性的需求,我们对WAVE栈的安全组件的实现进行了模块化开发,由安全层、安全层接口和库接口模块组成。各模块之间的相互作用和各自的功能如图4所示。
图4 安全层组件
如图4所示的安全层模块负责提供1609.2标准定义的服务,这些服务包括通过执行签名和/或加密将不安全数据转换为安全数据,在接收时处理安全数据,即解密和验证数据,管理作为私钥的密码材料,公钥和证书,甚至在需要时生成证书请求。需要理解的是,当模块转换不安全数据或处理安全数据时,它还会确定证书链的一致性,并通过引用撤销列表检查所涉及的证书的有效性。消息
资料编号:[4876]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。