BLE IPSP&Zephyr示例

本文简单介绍BLE IPSP,并示例在Zephyr下两个BLE device通过IPSP连接并互ping。

IPSP简介 链接到标题

Internet Protocol Service Profile, 支持IPSP的设备彼此发现和通信,该Profile在BLE Stack中的定于如下: ipsp

角色 链接到标题

IPSP有两个角色:

  • Node: 用于组织和消费ipv6包,提供IPSS (Internet Protocol Support Service),才能被router发现。
  • Router: 用于router ipv6包 Node一般作为传感器节点。Router角色一般作为设备接入点,例如边界路由器,收集各个Node的数据。 一个device可以同时拥有Node和Router两个角色。

Node角色需求 链接到标题

  • IPSS: IP Support Service(属于GATT service)用于服务发现。UUID 0x1820
  • L2CAP: 用于传输6LoWPAN数据包(MTU>=1280)

Router角色需求 链接到标题

  • L2CAP: 用于传输6LoWPAN数据包(MTU>=1280)

IETF RFC7668 链接到标题

IPSP规范发布之后,IETF(Internet Engineering Task Force,互联网工程任务组)发布“IPv6 over BLUETOOTH(R) Low Energy”的RFC7668标准,该详细规定了基于蓝牙BLE的IPv6组网方式。

协议栈 链接到标题

下图说明ipv6 stack和ble l2cap之上的gatt stack如何并行工作。gatt提供支持网络互联节点的发现服务(IPSP),在L2CAP之上,依次是6LoWPAN、IPv6、UDP、TCP等网络协议栈用于网络传输。 stack

BLE网络 链接到标题

下图说明BLE网络为星型网, 6LoWPAN Node(6LN)节点都直接和6LoWPAN Border router(6LBR)相连. con2

BLE网络连接到互联网 链接到标题

下图说明BLE网络如何连接到互联网,BLE网络通过6LBR边界路由接入到互联网,让BLE可以通过ipv6直接访问互联网 con1

Zephyr示例 链接到标题

硬件 链接到标题

两片nrf52_moderate-CoreBoard

软件编译 链接到标题

node 链接到标题

使用sample/net/echo_server进行编译,并烧写到CoreBoard#1

cd ~/work/project/nrf52_moderate/apps/echo_server
mkdir build
cd build
cmake -DBOARD=nrf52_moderate -DBOARD_ROOT=/home/frank/work/project/nrf52_moderate -DCONF_FILE="prj.conf overlay-bt.prj" ..
make flash

router 链接到标题

使用sample/net/echo_server进行编译,并烧写到CoreBoard#2

cd ~/work/project/nrf52_moderate/apps/echo_client
mkdir build
cd build
cmake -DBOARD=nrf52_moderate -DBOARD_ROOT=/home/frank/work/project/nrf52_moderate -DCONF_FILE="prj.conf overlay-bt.prj" ..
make flash

如果有兴趣可以去关注一下echo_server和echo_client的overlay-bt.prj, server(node)只会比client(router)多一项CONFIG_NET_CONFIG_BT_NODE=y, 这里也可以应证前面角色需求的内容

运行 链接到标题

如下图 sample 说明: Router是CoreBoard#2连接的是ttyCAM0, Node是CoreBoard#1连接的是ttyCAM1

  1. 启动Router和Node,在ttyCAM0中找到Router的BLE地址为*[e9:45:ec:29:65:db]*
  2. 使用Node连接Router, 在ttyCAM1中执行net_bt connect e9:45:ec:29:65:db
  3. 连接完成后使用net iface命令查看Node的ipv6地址为*[2001:db8::3], Router地址[2001:db8::1]*
  4. 相互ping,执行命令net ping 2001:db8::3 可以看到对方都有回复信息Received echo reply from 2001:db8::3 to 2001:db8::1

关于zephyr ipsp 链接到标题

目前在zephyr上将两个device都配置为node+router,无法进行net_bt connect。尚未调查到是zephyr不支持node+router双角色,还是配置有问题。

参考 链接到标题

https://tools.ietf.org/html/rfc7668 https://www.bluetooth.com/specifications/gatt