1. 前言
藍芽是個奇葩的傢伙:它總是以後來者的身份出現,很喜歡打仗,而且還不落下風(有點像某訊的風格)。90年代末期和wi-fi的無線標準之爭如此,當前和802.15.4系(zigbee、rf4ce、thread等)的iot之爭,也如此。
90年代末期,藍芽剛出道的時候,就曾叫囂著把wi-fi(802.11)從地球上抹去。反過來,2023年wi-fi 802.11b標準發布後,也宣稱會把藍芽乾掉。最終,二者劃江而治,瓜分了天下,wi-fi佔據了家庭和辦公室中的電腦網路,而藍芽成為了廣受歡迎的電腦和外設之間的連通性工具。標準之爭,不是本文的議題,我們要思考的問題是:藍芽有何長處,可以支撐它四處征戰?答案是「靈活性」。本文將以用於支援ipv6的ipsp(internet protocol service profile)為例,說明這個特性。與此同時,在iot的戰場上,以zigbee(2023年)為代表的802.15.4技術,苦心經營近15年,依舊不慍不火、默默無聞,而藍芽ble技術問世(2023年)至今,短短5年左右的時間,已經紅遍大江南北,裝機量爆棚。於是,硝煙再起。
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.2 ipss service2)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等網路協議棧,不過已經和藍芽無關了。
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是6lowpan node縮寫,對應ipsp中的ipsp node,6lbr是6lowpan board router的縮寫,對應ipsp中的ipsp router。/.---------------. /
/ 6ln \ /
/ \ \ /
| \ | /
| 6ln ----------- 6lbr ----- | internet
| / | \
\ / / \
\ 6ln / \
'---------------' \
\to internet
figure 4: bluetooth le network connected to the internet
.-------------------./ \
/ 6ln 6ln \
/ \ / \
| \ / |
| 6ln --- 6lbr --- 6ln |
| / \ |
\ / \ /
\ 6ln 6ln /
\ /
'-------------------'
figure 5: isolated bluetooth le network
4. 參考文件
[1] ipsp spec, 1.0,
[2] ietf rfc7668, ipv6 over bluetooth(r) low energy,
[3] le_psm_ipsp,
[4]
[5] 藍芽協議分析(3)_藍芽低功耗(ble)協議棧介紹
[6]
[7] ietf rfc4944,
藍芽協議分析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的...