微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于蓝牙的个人局域网(PAN)的设计

基于蓝牙的个人局域网(PAN)的设计

时间:04-10 来源:21IC中国电子网 点击:

人们所携带的电子信息设备越来越多,像笔记本电脑、移动电话、PDA等已不再只是商务人员的必备工具,正逐步进入百姓的日常生活。这些信息设备的功能越来越强大,同时尺寸却越来越小,但是人们已不能仅仅满足于它们各自独立工作,而是迫切需要各种设备之间能方便地进行信息的交互。因此,在小范围内能够将个人设备互联而组成的网络---个人局域网(PAN|0">PAN)便应运而生。蓝牙|0">蓝牙(Bluetooth)作为一种小范围无线连接技术,能够在设备间实现方便快捷、灵活安全、低成本、低功耗的数据和语音通信,是目前实现无线个域网的主流技术之一。本文提出了怎样实现现有上层协议(如TCP/IP)与蓝牙协议的无缝连接;怎样实现蓝牙个人区域网的数据转发(主要集中在PAN的网桥算法上)的解决方法;最后提供了一个蓝牙个人区域网模块的完整设计方案供参考,希望对各个同行有借鉴意义。本文所提出的解决方案现已用软件实现,并投入国外市场,用户反映运行良好。

1 蓝牙PAN实现原理

蓝牙技术是一种近距离无线通信的开放性标准,其目的是单芯片、低功耗,用来代替有线电缆连接,实现短距离无线语音和数据通信。由多个蓝牙设备就可以组成一个蓝牙网络。蓝牙个人区域网PAN有两种应用模型:一种被称为组网络(Group Ad-hoc Networking,GN);另一种被称为网络访问点(Networking Access Point,NAP)。这两种实现模式分别有不同的网络结构和协议模型。下面对它们分别进行叙述。

1.1组网(GN)与网络访问点(NAP)

一个简单的组网由一个主设备和1~7个活动的从设备组成。在这一个主从网中,主设备与从设备之间的点对点或点对多点通讯在主设备的控制下进行,这个网络不需与外部网络相连。另外一种就是由一个NAP和其它蓝牙设备组成的网络。这种无线设备充当网络设备(10baseT,GSM等)之间的网桥、代理或者路由。网络访问点与Internet相连,它是其它计算机或设备与外部网络相连的中介。计算机通过网络访问点共享所有的网络资源。

1.2PAN协议栈模型

由上可见,NAP和GN是两种不同的服务。组网被设计用来允许一个或多个蓝牙设备组成一个局域网络,而网络访问点提供蓝牙设备进入Internet网络的能力。无论是NAP还是GN都必须提供与TCP/IP和其它网络协议的无缝实现。下面是关于NAP和GN在协议栈部分图示(图1和图2)。从协议栈示意图可以看出,与GN网络比较而言,NAP除了要实现数据转发之外,还必须实现网桥,能够实现网络的路由,从而能通过网络访问外部网络。

2 PAN实现要解决的问题

蓝牙个人区域网就是要用无线代替有线,用蓝牙硬件在不同设备之间建立一条虚拟的蓝牙链路,从而使现有的各种应用软件不经修改,就可以在不同蓝牙设备之间进行数据传输和数据交换。它必须解决以下问题:

(1)怎样支持IPv4和IPv6协议和其它可选协议。

(2)怎样实现GN和NAP。

(3)怎样实现蓝牙协议栈与现有网络协议如TCP/IP和PPP等网络协议无缝连接,从而通过蓝牙硬件在下层建立一条虚拟的蓝牙链路,使现有网络应用程序就像在有线网络中使用一样。

3 PAN的具体实现

3.1实现高层协议与蓝牙协议的无缝连接

要充分运用现有的各种协议,如TCP/IP协议和其它上层协议的接口,PAN网络需要在上层协议与蓝牙协议栈之间建立一条蓝牙无线链路。怎样实现现有协议与蓝牙协议的无缝连接?笔者以Windows平台为例提出了一个解决方案。

在Windows驱动程序设计构架中,现在的通讯协议(如TCP,IPX/SPX等)都是建立在Miniport Driver之上的。因此,只需实现一个Windows关于NDIS的Miniport驱动程序(图4)即可。从TCP/IP等高层协议过来的数据通过Miniport进入Dispatch Driver,然后进入个人区域网应用程序,通过应用程序进入蓝牙协议栈。当然,PAN Interface也可以在Kernel Mode层实现。通过PAN Interface,数据就可以进入蓝牙协议栈了。

3.2网桥转发算法(实现GN和NAP)

为了实现GN和NAP,就必须在GN和NAP端实现一个虚拟网桥,实现数据的转发。网桥转发算法是蓝牙个人区域网PAN实现的关键技术。根据蓝牙个人区域网的特点,笔者提出了网桥三个端口的模型,并提出了一个网桥转发算法。

3.2.1网桥转发算法基本思想

网桥在一定程度上就相当于一个集线器。在它上边可以有三种类型的端口:BNEP端口(数据转发是直接建立在BNEP[3]之上的),本地端口(服务端本身)和外部网络端口(如接入Internet)。由于一个蓝牙主设备只能连接七台蓝牙从设备,所以网桥的BNEP端口最多能有七个;本地端口表示的就是提供服务设备自己,它只有一个;如果本设备支持NAP,那么将会注册一个外部网络端口。可见,一个网桥最多有九个端口,它的主要功能就是根据相应的网桥转发算法,把数据从一个蓝牙设备转发到其它的蓝牙设备或者外部网络,从而实现在不同设备间(GN)或者和外部网络(NAP)通信的目的。在每一个BNEP端口设置一个自学习标志位来标志来自这个端口的数据包的源地址和目的地址是否已经被记忆下来,这样就没必要每次都去查找来自这个端口的每一个数据包的源地址或目的地址。如果要转发的数据包不是来自内部网络,并且在端口列表中没有找到目标端口,则默认为被转发到外部网络,如果没有外部网络端口,则丢弃该包。另外,在每一个端口还有一个包过滤器,它可以过滤掉某些类型的网络包和来自或发往某地址范围段的网络包。

3.2.2算法具体步骤

(1)有数据包到达网桥,该数据包可能来自本地设备、其它蓝牙设备或外部网络(如果实现了NAP)。
(2)从包头中取得该数据包得源地址,检查该数据包的是否来自外部网络。若是,则检查数据包的源端口是否自学习的;若不是,则记下该数据包的源地址并设置自学习标志位为TRUE。
(3)从包头中取得该数据包的类型。如果它是EARP/ERARP类型数据包,则把它作为广播包,并对除源端口外的每一个端口进行广播,然后转到(8)。
(4)如果它是IPv4,IPv6或者其它类型的数据包,则检查所记忆的目标端口是否是一个有效端口。如果所记忆的目标端口有效,则把所记忆的目标端口作为该数据包要转发的目标端口

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top