searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

IPv6知识

2023-06-28 03:06:02
371
0

1 IPV6的基本组成

(1)、IPV6有128位(128bit),基本组成方式为:网络ID+接口ID,IPV6地址=前缀+接口标识(接口ID具有唯一性,由设备自动生成,MAC唯一,因此接口ID唯一,前缀的表示方法:通过砸IPV6地址后面加一个斜线/,再跟一个十进制的数字来标识一个IPV6地址的起始位有多少位是前缀位,一般前缀为64位,如:3ffe:1994:100:a::/64)

(2)、IPV6若是用16进制表示的话,地址被分为8段,每16位为一段,中间用':'隔开,如: X:X:X:X:X:X:X:X(X 表示一个4位16进制数)

(3)、IPV6中前导0可以删除,但是每段至少要有一个数字,如:2001:DB8:0:0:8:800:200C:417A

(4)、多个连续为0的段可以用::表示,如:2001:0DB8::8:800:200C:417A

(5)、若是全部为0可以直接用::表示,如:0:0:0:0:0:0:0:0=>::

(6)、在一个IPV6地址中,只允许使用一次“::”,不能把有效的0压缩

(7)、没有广播地址

 

2 IPV6地址分类

  1. 全球单播地址  global unicast address, 公网ip 相当于 nd proxy (对应 ipv4的 floating ip)
  2. 虚机ipv6 unique local地址(唯一本地地址 私网ip)是dhcp 请求openflow 下发的。
  3. 虚机ipv6 linklocal地址

 

 

3 流表、报文

3.1 RS RA 相关流表

RS(Router Solicitation)路由请求报文   RA(Router Advertisement)路由通告报文 相关流表

传统用法:

路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。
也就是RS RA 是用来进行地址自动配置的。在IPv6中,

  • IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。
    路由器发现功能是IPv6地址自动配置功能的基础,主要通过RS RA两种报文实现。
  • DHCPv6属于带状态地址配置。

从上图可以看出有2种,一种网关设备定时给虚机发组播RA报文;另一种虚机主动发RS,网关回RA。

3.1.1 RA 相关流表

RA(Router Advertisement) 路由通告报文 组播报文 icmp_type=134

功能:租户网关loop口定时发送,同VPC下所有虚机都可以收到

 

3.1.2 RS 相关流表

RS(Router Solicitation) 路由请求报文  组播报文 icmp_type=133

功能:虚机发出的RS请求报文默认全部送到租户网关,报文中源地址是虚机的linklocal链路本地地址 为啥??RS RA 就是为linklocal 地址生成路由用的,路由其实也可以理解成学neighbor (arp)
fe80::f816:3eff:fe38:d51,output=1表示走vxlan tunnel Table 30

 

3.1.3 RA 相关流表

RA(Router Advertisement) 路由通告报文 单播报文 icmp_type=134

功能:租户网关loop口的RA应答报文,目的ip为虚机fe80::f816:3eff:fe38:d51 linklocal地址。
priority=300高于上边第一条租户网关给虚机发的组播报文

 

3.2 RS(Router Solicitation)   RA(Router Advertisement) 报文

3.2.1 RA 组播报文

路由器通告RA(Router Advertisement)报文: 组播
每台设备(交换机角色)为了让二层网络上的主机(虚机)和设备知道自己的存在,定时都会组播发送RA报文,
RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。

https://blog.csdn.net/qq_45519920/article/details/104798016

Flags字段:

M标志位:管理地址配置标识(Managed Address Configuration),标识是否使用DHCPv6获取IPv6单播地址
M=0,表示无状态地址分配,客户端通过无状态协议(如ND)获得IPv6地址
M=1,表示有状态地址分配,客户端通过有状态协议(如DHCPv6)获得IPv6地址

O标志位:其他配置标识(Other Configuration),标识是否使用DHCPv6获取其他参数,比如DNS等

O=0,表示客户端通过无状态协议(如ND)获取除地址外的其他配置信息

O=1,表示客户端通过有状态协议(如DHCPv6)获取除地址外其他配置信息,如DNS,SIP服务器信息

注意:协议规定,如果M=1,则O=1,否则没有意义

M与O不同组合的含义:

M

O

含义

描述

1

1

地址和DNS等都从DHCPv6服务器取得

Stateful DHCPv6

0

1

地址使用RA通告的prefix+ EUI-64计算出来的接口地址,DNS和其他服务器信息从DHCPv6取得

Stateless DHCPv6

0

0

完全的Stateless配置,仅地址使用RA通告的prefix+ EUI-64计算出来的接口地址

Stateless AutoConfiguration

ICMPv6选项前缀信息中的Flag:

L位:表示该RA消息前缀是否分配给本地链路

A位:表示该前缀能否用于无状态自动配置,值为1表示该前缀可以用于无状态自动配置,值为0表示不能用于无状态自动配置。

 

3.2.2 RS 组播报文

路由器请求RS(Router Solicitation)报文: 组播
很多情况下虚机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。
RS报文的Tpye字段值为133

3.2.3 RA 单播报文

路由器通告RA(Router Advertisement)报文: 单播
回应RS的RA报文

3.3 NS NA 相关流表

NS(Neighbor Solicitation)邻居请求报文   NA(Neighbor Advertisement)邻居通告报文 相关流表

NS NA 在地址解析中的作用类似于IPv4中的ARP请求 应答

IPv6地址解析示意图

3.3.1 NS 相关流表

NS(Neighbor Solicitation) 邻居请求报文 组播报文 icmp_type=135

功能:目的ip为组播ip,不唯一,所以流表根据报文中的nd_target(唯一,即需要请求的对端ip,可能是唯一本地地址??)指导转发
1.入向:其它虚机请求本虚机的邻居(Neighbor,mac)(分同主机内其它vm ns请求本vm Neighbor 和 别的主机上的vm ns请求本vm Neighbor)
Ipv6地址默认全局唯一的话两条流表可以用一条流表代替,匹配协议类型和nd_target

同主机内其它vm发NS请求本vm邻居(Neighbor) 匹配 reg6 action output到虚机
别的主机上的vm发NS请求本vm邻居(Neighbor) 匹配 tun_id   in_port action output到虚机

 

2.出向:本虚机请求其它虚机的邻居:
本虚机请求同主机
本虚机请求不同主机远端虚机邻居(Neighbor)(同网段)或者请求网关的邻居(Neighbor) (跨网段)
报文送到vxlan tunnel 所以output=1

 

3.3.2 NA 相关流表

NA(Neighbor Advertisement) 邻居通告报文 单播报文 icmp_type=136

功能:
1.入向:同主机内其它vm或者其它主机上vm将自己的邻居(Neighbor,mac)通告给本虚机
Ipv6地址默认全局唯一的话两条流表可以用一条流表代替,匹配协议类型和ipv6_dst

 

2.出向:本虚机的邻居(Neighbor,mac)通告给

同主机其它vm(同网段)

或者不同主机上的虚机(同网段)或网关(跨网段)

 

可以看到 跨网段3层流量卸载还是可以减轻网关压力的

如果进行NDP三层卸载,下发的NS和NA流表不再是同子网,而是同VPC

3.4 NS(Neighbor Solicitation)   NA(Neighbor Advertisement) 报文

邻居请求和邻居通告 报文 在地址解析中的作用类似于IPv4中的ARP请求报文

3.4.1 NS邻居请求 组播报文

 

a ping6 b过程
根据掩码判断是否同网段  不同网段需要查路由
根据路由下一跳 查下一跳的mac缓存,  ip -6 neigh 获取到mac进行封装。

那么这个mac是怎么获取到的?看以下场景进行讲解。

 

场景:240e:980:1800:8007::391/112 请求240e:980:1800:8007::1/112的邻居
           相当于请求240e:980:1800:8007::1的mac地址,前提是知道被请求节点组播ipv6地址以及组播mac,具体获取方式如下。

过程梳理:
为了学习到目标地址240e:980:1800:8007::1对应的MAC地址,首先发送NS报文:
Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。

1)被请求节点组播(Solicited-node Multicast) IPv6地址FF02::1:FF00:1如何生成?
    IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。
    在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。
    当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP
    就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
    被请求节点组播地址由前缀FF02::1:FF00:0/104和目标单播地址的最后24位组成。
    由于目标单播地址是240e:980:1800:8007::1,
    所以生成的被请求节点组播地址是:FF02::1:FF00:1。

2)被请求节点组播(Solicited-node Multicast) MAC地址33:33:ff:00:00:01如何生成?
    组播MAC地址48bit的前24bit默认固定是33:33:ff,
    后半部分是被请求节点组播地址的后24bit,
    所以生成的组播MAC地址是33:33:ff:00:00:01。

 

 

3.4.2 NA邻居通告 单播报文

 

VM1发送的NS请求报文给到虚拟网关路由器,虚拟网关路由器收到NS报文后

查看路由表匹配到路由240e:980:1800:8007::/64,代理目标地址回复一个NA报文:

Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。

 

 

3.5 ICMPv6的 echo request 、echo reply 报文

ICMPv6的 echo request报文 Type 128

 

3.6 虚机发送NS报文对linklocal地址做重复地址检测(Duplicate Address Detect,DAD) 相当于v4 免费arp

 

 

0条评论
0 / 1000
2****m
3文章数
0粉丝数
2****m
3 文章 | 0 粉丝
2****m
3文章数
0粉丝数
2****m
3 文章 | 0 粉丝
原创

IPv6知识

2023-06-28 03:06:02
371
0

1 IPV6的基本组成

(1)、IPV6有128位(128bit),基本组成方式为:网络ID+接口ID,IPV6地址=前缀+接口标识(接口ID具有唯一性,由设备自动生成,MAC唯一,因此接口ID唯一,前缀的表示方法:通过砸IPV6地址后面加一个斜线/,再跟一个十进制的数字来标识一个IPV6地址的起始位有多少位是前缀位,一般前缀为64位,如:3ffe:1994:100:a::/64)

(2)、IPV6若是用16进制表示的话,地址被分为8段,每16位为一段,中间用':'隔开,如: X:X:X:X:X:X:X:X(X 表示一个4位16进制数)

(3)、IPV6中前导0可以删除,但是每段至少要有一个数字,如:2001:DB8:0:0:8:800:200C:417A

(4)、多个连续为0的段可以用::表示,如:2001:0DB8::8:800:200C:417A

(5)、若是全部为0可以直接用::表示,如:0:0:0:0:0:0:0:0=>::

(6)、在一个IPV6地址中,只允许使用一次“::”,不能把有效的0压缩

(7)、没有广播地址

 

2 IPV6地址分类

  1. 全球单播地址  global unicast address, 公网ip 相当于 nd proxy (对应 ipv4的 floating ip)
  2. 虚机ipv6 unique local地址(唯一本地地址 私网ip)是dhcp 请求openflow 下发的。
  3. 虚机ipv6 linklocal地址

 

 

3 流表、报文

3.1 RS RA 相关流表

RS(Router Solicitation)路由请求报文   RA(Router Advertisement)路由通告报文 相关流表

传统用法:

路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。
也就是RS RA 是用来进行地址自动配置的。在IPv6中,

  • IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。
    路由器发现功能是IPv6地址自动配置功能的基础,主要通过RS RA两种报文实现。
  • DHCPv6属于带状态地址配置。

从上图可以看出有2种,一种网关设备定时给虚机发组播RA报文;另一种虚机主动发RS,网关回RA。

3.1.1 RA 相关流表

RA(Router Advertisement) 路由通告报文 组播报文 icmp_type=134

功能:租户网关loop口定时发送,同VPC下所有虚机都可以收到

 

3.1.2 RS 相关流表

RS(Router Solicitation) 路由请求报文  组播报文 icmp_type=133

功能:虚机发出的RS请求报文默认全部送到租户网关,报文中源地址是虚机的linklocal链路本地地址 为啥??RS RA 就是为linklocal 地址生成路由用的,路由其实也可以理解成学neighbor (arp)
fe80::f816:3eff:fe38:d51,output=1表示走vxlan tunnel Table 30

 

3.1.3 RA 相关流表

RA(Router Advertisement) 路由通告报文 单播报文 icmp_type=134

功能:租户网关loop口的RA应答报文,目的ip为虚机fe80::f816:3eff:fe38:d51 linklocal地址。
priority=300高于上边第一条租户网关给虚机发的组播报文

 

3.2 RS(Router Solicitation)   RA(Router Advertisement) 报文

3.2.1 RA 组播报文

路由器通告RA(Router Advertisement)报文: 组播
每台设备(交换机角色)为了让二层网络上的主机(虚机)和设备知道自己的存在,定时都会组播发送RA报文,
RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。

https://blog.csdn.net/qq_45519920/article/details/104798016

Flags字段:

M标志位:管理地址配置标识(Managed Address Configuration),标识是否使用DHCPv6获取IPv6单播地址
M=0,表示无状态地址分配,客户端通过无状态协议(如ND)获得IPv6地址
M=1,表示有状态地址分配,客户端通过有状态协议(如DHCPv6)获得IPv6地址

O标志位:其他配置标识(Other Configuration),标识是否使用DHCPv6获取其他参数,比如DNS等

O=0,表示客户端通过无状态协议(如ND)获取除地址外的其他配置信息

O=1,表示客户端通过有状态协议(如DHCPv6)获取除地址外其他配置信息,如DNS,SIP服务器信息

注意:协议规定,如果M=1,则O=1,否则没有意义

M与O不同组合的含义:

M

O

含义

描述

1

1

地址和DNS等都从DHCPv6服务器取得

Stateful DHCPv6

0

1

地址使用RA通告的prefix+ EUI-64计算出来的接口地址,DNS和其他服务器信息从DHCPv6取得

Stateless DHCPv6

0

0

完全的Stateless配置,仅地址使用RA通告的prefix+ EUI-64计算出来的接口地址

Stateless AutoConfiguration

ICMPv6选项前缀信息中的Flag:

L位:表示该RA消息前缀是否分配给本地链路

A位:表示该前缀能否用于无状态自动配置,值为1表示该前缀可以用于无状态自动配置,值为0表示不能用于无状态自动配置。

 

3.2.2 RS 组播报文

路由器请求RS(Router Solicitation)报文: 组播
很多情况下虚机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。
RS报文的Tpye字段值为133

3.2.3 RA 单播报文

路由器通告RA(Router Advertisement)报文: 单播
回应RS的RA报文

3.3 NS NA 相关流表

NS(Neighbor Solicitation)邻居请求报文   NA(Neighbor Advertisement)邻居通告报文 相关流表

NS NA 在地址解析中的作用类似于IPv4中的ARP请求 应答

IPv6地址解析示意图

3.3.1 NS 相关流表

NS(Neighbor Solicitation) 邻居请求报文 组播报文 icmp_type=135

功能:目的ip为组播ip,不唯一,所以流表根据报文中的nd_target(唯一,即需要请求的对端ip,可能是唯一本地地址??)指导转发
1.入向:其它虚机请求本虚机的邻居(Neighbor,mac)(分同主机内其它vm ns请求本vm Neighbor 和 别的主机上的vm ns请求本vm Neighbor)
Ipv6地址默认全局唯一的话两条流表可以用一条流表代替,匹配协议类型和nd_target

同主机内其它vm发NS请求本vm邻居(Neighbor) 匹配 reg6 action output到虚机
别的主机上的vm发NS请求本vm邻居(Neighbor) 匹配 tun_id   in_port action output到虚机

 

2.出向:本虚机请求其它虚机的邻居:
本虚机请求同主机
本虚机请求不同主机远端虚机邻居(Neighbor)(同网段)或者请求网关的邻居(Neighbor) (跨网段)
报文送到vxlan tunnel 所以output=1

 

3.3.2 NA 相关流表

NA(Neighbor Advertisement) 邻居通告报文 单播报文 icmp_type=136

功能:
1.入向:同主机内其它vm或者其它主机上vm将自己的邻居(Neighbor,mac)通告给本虚机
Ipv6地址默认全局唯一的话两条流表可以用一条流表代替,匹配协议类型和ipv6_dst

 

2.出向:本虚机的邻居(Neighbor,mac)通告给

同主机其它vm(同网段)

或者不同主机上的虚机(同网段)或网关(跨网段)

 

可以看到 跨网段3层流量卸载还是可以减轻网关压力的

如果进行NDP三层卸载,下发的NS和NA流表不再是同子网,而是同VPC

3.4 NS(Neighbor Solicitation)   NA(Neighbor Advertisement) 报文

邻居请求和邻居通告 报文 在地址解析中的作用类似于IPv4中的ARP请求报文

3.4.1 NS邻居请求 组播报文

 

a ping6 b过程
根据掩码判断是否同网段  不同网段需要查路由
根据路由下一跳 查下一跳的mac缓存,  ip -6 neigh 获取到mac进行封装。

那么这个mac是怎么获取到的?看以下场景进行讲解。

 

场景:240e:980:1800:8007::391/112 请求240e:980:1800:8007::1/112的邻居
           相当于请求240e:980:1800:8007::1的mac地址,前提是知道被请求节点组播ipv6地址以及组播mac,具体获取方式如下。

过程梳理:
为了学习到目标地址240e:980:1800:8007::1对应的MAC地址,首先发送NS报文:
Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。

1)被请求节点组播(Solicited-node Multicast) IPv6地址FF02::1:FF00:1如何生成?
    IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。
    在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。
    当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP
    就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
    被请求节点组播地址由前缀FF02::1:FF00:0/104和目标单播地址的最后24位组成。
    由于目标单播地址是240e:980:1800:8007::1,
    所以生成的被请求节点组播地址是:FF02::1:FF00:1。

2)被请求节点组播(Solicited-node Multicast) MAC地址33:33:ff:00:00:01如何生成?
    组播MAC地址48bit的前24bit默认固定是33:33:ff,
    后半部分是被请求节点组播地址的后24bit,
    所以生成的组播MAC地址是33:33:ff:00:00:01。

 

 

3.4.2 NA邻居通告 单播报文

 

VM1发送的NS请求报文给到虚拟网关路由器,虚拟网关路由器收到NS报文后

查看路由表匹配到路由240e:980:1800:8007::/64,代理目标地址回复一个NA报文:

Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。

 

 

3.5 ICMPv6的 echo request 、echo reply 报文

ICMPv6的 echo request报文 Type 128

 

3.6 虚机发送NS报文对linklocal地址做重复地址检测(Duplicate Address Detect,DAD) 相当于v4 免费arp

 

 

文章来自个人专栏
IPv6
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
1