藍芽協議分析4 IPv6 Over BLE介紹

2021-07-24 00:10:34 字數 3417 閱讀 5565

**

1. 前言

藍芽是個奇葩的傢伙:它總是以後來者的身份出現,很喜歡打仗,而且還不落下風(有點像某訊的風格)。90年代末期和wi-fi的無線標準之爭如此,當前和802.15.4系(zigbee、rf4ce、thread等)的iot之爭,也如此。

90年代末期,藍芽剛出道的時候,就曾叫囂著把wi-fi(802.11)從地球上抹去。反過來,2023年wi-fi 802.11b標準發布後,也宣稱會把藍芽乾掉。最終,二者劃江而治,瓜分了天下,wi-fi佔據了家庭和辦公室中的電腦網路,而藍芽成為了廣受歡迎的電腦和外設之間的連通性工具。

與此同時,在iot的戰場上,以zigbee(2023年)為代表的802.15.4技術,苦心經營近15年,依舊不慍不火、默默無聞,而藍芽ble技術問世(2023年)至今,短短5年左右的時間,已經紅遍大江南北,裝機量爆棚。於是,硝煙再起。

標準之爭,不是本文的議題,我們要思考的問題是:藍芽有何長處,可以支撐它四處征戰?答案是「靈活性」。本文將以用於支援ipv6的ipsp(internet protocol service profile)為例,說明這個特性。

2. ipsp(internet protocol service profile)

我們知道,zigbee等基於802.15.4標準衍生出的無線標準,有4大殺手鐗:低功耗、低成本、ip組網(基於6lowpan)和自組網(mesh network)。藍芽在2023年推出bluetooth4.0(ble)之後,低功耗和低成本方面,已經旗鼓相當了。那ip組網和自組網呢?

拋開自組網技術不談(bluetooth® smart mesh工作組已經成立,標準草稿已經討論到第7版,今年有望發布),先看看在ble的基礎上,增加ipv6的支援,需要新增多少工作量。

如果我告訴你,僅需不超過5頁的規範文件、不超過50行的**,你相信嗎?

藍芽技術聯盟(bluetooth sig)為支援基於ble的ipv6,僅僅做了一件事情:在bluetooth4.1推出之後,發布了乙份總頁數為14頁、有效內容不足5頁的profile規範----internet protocol support profile[1],用於支援internet protocol(ipv6)。該profile在ble協議棧中的定義如下:

1 ipsp協議棧

看似複雜,但僅僅左上角那個小小的紅色block(ipss)屬於新增內容,具體如下。

2.1 ipsp profile

ipsp是internet protocol support profile的縮寫,它是乙個藍芽profile,規定了「ipv6 over ble」這樣乙個應用場景,要怎麼實現。主要包括:

1)定義兩個角色,ipsp node和ipsp router。ipsp router是用來**ipv6 packet的裝置,ipsp node只能產生或者消費ipv6 packet。如果某乙個router需要連線其它router,它可以同時實現node和router兩種角色。

2)node需要提供乙個用於服務發現(service discovery)的功能,以便讓router發現它。由「藍芽協議分析(3)_藍芽低功耗(ble)協議棧介紹」中的描述可知,ble使用gatt作為服務發現。因此,node基於gatt,提供了ipss(internet protocol support service),用於服務發現。

3)ipv6 packets在node和router之間通過面向連線的l2cap傳輸,並使用le_psm_ipsp(0x0023)作為協議識別碼(需要在連線建立的時候提供)[3],同時規定mtu為1280。

4)在l2cap之上,依次是6lowpan、ipv6、udp、tcp等網路協議棧,不過已經和藍芽無關了。

2.2 ipss service

ipss(internet protocol support service)提供了乙個名稱為ip support service uuid(0x1820[6])的gatt service[5],用於服務發現。

2.3 6lowpan、ipv6、udp、tcp等網路協議棧

6lowpan是ipv6 over low power wireless personal area networks的縮寫,是為了在802.15.4網路上傳輸ipv6 packet而提出的乙個標準,包括了幀格式的定義、位址的自動配置、ip header的壓縮演算法等。

ipv6、udp、tcp等都是標準協議,就不多說了。

3. ietf rfc7668[2]

ipsp規範發布之後,ietf(internet engineering task force,網際網路工程任務組)便發布了名稱為「ipv6 over bluetooth(r) low energy」的rfc7668標準[2],該標準詳細規定了基於藍芽ble的ipv6組網方式,以及一些實現細節。

下面是摘錄的兩種組網方式,可以看出,已經和傳統的ip網路沒有什麼區別了:

/.---------------.               /

/           6ln   \             /

/               \   \           /

|                 \   |         /

| 6ln -----------   6lbr ----- |  internet

|     <--link-->  /   |         \

\               /   /           \

\           6ln   /             \

'---------------'               \

\<------ subnet="" -----=""><-- ipv6="" connection="" --="">

to internet

figure 4: bluetooth le network connected to the internet

.-------------------.

/                     \

/     6ln      6ln      \

/        \      /         \

|          \    /           |

|   6ln --- 6lbr --- 6ln    |

|          /    \           |

\        /      \         /

\     6ln      6ln      /

\                     /

'-------------------'

<--------- subnet="" ----------="">

figure 5: isolated bluetooth le network

注:6ln是6lowpan node縮寫,對應ipsp中的ipsp node,6lbr是6lowpan board router的縮寫,對應ipsp中的ipsp router。

藍芽協議分析 4 IPv6 Over BLE介紹

1.前言 藍芽是個奇葩的傢伙 它總是以後來者的身份出現,很喜歡打仗,而且還不落下風 有點像某訊的風格 90年代末期和wi fi的無線標準之爭如此,當前和802.15.4系 zigbee rf4ce thread等 的iot之爭,也如此。90年代末期,藍芽剛出道的時候,就曾叫囂著把wi fi 802....

藍芽協議分析 4 IPv6 Over BLE介紹

1.前言 藍芽是個奇葩的傢伙 它總是以後來者的身份出現,很喜歡打仗,而且還不落下風 有點像某訊的風格 90年代末期和wi fi的無線標準之爭如此,當前和802.15.4系 zigbee rf4ce thread等 的iot之爭,也如此。90年代末期,藍芽剛出道的時候,就曾叫囂著把wi fi 802....

IPv4 IPv6雙重協議棧

ipv4 tcp客戶與ipv6伺服器之間的通訊 1 啟動ipv6伺服器,建立套接監聽口,繫結通配位址 2 ipv4呼叫gethostbyname找到該伺服器對應的a記錄 3 呼叫connect,向伺服器傳送乙個ipv4的syn 4 伺服器設定標誌,表明是ipv4對映的ipv6位址,相應乙個ipv4的...