[ IoT ] OpenThread - IPv6 Addressing

IPv6 Addressing

  ① 介面 ( interfaces ) 這個詞用於識別網路中 Thread 裝置的端點。 

  ② 單一 Thread 裝置會有單一個 Thread 介面 ( interfaces )。
  • 範圍 Scopes

    資料來源: openthread.io

    • Link-Local
      • 經由單一個無線電傳輸能到達所有的介面 ( interfaces )
      • 前置詞是以 fe80::/16 為開頭
    • Mesh-Local
      • 在相同 Thread 網路內的所有的介面 ( interfaces ) 皆能到達
      • 前置詞是以 fd00::/8 為開頭
    • Global
      • 從外部 Thread 網路能到達所有介面 ( interfaces )
  • Routing Locator 如何被產生

    • Routing Locator ( RLOC ) 會相依於所在的網路拓撲,目的是用來識別 Thread 介面 ( interface )
      • 介面 ( interface ) 這個詞被用來識別網路內 Thread 裝置的端點
      • 單一 Thread 裝置有單一的 Thread 介面 ( interface )
    • 所有裝置被指派一個 Router ID 與一個 Child ID
    • 每個 Router 維護一張包含所有他小孩的表格,其組合是唯一識別拓撲中的裝置
    • 範例 ( 請參閱下方網路拓撲 )

      • Router ( 五角型 ) 的號碼是 Router ID
      • End Device ( 圓型 ) 的號碼是 Child ID
      • 每個小孩的 Router ID 對應到他們的父節點 ( Router )
      • 因為 Router 不是小孩,所以 Router 的 Child ID 總是為 0
      • 在 Thread 網路中的每個裝置都有唯一的 Routing Locator ( RLOC ) 值
      • Router ID 與 Child ID 用來產生 RLOC16,它呈現於 Routing Locator ( RLOC ) 最後的 16 位元中,如下圖所示:
      • RLOC 16 是 Interface Identifier ( IID ) 的一部份,Interface Identifier ( IID ) 對應到 IPv6 位置的最後 64 個位元
        • 有些 Interface Identifier (IID) 能被使用來識別一些 Thread 介面的一些類型,例如:Interface Identifier (IID) 總是為 0000:00ff:fe00:RLOC16 的格式
      • Mesh-Local Prefix 加上 IID,其中 IID 包含 RLOC,如下圖所示:
    • 使用下方拓撲來說明 RLOC16 是如何被計算

      • 編號 1 的 Router ( 五角型 - 下圖紅色框 )
      • RLOC16
        • 如下【 RLOC16 計算 】所示
      • Mesh-Local 前置詞 + IID
        • Mesh-Local 前置詞
          • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
        • IID
          • 0000:00ff:fe00 + 0400
        • Mesh-Local 前置詞 + IID
          • fde5:8dba:82e1:1::ff:fe00:400
         【 RLOC16 計算 】

          Router ID = 1
          Child ID  = 0

                           111111
          012345     6  789012345
          -----------------------
          000001     0  000000000
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 0100 0000 0000
             ↓   ↓   ↓   ↓
             0    4    0    0  ➙  0x400
  • 編號 1 的 End Device ( 圓型 - 下圖紅色框 )

    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0401
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:401
         【 RLOC16 計算 】

          Router ID = 1
          Child ID  = 1

                           111111
          012345     6  789012345
          -----------------------
          000001     0  000000001
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 0100 0000 0001
             ↓   ↓   ↓   ↓
             0    4    0    1  ➙  0x401
  • 編號 2 的 End Device ( 圓型 - 下圖紅色框 )
    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0402
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:402
         【 RLOC16 計算 】

          Router ID = 1
          Child ID  = 2

                           111111
          012345     6  789012345
          -----------------------
          000001     0  000000010
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 0100 0000 0010
             ↓   ↓   ↓   ↓
             0    4    0    2  ➙  0x402  
  • 編號 2 的 Router ( 五角型 - 下圖紅色框 )
    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0800
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:800
         【 RLOC16 計算 】

          RouterID = 2
          ChildID  = 0

                           111111
          012345     6  789012345
          -----------------------
          000010     0  000000000
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 1000 0000 0000
             ↓   ↓   ↓   ↓
             0    8    0    0  ➙  0x800
  • 編號 1 的 End Device ( 圓型 - 下圖紅色框 )

    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0801
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:801
         【 RLOC16 計算 】

          Router ID = 2
          Child ID  = 1

                           111111
          012345     6  789012345
          -----------------------
          000010     0  000000001
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 1000 0000 0001
             ↓   ↓   ↓   ↓
             0    8    0    1  ➙  0x801   
  • 編號 2 的 End Device ( 圓型 - 下圖紅色框 )

    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0802
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:802
         【 RLOC16 計算 】

          RouterID = 2
          ChildID  = 2

                           111111
          012345     6  789012345
          -----------------------
          000010     0  000000010
          Router ID  R  Child ID

                      11 1111
          0123 4567 8901 2345
          -------------------
          0000 1000 0000 0010
             ↓   ↓   ↓   ↓
             0    8    0    2  ➙  0x802
    
  • 拓撲改變
    • 範例
      • 0x400 的節點從 Thread 網路中被移除,0x4010x402 節點與不同的 Router 建立新連線且 0x4010x402 節點皆被指派新的 RLOC16
        移除前

        移除後

  • 使用下方拓撲來說明 RLOC16 是如何被計算

    • 編號 3 的 Router ( 五角型 - 下圖紅色框 )

      • RLOC 16
        • 如下【 RLOC16 計算 】所示
      • Mesh-Local 前置詞 + IID
        • Mesh-Local 前置詞
          • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
        • IID
          • 0000:00ff:fe00 + 0c00
        • Mesh-Local 前置詞 + IID
          • fde5:8dba:82e1:1::ff:fe00:c00
             【 RLOC16 計算 】

              Router ID = 3
              Child ID  = 0

                               111111
              012345     6  789012345
              -----------------------
              000011     0  000000000
              Router ID  R  Child ID

                          11 1111
              0123 4567 8901 2345
              -------------------
              0000 1100 0000 0000
                 ↓   ↓   ↓   ↓
                 0    c    0    0  ➙  0xc00
  • 編號 3 的 End Device ( 圓型 - 下圖紅色框 )

    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 0c03
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:c03
             【 RLOC16 計算 】

              Router ID = 3
              Child ID  = 3

                               111111
              012345     6  789012345
              -----------------------
              000011     0  000000011
              Router ID  R  Child ID

                          11 1111
              0123 4567 8901 2345
              -------------------
              0000 1100 0000 0011
                 ↓   ↓   ↓   ↓
                 0    c    0    3  ➙  0xc03
  • 編號 4 的 Router ( 五角型 - 下圖紅色框 )

    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 1000
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:1000
             【 RLOC16 計算 】

              Router ID = 4
              Child ID  = 0

                               111111
              012345     6  789012345
              -----------------------
              000100     0  000000000
              Router ID  R  Child ID

                          11 1111
              0123 4567 8901 2345
              -------------------
              0001 0000 0000 0000
                 ↓   ↓   ↓   ↓
                 1    0    0    0  ➙  0x1000
  • 編號 2 的 End Device ( 圓型 - 下圖紅色框 )
    • RLOC 16
      • 如下【 RLOC16 計算 】所示
    • Mesh-Local 前置詞 + IID
      • Mesh-Local 前置詞
        • fde5:8dba:82e1:1::/64 為 Mesh-Local 的前置詞
      • IID
        • 0000:00ff:fe00 + 1002
      • Mesh-Local 前置詞 + IID
        • fde5:8dba:82e1:1::ff:fe00:1002
             【 RLOC16 計算 】

              Router ID = 4
              Child ID  = 2

                               111111
              012345     6  789012345
              -----------------------
              000100     0  000000010
              Router ID  R  Child ID

                          11 1111
              0123 4567 8901 2345
              -------------------
              0001 0000 0000 0010
                 ↓   ↓   ↓   ↓
                 1    0    0    2  ➙  0x1002

Reference
GitHub
List of blogs
ALL RIGHTS RESERVED. COPYRIGHT © 2018. Designed and Coded by Makee.io