ILD

IPv6 Address Architecture
作者:YUAN JIANPENG 邮箱:yuanjp89@163.com
发布时间:2019-7-28 站点:Inside Linux Development

IPv6地址有128位。有3种类型的地址:

单播 Unicast

任播 Anycast,表示一组接口,发给任播的包被转发到最近的一个接口。

多播 Multicast

没有广播broadcast地址,它的功能由多播取代。


地址中的一些fields被给了特定的名字,比如subnet。IPv6中,任何field为全0或全1是合法的。IPv6地址是赋给接口的,而不是nodes。


Text representation of addresses

有3种形式

1 x:x:x:x:x:x:x:x,8个x,每个x是16进制表示的16位,16进制前面的0可以省略,但必须至少有一个数字。

       FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

        1080:0:0:0:8:800:200C:417A


2 多个连续的0可以缩写为::,但只能缩写一次。

      For example, the following addresses:

         1080:0:0:0:8:800:200C:417A  a unicast address
         FF01:0:0:0:0:0:0:101        a multicast address
         0:0:0:0:0:0:0:1             the loopback address
         0:0:0:0:0:0:0:0             the unspecified addresses

      may be represented as:

         1080::8:800:200C:417A       a unicast address
         FF01::101                   a multicast address
         ::1                         the loopback address
         ::                          the unspecified addresses


3 对于混合IPV4的地址,采用 x:x:x:x:x:x:d.d.d.d,IPV6的部分可以使用缩写。

         0:0:0:0:0:0:13.1.68.3

         0:0:0:0:0:FFFF:129.144.52.38

      or in compressed form:

         ::13.1.68.3

         ::FFFF:129.144.52.38


Text Representation of Address Prefixes

格式:

ipv6-address/prefix-length

地址是上面的IPV6地址,后缀部分为0。前缀长度为10进制。

      12AB:0000:0000:CD30:0000:0000:0000:0000/60
      12AB::CD30:0:0:0:0/60
      12AB:0:0:CD30::/60


Address Type Identification

根据高位确定地址类型:

   Address type         Binary prefix        IPv6 notation   Section
   ------------         -------------        -------------   -------
   Unspecified          00...0  (128 bits)   ::/128          2.5.2
   Loopback             00...1  (128 bits)   ::1/128         2.5.3
   Multicast            11111111             FF00::/8        2.7
   Link-local unicast   1111111010           FE80::/10       2.5.6
   Site-local unicast   1111111011           FEC0::/10       2.5.6
   Global unicast       (everything else)

对于全局单播地址,目前只分配了001前缀的。


Unicast addresses

单播地址有一个子网前缀和一个interface ID

   |                         n bits                 |   128-n bits   |
   +------------------------------------------------+----------------+
   |                   subnet prefix                | interface ID   |
   +------------------------------------------------+----------------+

interface ID通常是64位,它有一套生成规则,它是全局唯一的。


The Unspecified Address

全0的地址是叫做unspecified address,它不能赋给任何节点,它表示没有地址,一个正在初始化的主机可以使用它作为源地址来学习地址。不能用作目的地址。


The loopback address

::1是环回地址。


Global Unicast addresses

全局单播地址的格式如下

   |         n bits         |   m bits  |       128-n-m bits         |
   +------------------------+-----------+----------------------------+
   | global routing prefix  | subnet ID |       interface ID         |
   +------------------------+-----------+----------------------------+

除了000开头的全局单播地址,接口ID都是64位。


IPv6 Addresses with Embedded IPv4 Addresses

前缀全是0,后面就是IPV4地址

第一种是:IPv4-compatible IPv6 address

   |                80 bits               | 16 |      32 bits        |
   +--------------------------------------+--------------------------+
   |0000..............................0000|0000|    IPv4 address     |
   +--------------------------------------+----+---------------------+

第二种是:IPv4-mapped IPv6 address

   |                80 bits               | 16 |      32 bits        |
   +--------------------------------------+--------------------------+
   |0000..............................0000|FFFF|    IPv4 address     |
   +--------------------------------------+----+---------------------+


Local use IPv6 unicast addresses

link-local address

被设计用来作为single link的寻址,如Automatic address configuration,neighbor discovery。

   |   10     |
   |  bits    |         54 bits         |          64 bits           |
   +----------+-------------------------+----------------------------+
   |1111111010|           0             |       interface ID         |
   +----------+-------------------------+----------------------------+

site-local addresses格式:

   |   10     |
   |  bits    |         54 bits         |         64 bits            |
   +----------+-------------------------+----------------------------+
   |1111111011|        subnet ID        |       interface ID         |
   +----------+-------------------------+----------------------------+

用来在一个site内部寻址,而不需要global prefix,尽管subnet ID可以有54位,但是通常globally connected site对于site-local和global prefixes使用相同的subnet。


Anycast Addresses

IPv6任播地址也是单播地址,单纯从地址是无法区分任播地址和单播地址的,这个信息是显式的配置在路由器中的。


对于任何一个分配的anycast address,有一个longest prefix P,表示了属于这个任播地址的所有接口所在的拓扑区域。在P的区域内,路由系统需要一个单独的条目来维护。最差的情况,P是空,表示没有拓扑本地性,整个internet都需要为它维护一个条目。


两个限制:

任播地址不可以作为IPv6包的源地址。

任播地址不能赋给IPv6主机,但是可以赋给IPv6路由器。


subnet router anycast address

是预定义的,格式如下:

   |                         n bits                 |   128-n bits   |
   +------------------------------------------------+----------------+
   |                   subnet prefix                | 00000000000000 |
   +------------------------------------------------+----------------+


Multicast addresses

一个IPv6多播地址表示了多个接口组,一个接口可以属于任意多个多播地址。多播地址的格式如下:

   |   8    |  4 |  4 |                  112 bits                   |
   +------ -+----+----+---------------------------------------------+
   |11111111|flgs|scop|                  group ID                   |
   +--------+----+----+---------------------------------------------+

flags有4位,目前只用了最低位T,0表示permanently-assigned (well-known)多播地址。1表示non-permanently-assigned (transient)多播地址。


scop表示多播组的范围

           0  reserved
            1  interface-local scope
            2  link-local scope
            3  reserved
            4  admin-local scope
            5  site-local scope
            6  (unassigned)
            7  (unassigned)
            8  organization-local scope
            9  (unassigned)
            A  (unassigned)
            B  (unassigned)
            C  (unassigned)
            D  (unassigned)
            E  global scope
            F  reserved


pre-defined multicast addresses

使用下面这些Group IDs,不管是啥scope,如果T等于0,就是非法的。

      Reserved Multicast Addresses:   FF00:0:0:0:0:0:0:0
                                      FF01:0:0:0:0:0:0:0
                                      FF02:0:0:0:0:0:0:0
                                      FF03:0:0:0:0:0:0:0
                                      FF04:0:0:0:0:0:0:0
                                      FF05:0:0:0:0:0:0:0
                                      FF06:0:0:0:0:0:0:0
                                      FF07:0:0:0:0:0:0:0
                                      FF08:0:0:0:0:0:0:0
                                      FF09:0:0:0:0:0:0:0
                                      FF0A:0:0:0:0:0:0:0
                                      FF0B:0:0:0:0:0:0:0
                                      FF0C:0:0:0:0:0:0:0
                                      FF0D:0:0:0:0:0:0:0
                                      FF0E:0:0:0:0:0:0:0
                                      FF0F:0:0:0:0:0:0:0

   

  All Nodes Addresses:    

FF01:0:0:0:0:0:0:1

 FF02:0:0:0:0:0:0:1


All Routers Addresses:   

FF01:0:0:0:0:0:0:2

FF02:0:0:0:0:0:0:2
FF05:0:0:0:0:0:0:2


Solicited-node multicast addresses

前缀FF02:0:0:0:0:1:FF00::/104加上接口单播地址的低24位。

一个node,对于每个分配的单播地址和任播地址,被要求计算和加入关联的solicited-node multicast addresses


参考

https://tools.ietf.org/html/rfc3513



Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.