IPV6
一. IPv6特点:
随着Internet规模的扩大,IPV4地址空间已经消耗殆尽。针对IPV4地址短缺问题,曾先后出现过VLSM和NAT等临时性解决方案,但是VLSM和NAT都有各自的弊端,并不能作为IPV4地址短缺问题的彻底解决方案。另外,安全性、QOS、简便配置等要求也表明需要一个新的协议来根本解决目前IPV4面临的问题。
IETF在20世纪90年代提出了下一代互联网协议IPV6,也称为IPng,IPV6支持几乎无限的地址空间。IPV6使用了全新的地址配置方式,使的配置更加简单。IPV6还采用了全新的报文格式,提高了报文处理的效率、安全性,也能更好的支持QOS,IPV6时网络协议为第二代标准,也称为IPng。
注:IANA宣布2011年2月3号已全部使用完毕。
IPv6具有以下特点:
① 地址空间巨大
② 精简报文结构
③ 实现自动分配和重新编址
④ 支持层次化网络结构
⑤ 支持端到端的安全
⑥ 更好的支持QOS
⑦ 支持移动特性
二. IPv6格式:
- IPv4:32bit为2^32约为43亿
- IPv6:128bit为2^128
1. 冒号分16进制表表示法:
IPv6包括128bit,有冒号分割的32bit十六进制数表示,格式为共8组每4位:
- 用十六进制表示,比如FE09
- 4个数字为一组(16bit),中间用“:”隔开,如2001:12F
128bit分为8组,全写格式为2031:0000:130F:0000:0000:09C0:876A:130B
2. IPv6压缩格式:
- 每组中的前导“0”都可以省略:
2031:0:130F:0:9C0:876A:130B:
- 地址中包含的连续两个或多个均为0的组,可以使用双冒号“::”来代替:
2031:0:130F::9C0:876A:130B
注:一个IPv6地址中,双冒号只能出现一次。
3. IPv6地址结构:
IPv6地址分为两部分:
① 网络前缀
② 接口标识
(1)网络前缀:
相当于IPv4中的网络ID,由IANA分配。
(2)接口标识:
相当于IPv4中的主机ID,接口标识生成方式可以通过以下方式配置:
① 手工配置
② 软件自动生成
③ IEEE EUI-64规范自动生成
① 手工配置:
路由器配置IPv6地址:
[Huawei]ipv6————-开启IPv6功能
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable—开启接口IPv6功能
[Huawei-GigabitEthernet0/0/0]ipv6 address 2012::1/64
注:默认接口可以配置多个IPv6地址,配置新的IPv6地址不会覆盖掉原地址
② 软件自动生成:
由windows自动生成
③ IEEE EUI-64规范自动生成:
接口ID可以通过EUI规范自动生成
a) 将48bit的MAC地址转化为64bit的接口ID:
在MAC地址中24bit的OUI后和25bit产品ID前的中间插入16bit
注:16bit为FFFE
b) 转换后的64bit的接口ID将第一字节的第7bit进行反转
注:Link Local地址由此生成
4. 十进制转十六机制:
(1)十六位表示方法:
位数 |
映射关系 |
|||||||||||||||
十进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
十六进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
二进制 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
(2)转换方式:
十进制: 234
二进制: 1110 1010
十六进制:2+4+8 2+8
=EA
三. IPv6地址分类:
IPv6地址分为三大类:
① 单播地址
② 多播地址
③ 任播地址
(1)单播地址:
标识一个接口,目的为单播地址的报文会被送到标识的接口。
单播地址分为五种:
① 特殊地址
② 链路本地地址
③ 全球单播地址
④ 本地站点地址
⑤ 兼容地址
① 特殊地址:
- 未指定地址:
::/128,IPv6地址全部为0
- 回环地址:
::1/128,用于测试本机协议栈是否正常
② 链路本地地址:
FE80::/10,后54位为全0,Link Local地址,生效范围只在某条链路上,可供主机在本网段上进行访问。
FE80::EUI64/10,两台路由器在没有配置IPv6地址时使用本地MAC生成接口ID,增加FE80前缀,生成Link Local,用于本地链路访问其他的设备
注1:当配置IPv6地址后会自动生成Link Local地址,也可以使用命令[Huawei-GigabitEthernet0/0/0]ipv6 address fe80::54 link-local进行修改该
注2:使用命令[Huawei-G0/0/0]ipv6 address auto link-local后,不配置IPv6的前提下,生成Link Local地址
注3:IPv4中使用169.254.0.0/8
注4:本地链路地址生成过程:
Mac地址:00e0-fccf-15db
增加FFFE: 00e0-fcff-fecf-15db
反转bit: 02e0-fcff-fecf-15db
增加前缀:FE80::02e0-fcff-fecf-15db
压缩地址:FE80::2e0-fcff-fecf-15db
③ 全球单播地址:
2001::/16~3FFF::/16,运行在公网的地址,由前缀、子网ID和接口标识组成
④ 私网地址:
- 本地站点地址:
FEC0::/10,用于私有网络,但是会存在问题,已被收回
- 唯一本地地址:
EC::/7,完善本地站点地址的不足,用于私网
⑤ 兼容地址:
V4到V6过度时,使用兼容地址
(2)多播地址:
标识多个接口,目的为组播地址的报文会被送到被标识的接口
① 组播地址:
FF::/8,类似于IPv4的组播地址,由前缀、标志(Flag)字段、范围(Scope)字段以及组播ID组成
组成方式:FF(8bit)+Flag(4bit)+Scope(4bit)
- FF:前8bit固定不变,全部为1,表示为组播地址
- Flage:前3位固定为0,最后一位数定义地址类型:
a) 最后一位数为0,固定或众所周知的,由IANA分配
b) 最后一位数为1,本地分配或短期临时,不永久分配
- Scope:表示组播组的范围
a) 2—Link-Locol,表示仅在本网段链路上传送
b) 4、5、8—临时的组播地址范围
② 预定义组播地址:
Link-Local范围,表示组播地址中的Spock为2,只在本网段链路上有效,并有IANA预先定义
- 所有节点的组播地址:FF02:0:0:0:0:0:0:1
- 所有路由器的组播地址:FF02:0:0:0:0:0:0:2
- 请求节点组播组地址:FF02:0:0:0:0:0:1:FFxx:xxxx
- 所有OSPFv3路由器组播地址:FF02:0:0:0:0:0:0:5
- 所有OSPFv3的DR路由器组播地址:FF02:0:0:0:0:0:0:6
- 所有RIPng路由器组播地址:FF02:0:0:0:0:0:0:9
- 所有PIM路由器组播地址:FF02:0:0:0:0:0:0:D
③ 请求节点组播地址:
FF02::1:FF00:0000/104,IPv6特有的组播地址,当接口配置单播地址(单播IPv6地址或Link Local地址)每个节点必须为分配给他的每个单播地址和任播地址加入的一个组播地址,用于DAD地址重复检测和地址解析,由于IPv6没有广播地址,所以当主机请求对端的MAC地址时,三层目标地址为请求节点组播地址
请求节点组播地址组成:前缀FF02:0:0:0:0:0:1:FF+IPv6地址的后24bit
④ IPv6组播MAC地址:
和组播IPv4相同,IPv6组播中的MAC地址依旧采用映射的方法。
前16bit固定不变:3333
(3)任播地址:
标识多个接口,和单播标识一致,目的为任播地址的报文会被送到最近的一个被标识接口,最近节点由路由协议来确定,任播地址与单播地址使用同一个地址空间,配置时需要标明是任播地址还是单播地址,比如使用DNS的应用(无状态UDP),多个DNS服务器配置相同的任播地址,终端访问里自己最近的DNS服务器
描述:
为了实现附载分担,可以在网络存在多台数据服务器,DNS解析进行轮询应答,但这样可能会有次优的问题,任播地址为了解决就近服务的问题,提出了以下构想
① 地址声明:
两台服务器(目前任播只支持路由器上配置)通过NDP协议通告给路由器任播地址,同时也会通告自己的实际单播地址(成员地址),两台设备任播地址都是相同的,使用实际单播地址进行服务器的区分。
② 成员选择:
服务器请求任播地址的数据流量,会根据以下三种情况选择请求哪台服务器:
a) 根据IGP路由表
b) 随机
c) 使用包测试(PING、NQA等)
③ 数据转发:
数据转发存在问题,那就是不稳定性,比如使用包测试,但是在建立连接之后链路出现拥塞,那么后续数据包可能会被当中的路由器转到另外一台服务器上去,导致数据流量中断,针对这种情况,提出了以下几种构想:
a) 在进行TCP建立时,将TCP的ACk应答报文中压入真实的成员地址,这样客户端直接根据成员地址为目标地址进行流量的请求与访问(需要重新定义TCP 报文,目标地址变为了单播地址,不推荐使用)
b) 在进行TCP建立时,增加新的字段用来表示真实的成员IP地址,客户端直接根据这个真实的成员IP地址建立连接请求和数据的访问(需要重新定义TCP 报文,目标地址变为了单播地址,不推荐使用)
c) IPv6报文头中增加了Flow Label,PC在发送数据包时,在Flow Label中增加本地唯一的标识,中间节点路由器收到数据包后,根据源IPv6地址和Flow Label生成表项,对应送往目标服务器的下一跳,即使发现去往另一台服务器的链路更优,也不会进行切换,防止数据流的终端
四. IPv6报文:
IPv6基本报头,IPv6包由IPv6基本报头和IPv6扩展报头以及上层协议数据单元组成,IPv6基本报头有8个字段,固定大小为40Byte,每一个IPv6数据包都必须包含基本包头
1. IPv6格式表示类型:
基本报头、扩展报头和上层协议数据报文的相互关系如下:
① IPv6只存在基本报头:
- 则Next Header表示的为上层协议数据的标识
② IPv6存在基本报头和扩展报头:
- 基本报头中的Next Header表示的为扩展报头的协议标识
- 扩展报头中的Next Header表示的为上层协议数据的标识
③ 当数据包被分片并存在扩展报头:
- 基本报头中的Next Header表示的为扩展报头的协议标识
- 扩展报头中的Next Header表示的为分段协议报头
- 分段扩展报头的Next Header表示的为上层协议的标识
2. 基本报头:
每一个IPv6包都必须包含基本报头,其长度为固定40Byte,基本报头提供报文转发的基本信息,会被转发路径上面所有路由器解析
(1)特点:
效率/规范/安全/优质
① 取消IP层的校验:减少重复操作,由上层完成数据校验
② 取消中间节点的分片功能:分片充足功能由源和目的端进行,通过PMTU机制来保证
③ 定长的IPv6报文头:有利于硬件快速处理,有大部分的扩展头中间节点不需要处理
④ 安全选项必须支持:入OSPFv3中取消了原有认证等特性,全部依赖于IP安全属性
⑤ 在基本IP头中增加了流标签:提高了QOS效率,保留了DSCP
(2)基本报头组成部分:
① Version:版本,为6
② Traffic Class:流类别,用于QOS
③ Flow Label:流标签,区分唯一一条数据流(IPv4使用五元组区分一条流,IPv6使用刘标签+源目地址区分一条流标签)
④ Payload Length:Payload 长度,由于IPv6的基本报头不变,所有Payload Lenth表示的是上层数据的长度和扩展报头的大小
⑤ Next Header:下一个报头,标识上层承载协议类型(存在扩展报头,表示扩展报头类型)
⑥ Holp Limit:跳数限制,和IPv4中一致,默认为255
⑦ Source Address:源地址
⑧ Destination Address:目标地址
(3)IPv6基本报头与IPv4报头的区别:
(1)IPv6基本报头字段64bit对其,能够直接对内存存取
(2)Ipv4报头有14个字段(带填充和选项字段),,基本的IPv4包头有12个字段,Ipv6基本报头有8个字段:
① 包头长度:IPv6基本报头为固定40个字节基本报头,去掉了IPv4中的IHL选项
② 标示、标识和偏移字段:网络中的中心路由器不在处理分段,只在产生数据包的源节点处理分段,如果数据包被分片,在扩展报头中增加
③ 包头校验和:由链路层和传输层都有校验和,对Ipv6而言,网络层的作用是为了快速转发,所以取消了包头校验,直接由目的设备的上层协议对整个数据包进行校验
④ 选项和填充:选项由扩展报头处理,填充字段也去掉
3. 扩展报头:
- IPv6将选项字段全部放入扩展报头中
- IPv6报文包含0个、1个或多个扩展报头,固定为8字节长度的整倍数
- 扩展报头提供报文转发的扩展信息,并不会被路径上所有路由器解析,一般只会被目的路由器解析处理。
注:由于IPv6的整体报文必须以64bit对齐,如果扩展报头如法64bit对齐,使用Padding垫片进行扩展到64bit对齐
① Next Header:表示上层应用类型(应用层类型)
② Extension header Length:扩展报头长度
③ Extension Head Data:扩展报头数据
扩展报头主要包含以下几种类型:
报头类型 |
Next Header字段值 |
描述 |
逐跳选项报头 |
0 |
该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段,应用场景:①用于巨型载荷;②用于路由器提示;③用于资源预留 |
目的选项报头 |
60 |
目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要应用于移动IPv6 |
路由报头 |
43 |
路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被Ipv6源节点用来强制数据包经过特定的路由器 |
分段报头 |
44 |
同IPv4一样,IPv6报文发送也受到MTU的限制,当报文长度超过MTU时就需要将报文分段发送,而在IPv6中,分段发送使用的时分段报头 |
认证报头 |
51 |
该报头由IPsec使用,提供认证,数据完整性以及重放保护,它还对Ipv6基本报头中的一些字段进行保护 |
封装安全净载报头 |
50 |
该报头由IPsec使用,提供认证,数据完整性以及重放保护和IPv6 数据报的保密,类似于认证报头 |
注1:如果扩展报头全部在IPv6数据包中出现,扩展报头的顺序以表中循序存放,位于基本报头和上层协议中间
注2:除目的选项报头外,每种扩展报头只能出现一次
注3:目的选项报头最多出现两次,1此在路由报头之前,一次在上层协议数据报文之前,如果没有路由报头,则只能出现一次
(1)逐跳选项报头:
- 用于巨型载荷:载荷长度超过65535字节时,使用逐跳选项报头承载,由选项类型、
选项长度、超大有效载荷长度组成
如果有效载荷长度超过65535字节,则IPv6基本报头中的有效载荷长度值将被置为0,数据包的真正有效载荷长度用超大有效载荷长度字段表示,占32bit,能够表示4294967295
- 用于路由器提示:使路由器检查该选项的信息,而不是简单的转发出去(MLD type5)
- 用于资源预留:RSVP
(2)目的选项报头:
参数含义与逐跳选项头相同,目的选项头包含目的地需要处理的信息,报文的最终目的地和路由头地址列表中的节点都会检查该选项,可出现两次,路由报头之前和上层协议数据报文之前
(3)路由选项报头:
用于指定报文转发必须经过的中间节点,指定去往目的地走哪些节点,不在依据IGP路由
报文格式:
a) Next Header表示下一个头的协议类型
b) Hdr Ext Len表示扩展头的长度(不包含Next Header)
c) Routing Type表示路由报头类型(RFC定义为0)
d) Segments Left表示到达最终目的地还需要多少个必须的中心节点
e) Type-Specific Data根据Routing Type的值,给出相应的转发数据
(4)分段报头:
当报文超过了MTU时就需要将报文分段发送,分段发送通过分段扩展头来完成
注:IPv6报文中只能由源端进行分片
报文格式:
a) Next Header:表示下一个报文头
b) Resserved:是保留字段设为0
c) Fragment Offset:表示分段偏移量,就是只报文段在原始报文中的位置偏移量
d) Res:为保留字段设置为0
e) M flag:1表示后续还有分片报文,0表示最后一个分片报文
f) Identification:表示分段的ID
(5)认证报头:
认证扩展头用于提供IP报文的认证等功能,应用于IP安全,提供报文的验证,完整性检查。
注:在RFC2402中定义了该扩展头的具体细节
(6)封装安全净载报头:
封装净载扩展头主要应用于IP安全,提供报文验证,完整性检查和加密
注:RFC2406中定义了该扩展包头的具体细节
五. ICMPv6:
Internet Control Message Protocol for the IPv6,用于传递报文转发中产生的信息或者错误。
ICMPv6定义的报文被广泛的应用在其他协议中,包括邻居发现(Neighbor Discovery)、Path MTU发现机制等。
1. 报文格式:
ICMPv6,定义协议号为58,这个协议号被用在基本IPv6报头的Next Header字段中,指示这是一个ICMPv6数据包。IPv6认为ICMPv6数据包是一个上层协议,像TCP和UDP一样,意味着它必须被放在IPv6数据包中所有可能的扩展包之后。
注:ICMPv6分为差错报文和信息报文两大类
① Type:类型,用于表示ICMPv6报文的类型,主要有差错报文和信息报文
② Code:选项值,结合Type使用,表示详细的信息
③ Checksum:校验和
④ Message Body:信息数据
2. 差错报文:
当Type类型标识为1-127,表示此ICMPv6为差错报文。
- Type1:目的不可达错误报文,数据包无法转发到目标节点或上层协议
a) Code-0:没有到达目标的路由
b) Code=1:与目标的通信被管理策略禁止
c) Code=2:未指定
d) Code=3:地址不可达
e) Code=4:端口不可达
- Type2:数据包过大错误报文,报文超出出接口的链路MTU
a) Code=0
- Type3:时间超时错误报文,Hop Limit字段值等于0,分段充足报文超时
a) Code=0:在传输中超越了跳数限制
b) Code=1:分片重组超时
- Type4:参数错误报文,IPv6报头或者扩展报头出现错误
a) Code=0:遇到错误的报文字段
b) Code=1:遇到无法识别的Next Header类型
c) Code=2:遇到无法识别的IPv6选项
3. 信息报文:
当Type类型为128-255,表示为信息报文类型。
① PING请求应答报文:
- Type128:发送请求报文Echo Request
a) Code=0:发送目标节点
- Type129:回复应答报文 Echo Reply
- Code=0:对回送请求报文的回应
在信息报文中,使用Type类型定义了两组特殊用途的报文协议,分别为NDP邻居发现协议和多播侦听发现协议
② NDP邻居发现协议:
- Type133:路由器请求(Router solicitation)
- Type134:路由器公告(Router Advertisement)
- Type135:邻居请求(Neighbor Solicitation)
- Type136:邻居公告(Neighbor Advertisement)
- Type137:重定向(Redirect)
③ 多播侦听发现协议:
- Type130:多播听众查询
- Type131:多播听众报告
- Type132:多播听众退出
RFC2461中定义了邻居发现功能,使用ICMPv6报文可以实现其功能:
① 地址解析(相当于IPv4中的ARP)
② 重复地址检测(Duplicate Address Detect,DAD)
③ 跟踪邻居状态
④ 路由发现
⑤ 重定向
⑥ 无状态地址自动配置
⑦ 前缀重新编制
ICMPv6类型 |
消息名称 |
Type133 |
路由器请求(RS) |
Type134 |
路由器公告(RA) |
Type135 |
邻居请求(NS) |
Type136 |
邻居公告(NA) |
Type137 |
重定向消息 |
不同的NDP机制使用不同的ICMPv6新的消息:
机制 |
类型133 |
类型134 |
类型135 |
类型136 |
类型137 |
路由器请求 |
路由公告 |
邻居请求 |
邻居公告 |
重定向消息 |
|
地址解析(代替ARP) |
|
|
√ |
√ |
|
重复地址检测(DAD) |
|
|
√ |
√ |
|
路由发现(前缀公告) |
√ |
√ |
|
|
|
前缀重新编址 |
|
√ |
|
|
|
路由器重定向 |
|
|
|
|
√ |
邻居状态跟踪 |
|
|
√ |
√ |
|
(1)重复地址检测:
重复地址检测类似于免费ARP,基于ICMPv6实现,包括NS邻居请求和NA邻居通告。当路由器或设备获取IP地址后,会开始Tentative address(默认1S)计时,表示此时间段内接口无法使用此地址,并在此时间内发送重复地址检测报文。
① 邻居请求:
① Type:类型为135
② Code:为0
③ Checksum:校验和
④ Target Address:所设置的IP地址
⑤ Options:存放源端的二层Mac地址
注:当配置接口IPv6地址后,会发起接口IPv6地址重复地址检测和Link Local重复地址检测,如果先发送的为Link Local地址检测,并发现没有重复,则IPv6地址重复地址检测报文的源地址使用Link Local,如果先发送IPv6地址重复检测,则使用全0的IPv6地址
② 邻居通告:
当邻居收到邻居请求信息,检查接口IP地址,如果存在与Target Address相同的IP地址,则回复邻居通告地址,发送端收到后表明此地址冲突;如果在Tentative address时间内没有收到邻居通告报文,证明此地址无误,则会再次发送C bit没有被置位(主动发送)的NA报文,通知链路上的其他路由器表明此地址已被使用
注:华为默认不会发送C没有被置位(主动发送)的NA报文,而是直接使用此地址(2)地址解析:
(2)地址解析:
地址解析使用两种ICMPv6报文,分别为:
① 邻居请求
② 邻居通告
① 邻居请求:
Neighbor Solicitation,NS,组播报文,目标地址为被请求节点组播组地址,ICMPv6的Type为135,code为0
报文结构:
① Type:类型为135
② Code:为0
③ Checksum:校验和
④ Target Address:所请求MAc地址对应的IPv6地址
⑤ Options:存放源端的二层Mac地址
② 邻居通告:
Neighbor Advertisement,NA,单播地址,目标地址为发起请求的地址,Type为136,Code为0
报文结构:
① Type:类型为136
② Code:值为0
③ Checksum:校验和
④ R:标识位,表示发送者是否为路由器,如果1则表示是
⑤ S:标识位,表示发送邻居通告是否是响应某个邻居请求,如果1则表示是,如果主动发起为0
⑥ O:标志位,表示邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是
⑦ Target Address:表示所携带的链路层地址对应的IPv6地址
⑧ Options:发送源的二层Mac地址
注1:华为设备中置位符全部为1
注2:<Huawei>reset ipv6 neighbors all清空ipv6地址映射
注3:<Huawei>display ipv6 neighbors查看映射表
(3)跟踪邻居状态:
IPv6中存在邻居关系,当两个节点配置IP地址后并进行首次通信后,IPv6会维护此邻居状态。
注:跟踪邻居状态会跟踪单播接口地址和Link Local地址
① 邻居请求:
① Type:类型为135
② Code:为0
③ Checksum:校验和
④ Target Address:所设置的IP地址
⑤ Options:存放源端的二层Mac地址
② 邻居通告:
① Type:类型为136
② Code:值为0
③ Checksum:校验和
④ R:标识位,表示发送者是否为路由器,如果1则表示是
⑤ S:标识位,表示发送邻居通告是否是响应某个邻居请求,如果1则表示是,如果主动发起为0
⑥ O:标志位,表示邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是
⑦ Target Address:表示所携带的链路层地址对应的IPv6地址
⑧ Options:发送源的二层Mac地址
③ 邻居状态:
邻居状态分为五种:
① Empty空
② Incomplete未完成
③ Reachable可达
④ Stale陈旧
⑤ Delay延迟
⑥ Probe探查
a) Empty:
空状态,表示两端无任何通信过程,没有进行地址解析
b) Incomplete:
未完成状态,表示在做地址解析和邻居关系未完成,当一端邻居发送了NS报文但是没有收到对端的NA报文回复,处于此状态。
注:如果没有完成地址解析,默认连发3次,每次间隔1S,3次无响应后即删除此状态进入Empty状态
c) Reachable:
可达状态,邻居关系已建立,收到对端的NA报文回复后,生成映射表,进入此状态。
- 存在数据时一致存在Reachable状态
- 一直不存在数据流量,在经历Reachable-time(默认30S,可手动修改)后,进入下个状态
d) Stale:
陈旧状态,当Reachable无流量30S后,进入此状态,如果一致不存在数据流量,会一直停留此状态。如果处于此状态的路由器想要发送数据流,会立刻进入Delay状态并发送NS报文
e) Delay:
延迟状态,如果Stale状态下路由器发起了数据流量,会立刻从Stale切换到Delay状态:
- 如果收到对端的NA报文响应,进入Reachable状态进行流量的转发
- 如果无NA响应,5S后无法收到应用层的提示信息,进入Probe状态
f) Probe:
探查状态,每经过Retrains Times(默认1S,默认发送三次)发送单播NS,如果对端响应进入Reachable状态,如果没有响应进入Empty状态删除映射表型
④ 邻居状态跟踪作用:
- 确定同一链路上节点的2层地址:
例如对端接口IP地址改变或MAC地址改变,如果为IPv4无法及时检测对端的映射情况,则数据包会依旧发送给对端,如果此时使用IPv6时,使用跟踪邻居状态时,可以及时应对上述情况。
- 找到可以转发他们数据包的临近路由器
- 随时跟踪那些路由可达、路由不可达、并且检测有改变的链路层地址
(4)路由发现:
基于IGMPv6实现,发现本地链路相连的路由器,获取与地址自动配置相关的前缀和其他配置参数,包括RA和RS,用于IPv6无状态自动配置。
① 路由请求:
Router Solicitation,由主机主动发出(加快地址配置速度,主机初始化会自动发送RS报文),
① Type:类型为135
② Code:0
③ Checksum:校验和
④ Options:如果源地址为Link-Local地址,则为Mac,如果未指定则无此选项
注:源地址为Link-Local或全0地址,目标地址为FF02::2(本网段所有路由器),跳数为255
② 路由公告:
Router Advertisement ,用于回复RS报文,RS报文中包含IPv6地址或前缀信息
注1:华为默认不会发送RA报文,手工开启后默认200S发送一次,使用以下命令开启[Huawei-GigabitEthernet0/0/0]undo ipv6 nd ra
halt
注2:主动发起RA报文后,同样也会被邻居路由器收到,在邻居路由器上开启发送RS报文,便可以无状态自动配置接口IP地址
[Huawei-GigabitEthernet0/0/0]ipv6 address auto global
注3:路由器收到RA回复后,使用EUI64生成接口IPv6地址;主机(windows)收到RA回复后,使用软件随机生成IPv6地址(更加安全)
① Type:类型为136
② Code:0
③ Checksum:校验和
④ Cur Hop Limit:当前跳数
⑤ M:置位符,1表示主机可以使用有状态地址自动配置IPv6地址,默认为0 无状态自动配置
⑥ O:置位符,1表示主机可以使用有状态地址自动配置机制产生除地址以外的参数,比如DNS等,默认为0
⑦ Router Lifetime:路由生存时间
⑧ Reachable Time:可达状态时间(默认30S,可修改)
⑨ Retrains Timer: 默认1S
注:
- 源地址为发送者的Link Local地址(单播回复)或全0地址(被请求节点组播组)
- 目的地址为FF02::1(发送者为全0地址)或发送RS的主机单播地址(发送者为Link Local)
- 跳数:255(为了确保收到的发现报文来自本地链路,当接收者发现地址为254,将丢
弃该报文)
(5)重定向:
当网关路由器知道更好的转发路径时,会以重定向报文的方式告知主机
① PC1想要访问PC2,进行与运算目标地址与自己不在同一网段,将数据包发送给网关R1
② R1收到后,发现目的地址的下一跳为R2的G0/0/1接口,数据流从源接口返回
③ R1发送Type137重定向报文给PC1,告知PC1的最优下一跳路径
④ PC1再次访问PC2时,下一跳地址直接交给R2
4. PMTU:
在IPv6的网络环境中,由于分片重组信息放入IPv6扩展报头中,中间节点路由器不会检查扩展报头,所以分片与只发生在发送端,中间的路由器如果收到大于自己接口MTU的数据包,不会对数据包分片,而是直接将数据包丢弃
为了防止MTU不一致性导致数据包在传输过程中丢弃,此时使用Path MTU机制进行解决,PMTU通过ICMPv6的Packet Too Big报文完成。
注:PMTU为单项的,PMTU为路径上最小的MTU
(1)报文类型:
PMTU通过ICMPv6的Packet Too Big报文完成,Packet Too Big报文使用ICMPv6差错报文的Type2类型。
(2)PMTU原理:
① Clent1发送MTU值为1450的数据包访问Clent2
② R1收到数据包时,接口MTU大于数据包的大小,接收并转发
③ R2收到数据包大小为1450字节的数据包,由于接口MTU小于数据包的大小,丢弃,并回复Packet Too Big报文给Clent1,
④ Clent1重新发送数据包给CLent2,数据包大小为小于R2的接口MTU,例如为1400,R2收到数据包后,发送给R3
⑤ R3收到数据包后,,由于接口MTU小于数据包的大小,丢弃,并回复Packet Too Big报文给Clent1
⑥ Clent1重新发送数据包给CLent2,数据包大小为小于R3的接口MTU,例如为1300,R3收到数据包后,发送给Clent1
注1:此时Clent1便知道去往Clent2所要使用的PMTU值为多少,并缓存下来(10min)
注2:使用命令[Huawei-GigabitEthernet0/0/0]ipv6 mtu修改该IPv6数据包的MTU
注3:使用命令<Huawei>display ipv6 pathmtu all查看PMTU信息
5. 无状态自动配置:
使用NDP邻居解析中的路由发现功能,发现本地链路相连的路由器,获取与地址自动配置相关的前缀和其他配置参数,包括RA和RS。
可以实现无需进行手动配置,实现即插即用功能,减轻网络管理的负担。对主机、路由器可进行自动配置,可配置多个地址进行网络无缝迁移
(1)前缀重新编址:
在无连接状态下,接口获取到前缀并生成IPv6接口地址后,会进入以下状态机:
① Tentative: DAD过程,此状态IPv6地址不生效,发送ICMPv6重复地址检测报文检测是
否存在地址冲突
② Valid Lifetime:有效地址时间
- Preferred Lifetime:优先时间,既可以主动发起连接,也可以被动的接受连接
- Deprecated:只能被动的接受邻居的连接
③ Invalid:无效,当超过Valid Lifetime时,则进入Invalid,当接口地址到达Invalid状态后,接口地址无效,此时就需要进行前缀重新编制
为了保证数据业务不中断实现无缝迁移:
- 老地址配置可以在一段时间内被动接受连接(Deprecated time不为0);不能主动发起连接(Preferred Lifetime为0)
- 新地址配置配置被动接受连接(Deprecated time不为0);并能主动发起连接(Preferred Lifetime为0)
注:此时老地址的业务不中断,并且使用新地址主动发起连接,最终实现数据不中断实现前缀的重新编制
无缝迁移配置:
AR1:
[Huawei]ipv6
[Huawei]inter
g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address ec::0/64
[Huawei-GigabitEthernet0/0/0]undo ipv6
nd ra halt—开启发送RA报文机制
AR2:
[Huawei]ipv6
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address auto
global—–主动发起RS报文获取RA报文
AR1实现无缝迁移:
[Huawei-GigabitEthernet0/0/0]ipv6 address ed::1/64—配置新的IP地址
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra prefix ec::1/64 100 0
配置旧IPv6地址的Deprecated(被动连接)为100S,
Preferred
Lifetime(主动连接)时间为0S
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra
prefix ed::1/64 100000 100000
配置旧IPv6地址的Deprecated(被动连接)
为10000S,Preferred Lifetime(主动连
接)时间为100000S
6. 有状态自动配置:
(1)DHCPv6:
DHCPv6能够为主机分配IPv6地址以及其他网络配置参数,并能够实现这些参数的管理,可获得相对无状态配置对节点更多的控制。
① 主机发送RS报文给路由器
② 路由器收到RS报文后,回复RA报文给主机,由于配置了DHCPv6服务器,将RA报文中的M置1,表示有状态配置
③ 主机收到R1发送过来的RA报文,发现M位置1,不会使用前缀信息自动生成IPv6地址,而是发送DHCPv6 Solicit请求IPv6地址
④ 路由器收到主机发送的DHCPv6 Solicit报文后,发送DHCPv6 Advertise,里面包含了IP信息、DNS等配置
⑤ 主机收到路由器发送过来的DHCP Advertise报文,获取IP地址等上网信息,会发送DHCP REQUEST报文出去请求DHCP服务器确认。
⑥ 当路由器收到主机的DHCP REQUEST报文后,会回复DHCP ACK确认报文,允许主机使用当前地址。
DHCPv6配置:
R1:
[Huawei]dhcp enable
[Huawei]dhcpv6 pool
huawei
[Huawei-dhcpv6-pool-huawei]address
prefix ec::/64
[Huawei-dhcpv6-pool-huawei]excluded-address
ec::1
[Huawei-dhcpv6-pool-huawei]dns-server 400::1
[Huawei-dhcpv6-pool-huawei]dns-domain-name
huawei.com
[Huawei-dhcpv6-pool-huawei]inter
g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address ec::1/64
[Huawei-GigabitEthernet0/0/0]dhcp server
Huawei
[Huawei-GigabitEthernet0/0/0]ipv6 nd
autoconfig managed-address-flag-置位M位
[Huawei-GigabitEthernet0/0/0]ipv6 nd
autoconfig other-flag——-置位O位
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra halt—允许回复RA报文
六. RIPng:
RIP next generation,下一代RIP,随着IPv6网络的建设,同样需要动态路由协议为IPv6报文的转发提供准确有效的路由信息。因此,IETF在保留了RIP优点的基础上针对IPv6网络修改就形成了RIPng,RIPng主要用于IPv6网络中提供路由功能,是IPv6网络中路由技术的一个重要组成协议。
(1)RIPng特点:
① RIPng协议基于D-V(Distance Vector,距离矢量)算法的路由协议。它通过UDP报文交换路由信息,使用的端口号位521(IPv4为520)
② RIPng协议用跳数来衡量到达目的主机的距离:
- 在RIPng协议中,从一个路由器到其直连网络的跳数为0,而通过另一台路由器到达一个网络的跳数为1,以此类推
- 当跳数大于或等于16跳时,目的网络或主机被定义为不可达(有效性为15跳)
③ 为了提高性能并避免形成路由循环,RIPng即支持水平分割也支持毒性反转
④ RIPng也可以从其他的路由协议中引入路由
(2)针对原RIP的修改:
① 使用UDP的521端口
② 目的地址使用128bit的前缀长度
③ 使用128bit的IPv6地址作为下一跳地址
④ 使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文
⑤ 使用组播方式周期地发送路由信息,并使用FF02::9作为链路本地范围内的路由器组播地址
⑥ RIPng的报文由头部(Header)和多个路由表项RTs(Route Table Entry)组成
(3)RIPng报文:
RIPng报文由头部(Header)和多个路由表项(RTEs)组成。在同一个RIPng报文中,RTE的最大数目根据接口的MTU值来确定
报头部分:
① Command:定义报文的类型
- 0x01:表示Request报文
- 0x02:表示Response报文
② Version:RIPng的版本,目前其值只能为0x01
路由部分:
③ RTE:Route Table Entry,路由表项,每项的长度为20Byte,RTE的最大数目根据接口的MTU来确定
注1:只在初次交互的时候发送Request报文,后续每隔30S只发送Response报文
注2:在RIPng中,分为两类RTE:
- 下一跳RTE:
位于一组具有相同下一跳的“IPv6前缀RTE”的最前面,它定义了下一跳的IPv6地址
- IPv6前缀RTE:
位于某个“下一跳RTE”的后面,同一个“下一跳RTE”的后面可以有多个不同的“IPv6
前缀RTE”。他描述了RIPng路由表中的目的IPv6地址及开销
注3:下一跳RTE的作用:
① R2将静态IPv6路由引入RIPng传递给R1
- 下一跳RTE:ec::3
- IPv6前缀RTE:ed::1/64、ef::1/64
② R1收到路由后存放到路由表
③ R1想要去往ed::1/64网段,查看下一跳RTE,直接将数据送往ec::3,解决了次优路径的问题
注:RIP中也存在下一跳RTE选项用于解决次优路径的问题
① Request报文:
注1:只在初次交互的时候发送Request报文
注2:由于时Request报文,在RTE中的路由条目为全0
② Response报文:
注:每隔30S只发送一次Response报文
(4)RIPng路由发送过程:
(5)RIPng防环机制:
① 水平分割:
路由器从某个接口学到的路由,不会从该接口在发送给邻居路由器(设备默认开启水平分割)。
注:使用以下命令关闭水平分割:
[Huawei-GigabitEthernet0/0/0]undo ripng
split-horizon
② 路由毒化:
当一台路由器直连的网段出现问题后,路由器会发送一条RIP路由信息给邻居,将此路由条目的跳数设置为16跳不可达,当网络中的路由器收到此条路由条目后,会删除此条无效的RIP路由
③ 毒性反转:
毒性反转是指路由器从某个接口学到路由后将该路由的跳数设置为16,并从原接口发送给邻居路由器。
注1:水平分割与毒性反转互斥,默认只能配置一种,如果两种都配置,默认使用毒性反转。
注2:使用以下命令开启毒性反转:
[Huawei-GigabitEthernet0/0/0]ripng
poison-reverse
④ 触发更新:
触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文,将故障网段设置为16跳(路由毒化),经过垃圾时间120S后RTA丢弃。
(6)RIPng时间参数:
RIPng有几个可以认为调整的词能够使其参数,包括RIPng路由协议的更新、失效、抑制以及garbage收集时间
RIPng协议在更新和维护路由信息时主要使用四个定时器:
① Update timer更新定时器
② Age timer老化定时器
③ Garbage-collect timer垃圾收集定时器
④ Suppress timer 抑制定时器
使用一下命令修改各个参数:
[Huawei-ripng-1]timers ripng 10 15 1—-修改Update时间为10S,Age time为15s,垃圾收集定时器为1S
① Update timer:
更新定时器,档次定时器超时时,立即发送更新报文。默认时间为30S
② Age timer:
老化定时器,RIP设备如果在老化时间内没有收到邻居发送过来的路有更新报文,则认为路由不可达,但不会删除此条路由条目,只认为目标地址不可达。默认时间为180S。
③ Garbage-collect
timer:
垃圾收集定时器,如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从路由表中彻底删除。所以当一条路由条目从失效到删除时间为300S(180+120),默认时间为120S。
(7)RIPng配置:
① 配置IPv6地址
② 配置RIPng
R1:
[Huawei]ripng 1——开启RIPng
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ripng 1 enable
R2:
[Huawei]ripng 1——开启RIPng
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ripng 1 enable
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]ripng 1 enable
R3:
[Huawei]ripng 1——开启RIPng
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]ripng 1 enable
七. OSPFv3:
运行IPv6的OSPFv3协议,基于OSPFv2基本原理并增强,是一个独立的路由协议,协议号仍为89,Router ID仍然是一个32位的无符号整数
OSPv2和OSPv3取决去底层运行的协议类型,两者无法兼容
1. OSPFv3/OSPFv2比较:
(1)相同点:
① 网络类型和接口类型一致
② 接口状态和邻居状态机一致
③ 链路状态数据库一致
④ 洪范机制一致
⑤ 相同类型的报文:Hello报文、DD报文、LSR报文、LSU报文、LSACK报文
⑥ 路由计算基本相同
(2)不同点:
① OSPFv3基于链路,而不是网段(MA网络两端地址可以不在同一网段)
② OSPFv3移除了IP地址的意义
③ OSPFv3支持同一链路上多个进程
④ OSPFv3利用IPv6链路本地地址
⑤ OSPFv3的报文及LSA格式发生改变
⑥ OSPFv3移除所有的认证字段
⑦ OSPFv3的LSA报文里增加了LSA的洪范范围
⑧ 新增两种LSA
① 基于链路运行:
接口上可以配置多个IPv6地址,即使两端不在同一共享网段内,OSPFv3也能正常运行,在配置OSPFv3时,不需要考虑是否配置在同一个网段,只要在同一链路,就可以不配置IPv6全局地址(使用Link Local地址)而直接建立联系
③ 移除IP地址:
a)
利用IPv6的本地链路地址来传递网络拓扑信息,但是网络拓扑信息里不包含IPv6地址
b)
Router LSA和Network LSA只反映网络拓扑信息
c)
采用专门的LSA来传递IPv6的前缀信息
d)
Router ID、Area ID和LSA Link State ID仍然是IPv4地址格式(32位),不是IPv6地址
e)
邻居由邻居Router ID来标识
注:这样做的目的是为了使“拓扑与地址分类”。OSPFv3可以不依赖IPv6全局地址的配置来计算OSPFv3的拓扑结构。IPv6全局地址仅用于Vlink接口及报文的转发
④ 同一链路多实例:
在OSPF报文头中增加了Instance ID字段,实现OSPF多实例化,链接(Link)多实例化,在一条链路上可以运行多个OSPFv3协议实例
在配置OSPF进程的时候可以配置实例,相同的实例才会形成邻居关系,默认处于实例0中
注:相同实例的接口才会建立邻居,当接口实例与路由实例相同才会被传递
① 配置IPv6地址
② 配置OSPFv3并配置实例:
R1:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 1.1.1.1
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area
0 instance 1
R2:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 2.2.2.2
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area
0 instance 1
R3:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 3.3.3.3
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area
0 instance 2
R4:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 4.4.4.4
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area
0 instance 2
⑤ 利用IPv6链路本地地址:
OSPFv3是运行在IPv6上的路由协议,同样适用链路本地地址维持邻居关系,同步LSA数据库。除Vlink外的所有OSPFv3接口都使用链路本地地址作为源地址及下一跳来发送OSPFv3报文。
好处:
- 不需要配置IPv6全局地址,就可以得到OSPFv3拓扑,实现拓扑与地址分离
- 通过链路上泛洪的报文不会传到其他链路上,来减少报文不必要的泛洪来节省带宽
⑥ 报文格式的变化:
OSPv3针对OSPFv2,除了Hello报文,其他报文的内容格式基本保持不变。
OSPFv3变化:
a)
不包含Network Mask
b)
基于Link运行,不基于Subnet运行
c)
包含Interface ID信息
d)
OSPFv3中 Router LSA中包含Neighbor Interface ID
1)报文头部变化:
- 验证的变化:
OSPFv3报文头中不在包含Autype和Authentication,而依赖IPv6的扩展验证头
- 增加了实例认证字段
- 校验和(Checksum)变化:
a)
OSPFv2校验和只校验LSA,IPv4三层部分有自己的校验信息
b)
OSPFv3使用IPv6标准的CheckSum,由于IPv6中不存在校验和,所以OSPFv3报文头部中的校验和会将IPv6和LSA一起校验
a)
Version:版本,对于OSPFv2,该值为2;对于OSPFv3则是3
b)
Type:报文类型:
- 1:hello包
- 2:DD报文
- 3:LSR
- 4:LSU
- 5:LSAck
c)
Packet Length:报文长度
d)
Area ID:区域ID
e)
Checksum:校验和
f)
Instance ID:链路实例ID
g)
Reserved:保留字段,总为0
2)Hello报文的变化:
① 将OSPFv2 Hello报文中的网络掩码变为Interface ID,由于OSPF与IP地址分离,所以使用Interface ID代替接口IP进行邻居的ID描述
② 增加了Options的选项,总共为24位
注:在Hello报文、DD报文和某些LSA(Router-LSA、Network-LSA、Inter-Area-Prefix-LSA和Link-LSA)
3)LSA变化:
① 取消了Options选项
② 增大了LS Type内容:
- U位:用于处理未知类型的LSA,当接收到一条LSA无法识别时,查看U位,将此
条LSA如何处理
0 |
当做Link-Local范围的lSA处理 |
1 |
存储并泛洪LSA |
- S2、S1:组合使用表示此条LSA泛洪的范围:
S2 |
S1 |
泛洪范围 |
0 |
0 |
Link-Local范围 |
0 |
1 |
Area范围 |
1 |
0 |
AS范围 |
1 |
1 |
保留值 |
不同LSA的LS Type描述:
① 第三位用来表示传递的范围:
- 2表示区域内传递
- 4表示AS内传递
- 0表示链路传递
② 最后一位表示LSA的类型
⑦ 新增一种网络类型:
OSPFv3的接口类型有以下五种:
- 点到点(P2P)接口
- 点到多点(P2MP)接口
- 点到多点非广播(P2MP
non-broadcast)接口 - 广播(Broadcast)接口
- NBMA(Non-broadcast Multi-access)接口
2. LSA:
每种LSA都包含头部和具体内容,头部内容如下:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,每种LSA表示方式不同
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Flage:置位符
⑨ Options:选项
- OSPFv3针对OSPFv2对每条LSA中的LS ID做了修改:
LSA |
OSPPFv2 |
OSPFv3 |
Router LSA |
Router |
本地唯一的32位整数 |
Network LSA |
DR所在IPv4网段IP |
DR的接口Interface ID |
Type 4 LSA |
ASBR的Router ID |
本地唯一的32位整数 |
Type3、Type5、Type7 LSA |
IPv4网段 |
本地唯一的32位整数 |
Link-LSA |
|
所在接口的Interface ID |
Intra-Area-Prefix LSA |
|
本地唯一的32位整数 |
- Options选项含义:
选项类型 |
含义 |
V6 |
如果位0,将Router/Link将不参与IPv6路由计算 |
E |
如果位0,不支持AS External LSA泛洪 |
MC |
与多播有关 |
N |
是否在NSS区域 |
R |
是否为Active Router,如果位0,该Router不转发本地报文 |
DC |
是否支持拨号 |
(1)Router LSA:
用于描述和谁有OSPF连接关系,一台路由器为每个区域产生一个Router LSA,区域范围内泛洪,不存在任何的IP信息
- LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,本地唯一的32位整数
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Flage:置位符
⑨ Options:选项
- LSA内容:
① Link connected to:链路类型
② Metric:度量值
③ Interface ID:接口标识
④ Neighbor Interface
ID:邻居的Interface
ID
⑤ Neighbor Router ID:邻居的Router
ID
链路类型对应的邻居Router ID邻居Interface ID:
类型 |
描述 |
邻居Router ID |
邻居Interface ID |
1 |
P2P |
邻居Router ID |
邻居的Interface ID |
2 |
Trants |
DR的Router ID |
DR的Interface ID |
3 |
保留 |
|
|
4 |
虚链接 |
邻居Router ID |
邻居的Vlink Interface |
注:IPv4中的Stub Net用来表示网段信息,由于IPv6将拓扑与IP网段分离,所以取消了Stub Net类型,并将Stub Net所表达的信息放在了LSA9
(2)Network LSA:
由DR产生,描述该链路上与DR有FULL关系的所有路由器区域范围内泛洪
- LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,DR的Interface ID(对应的1类的32位整数)
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Options:选项
- LSA内容:
① Attached Router:形成Full关系的邻居Router ID
注:已无网段掩码信息
(3)Inter-Area-Prefix-LSA:
- 边界路由器(ABR)产生的第三类LSA,在Area范围内洪范
- 描述了到本区域其他区域的路由信息
- 每个Inter-Area-Prefix LSA包含一条地址前缀信息
- 该LSA中不包含Link-Local地址信息
- 使用32位整数作为Link State ID来区分相同的LSA
LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,三类表示第几条路由前缀
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
- LSA内容:
① Prefix:路由信息
(4)Inter-Area-Router LSA:
边界路由器(ABR)产生的4类LSA,在Area范围内洪范,描述了本AS内其他区域的ASBR路由信息,每个Inter-Area-Router LSA包含一个ASBR路由器信息,LSA中的能力选项(Options)与所描述的ASBR Router LSA中能力选项(Options)保持一致,使用32位整数作为Link State ID来区分相同的LSA
LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,此处为ASBR的Router-ID
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Options:选项
- LSA内容:
① Destination Router:目标ASBR的地址
另一区域的路由器想要去往外部路由,查看五类LSA,去往外部路由的ASBR的Router ID,但并不知道ASBR的Ipv6地址,此时查看四类LSA,可以得知去往ASBR的ABR地址,直接将数据包送往ABR
(5)AS-External LSA:
五类LSA,由ASBR路由产生,描述了区域外的路由信息,具有资质系统(AS)泛洪范围
- Link State ID不再是ASBR Router ID,只是来和其他AS-External-LSA区分开来
- AS-External-LSA不含有Link-Local地址信息
- 可选项:
a)
转发(Forwarding)地址
b)
Tag标签
c)
Referenced Link State ID:保留字段
LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,表示第几条路由前缀
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Flage:置位符
- LSA内容:
① Metric Type:引入类型,默认为E2
② Prefix:前缀路由
③ Prefix Options:前缀选项
④ Tag:标签值
(6)Group membership LSA:
Type-6 LSA,组成员LSA,用于OSPF组播。
(7)NSSA External LSA:
Type-7 LSA,NSSA外部LSA,它是由NSSA区域或Totally NSSA区域的NSSA ASBR产生的,用来描述NSSA区域或Totally NSSA区域所连接的AS外部路由。NSSA LSA只能出现在所属NSSA区域或Totally NSSA区域内部。
LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,本地唯一的32位整数
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Flage:置位符
- LSA内容:
① Metric Type:引入类型,默认为E2
② Prefix:前缀路由
③ Prefix Options:前缀选项
④ Tag:标签值
(8)Link LSA:
链路LSA,Type8,每个连接的链路产生一个Link LSA,只在一段链路上泛洪
作用:
① 向该链路上其他路由器通知本地的Link-Local地址,即到本地的下一跳地址
② 收集本路由器在每条链路上对应的IPv6地址,并通知该链路上其他路由器
③ 向Network LSA提供选项信息,通告链路上所有的Link-LSA,与运算操作得到的该链路上Network LSA中选项信息
注:总体作用让邻居得到本端的Link-Local地址和接口前缀地址
- LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,本路由器的Interface ID
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
⑧ Rtr Pri:Router Priority,路由优先级,该路由器在链路上的优先级
⑨ Options:选项
- LSA内容:
① Options:提供Network LSA的Options
② Link Local Address:路由器与该链路相连的接口配置的Link Local地址(Link Local地址只出现在Link LSA中)
③ Number ofPrefix:该LSA中携带了多少IPv6地址
④ Prefix:IPv6前缀
⑤ 其他:Prefix三元素
(9)Intra-Area-Prefix-LSA:
区域内部前缀LSA,Intra-Area-Prefix-LSA携带区域内IPv6 Prefix信息,用来描述一类LSA和二类LSA的网络信息
IPv6引入Intra-Area-Prefix-LSA的原因:
OSPFv2中,依附于路由器和Stub出现在Router LSA中,依附于Transit网络subnet出现在Network LSA中,OSPFv3中,Router LSA和Network LSA不在包含地址信息,所以引入Intra-Area-Prefix LSA。
- 依附于路由器(环回口)的Prefix——————类型为2001
- 依附于Stub网络的Prefix——————————类型为2003
- 依附于Transit网络的Prefix—————————类型为2002
注1:每台路由器或Transit网络可以产生多个Intra-Area-Prefix
LSA
注2:总体作用是描述一个区域内的前缀路由
LSA头部:
① LS Age :老化时间
② LS Type:LSA类型
③ Link State ID:链路状态ID,如果服务于类型1则为0.0.0.1;如果服务于类型2则为0.0.0.2
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列号
⑥ Checksum:校验和
⑦ Length:长度
- LSA内容:
① Number of Prefix:前缀路由数量
② Referenced LS Type:路由类型
- 依附于路由器(环回口)的Prefix——————类型为2001
- 依附于Stub网络的Prefix——————————类型为2003
- 依附于Transit网络的Prefix—————————类型为2002
③ Referenced Originating Router:生词路由的Router ID
④ Prefix:路由信息
3. OSPFv3常见配置:
(1)NBMA网络下单播指邻居:
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 peer router-id
1.1.1.1 FE80::2E0:FCFF:FEA1:AAD—与对端建立邻居,目标地址为对端Link Local地址
(2)虚链路配置:
[Huawei]ospfv3
[Huawei-ospfv3-1]area 1
[Huawei-ospfv3-1-area-0.0.0.1]vlink-peer ec::1
(3)OSPFv3汇总:
① 三类路由汇总:
[Huawei]ospfv3
[Huawei-ospfv3-1]ar 0
[Huawei-ospfv3-1-area-0.0.0.0]abr-summary
ec:: 64
② 五类路由汇总:
[Huawei]ospfv3
[Huawei-ospfv3-1]asbr-summary ec:: 64
(4)FR配置:
由于OSPFv3使用Link Local地址传送LSA,所以FR配置Maping映射时不仅要将IP地址和DLCI映射,还要配置将Link Local地址和DLCI映射((AR系列无法配置))
(5)认证:
OSPFv3数据包头部取消了认证字段,采用IPv6扩展包中的字段进行认证(AR系列无法配置)
八. IS-ISv6:
IS-IS最初是为OSI网络设计的一种基于链路状态算法的动态路由协议,之后为了提供IPv4的路由支持,扩展应用到IPv4网络,称为集成化IS-IS。
随着IPv6网络的建设,同样需要动态路由协议为IPv6报文的转发提供准确有效的路由信息。IS-IS路由协议结合自身具有良好的扩展性的特点,实现了IPv6网络层。
协议的支持,可以发现和生成IPv6路由,支持IPv6协议的IS-IS路由协议又称为ISISv6动态路由协议。
1. IS-ISv6的增强:
IS-ISv6在IS-IS的基础上新增了两种TLV用于支持IPv6路由,IS-IS使用TLV表示,TLV具有很强的扩展性,是其他协议无法比拟的,例如OSPFv2由于无法支持IPv6,所以需要重新编译新的OSPFv3以实现对IPv6的支持,但TLV具有很好的扩展性,所以IS-IS只需要在原来的基础上增加新的TLV就可以实现对IPv6的支持,通过TLV实现对IPv6的支持
- 236号TLV:
定义路由信息前缀、度量值等信息来说明网络的可达性
- 232号TLV:
相当于IPv4中的“IP Interface Address”TLV,只不过把原理的32比特的IPv4地址改为128比特的IPv6地址
(1)236号TLV:
IS-ISv6中的IPv6可达性TLV对应于IS-IS中的普通可达性TLV(type-length-value)和扩展可达性TLV,定义路由信息前缀、度量值等信息来说明网络的可达性
① Code: 取值为236,表示该CLV时IPv6可达性CLV
② Length:CLV长度
③ Metric:度量值,使用扩展的Metric值,取值范围为0~4261412864,大于4261412864
的IPv6可达性信息都被忽略掉
④ U:Up/Down状态标志位,用来防止路由环路,当某个路由从Level-2路由传播到Level-1
路由器时,这个位置位1,从而保证了这样的路由不会被回环
⑤ X:外部路由引入标识,取值1标识该路由是从其他协议引入的
⑥ S:当CLV中不携带Sub-CLV时,S位置在“0”否则置“1”,标识IPv6前缀后面跟随Sub-CLV
信息
⑦ Reserve:保留位
⑧ Prefix Length:该路由器可以达到的IPv6路由前缀长度
⑨ Prefix:该路由器可以到达的IPv6路由前缀
⑩ Sub-CLV/Sub-CLV Length:Sub-CLV字段以及Sub-CLV字段长度,该选项用于以后扩展用
(2)232号TLV:
相当于IPv4中的“IP Interface Address”TLV,只不过把原理的32比特的IPv4地址改为128比特的IPv6地址
① Code:取值为232,表示该CLV类型是IPv6接口地址CLV
② Length:CLV长度
③ Interface Address:使能IS-ISv6功能的接口IPv6地址,Hello报文中接口IPv6链路本地
地址,LSP报文中探入的是使能了IS-ISv6功能的非IPv6链路本地地
址,即接口的IPv6全球单播地址
④ *:表示该选项可选
2. IS-ISv6配置:
① 配置IPv6地址
② 启用IS-ISv6:
AR1:
[Huawei]isis
[Huawei-isis-1]network-entity
49.0001.0000.0000.1111.00
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]is-name AR2
[Huawei-isis-1]ipv6 enable
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]isis ipv6 enable
[Huawei]inter loo 0
[Huawei-LoopBack0]isis ipv6 enable
AR2:
[Huawei]isis
[Huawei-isis-1]network-entity
49.0001.0000.0000.2222.00
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]is-name AR2
[Huawei]inter g0/0/0
[Huawei-isis-1]ipv6 enable
[Huawei-GigabitEthernet0/0/0]isis ipv6 enable
九. BGP4+:
传统的BGP-4只能管理IPv4单播路由信息,对于使用其他网络层协议(如IPv6、组播等)的应用,在跨AS传播时就受到一定的限制。BGP多协议扩展MP-BGP(MultiProtocol BGP)就是为了提供多种网络层协议的支持,对BGP-4进行扩展。目前MP-BGP标准时RFC-4760,使用扩展属性和地址族来实现对IPv6、组播和VPN相关内容的支持,BGP协议原有的报文机制和路由机制并没有改变。
MP-BGP对IPv6单播网络的支持特性称为BGP4+,对IPv4组播网络的支持特性称为MBGP(Multicast BGP)。MP-BGP为IPv6单播网络和IPv4组播网络建立独立的拓扑结构,并将路由信息储存在独立的路由表中,保持单播IPv4网络、单播IPv6网络和组播网络之间路由信息相互隔离,也就实现了用单独的路由策略维护各自网络的路由。
1. BGP4+的增强:
为实现对多种网络协议的支持,BGP需要将网络层协议的信息反映到NLRI及Next_Hop。因此MP-BGP引入了两个新的可选非过渡路径属性
分别为:
① MP_REACH_NLRI:多协议可达NLRI,用于发布可达路由及下一跳信息,当需要将IPv6路由更新给邻居时,发送Update报文,Update报文中使用MP_REACH_NLRI信息包含所更新的路由
② MP_UNREACH_NLRI:多协议不可达NLRI,用于撤销不可达路由,当需要让邻居撤销掉IPv6路由给时,发送Update报文,Update报文中使用MP_UNREACH_NLRI信息包含所撤销的路由
2. BGP4+配置:
(1)BGP4+常规配置:
① 配置IPv6地址
② AS200内配置IGPv6路由
③ 配置EBGP:
AR5:
[Huawei]bgp 100
[Huawei-bgp]router-id 5.5.5.5
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2013::2
as-number 200—如果使用LinLocal地址,则增加connect-interface,在IBGP中,在传递使用LinkLocal建立邻居传递的路由时,自动是使用next-Hop-Local命令
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2013::2 enable
[Huawei-bgp-af-ipv6]network 2015::1 128——-宣告路由(如果为64位,只写前缀)
AR1:
[Huawei]bgp 200
[Huawei-bgp]router-id 1.1.1.1
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2013::1 as-number 100
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2013::1 enable
④ 配置IBGP:
AR1:
[Huawei]bgp 200
[Huawei-bgp]router-id 1.1.1.1
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2014::1 as-number 100
[Huawei-bgp]peer 2014::1 connect-interface
LoopBack 0
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2014::1 enable
[Huawei-bgp-af-ipv6]peer 2014::1
next-hop-local
AR2:
[Huawei]bgp 200
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer ec::1 as-number 100
[Huawei-bgp]peer ec::1 connect-interface
LoopBack 0
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer ec::1 enable
[Huawei-bgp-af-ipv6]peer ec::1
next-hop-local
(2)BGP4+RR配置:
AR2:
[Huawei]bgp 200
[Huawei-bgp-af-ipv6]reflector cluster-id
2.2.2.2
[Huawei-bgp-af-ipv6]peer 2012::2
reflect-client
[Huawei-bgp-af-ipv6]peer ed::2
reflect-client
十. IPv6组播:
一个发送者需要同时向多个接收者发送完全相同的信息时,如果采用单播方式,则网络需要传输大量的报文,相比之下,采用组播的方式可以大大减少需要传输的报文数量,从而可以节约大量的网络资源。随着Internet的不断发展,电子商务,网络会议、视频点播、远程教学等服务大量兴起,这些服务大多符合点到多点的模式,特别适合于IP组播的应用。
IPv6组播用于在IPv6网络中传递组播流量,使用PIM协议+MLD协议进行组播的传递与接收
1. IPv6组播地址:
(1)组播IP地址:
IPv6组播地址使用为FF开头的组播地址,并且Flag位为1(临时分配),Scope位为4、5、8(临时的组播地址,用于组播)
组成方式:FF(8bit)+Flag(4bit)+Scope(4bit)
- FF:前8bit固定不变,全部为1,表示为组播地址
- Flage:前3位固定为0,最后一位定义地址类型:
c)
最后一位为0,固定或众所周知的,由IANA分配
d)
最后一位为1,本地分配或短期临时,不永久分配
- Scope:表示组播组的范围
c)
2—Link-Locol,表示仅在本网段链路上传送
d)
4、5、8—临时的组播地址范围
(2)组播MAC地址:
和组播IPv4相同,IPv6组播中的MAC地址依旧采用映射的方法。
前16bit固定不变:3333
(3)动态IPv6组播地址分配:
IANA并没有规定IPv6全球组播组映射,所以运营商或者是任何机构都可以随便使用组播地址在公网中传递组播数据,但如果公网上出现了相同的组播组IP,会造成组播数据通信问题,所以此时使用了一种新的技术动态的分配IPv6组播IP,解决可能造成的组播地址冲突问题。
RFC 3306规定了一种动态分配IPv6组播地址的方式——基于单播前缀的IPv6组播地址,这种IPv6组播地址中包含了其组播源网络的单播地址前缀,通过这种方式分配全局唯一的组播地址。
① flgs:
- T:为1表示这个地址是非永久分配组播地址
- P:为1表示他是一个机遇单播前缀的IPv6组播地址
② plen:表示内嵌的单播网络前缀的确切长度
③ network prefix:表示该组播地址中内嵌的单播网络前缀
(4)内嵌RP地址的IPv6组播地址:
在组播地址中内嵌RP地址,只需要对接收到组播报文进行分析即可知道RP地址
① flgs:
- T:为1表示这个地址是非永久分配组播地址
- P:为1表示他是一个机遇单播前缀的IPv6组播地址
- R:为1表示这是一个内嵌RP地址的IPv6地址
② RIID:RP的路由器的接口ID(RP Interface ID)
③ plen:表示RP地址的确切长度
④ network prefix:表示该组播RP地址单播网络前缀
2. MLD协议:
MLD协议用于主机与最后一跳路由器进行交互,其作用是在用户主机和与其直连的组播路由器之间建立和维护组播组成员关系,实际使用的为ICMPv6报文。
用于IPv6组播中的组成员管理,基本功能和IGMP相似,使用ICMPv6消息类型(Nextheader=58)。
当前MLD有两个版本:
① MLDv1,源自于IGMPv2
② MLDv2,源自于IGMPv3
注:MLD存在扩展报头,hop-by-hop选型,使能Router处理MLD报文
(1)MLDv1:
继承了IGMPv2的工作机制,路由器发出两种类型的查询报文,主机发送报告相应。主机离开时发送离开报文。
① 查询器的选举:
当一个接收者网段内存在多台路由器,会选取其中一台作为查询器,用于成员组的查询,此时不在依据ICMPv2中选举全局接口地址小的为查询器,而是选举link
local地址小的为查询器
② Last-report选举:
和IGMPv2机制一样:
查询器周期发送Query报文探测组播组中是否还存在设备,当组播组中存在设备,收到Query的主机都会回复Report报文进行相应,首先回应的设备作为
Last-report,并在Query再次查询时,只由Last-report进行回复。
③ 普遍组/特定组查询:
和IGMPv2一致:
- 在一个组中,当普通组成员离开时,不会发送发送Leave message给路由器,因为此时last-reporter设备还在组内,所以路由器依旧要维护此组信息
- 当Last-report离开时,会发送leave message信息通知路由器,此时路由器会会进行指定组查询功能,立刻发送Qurey报文查询当前组播组内是否还存在设备,每隔一秒发送一次query(pc离开的组地址),,默认发送两次,如果无响应认为当前组播中无设备。
- 如果组播组中还存在接收源,接收源在收到特定组查询后,启动随机计时器(0~1S),计时器超时,立刻发送Report报文进行响应,最先响应的为新的Last-report。
(2)MLDv2:
对IPv6组播源做了过滤,和ICMPv3基本一致。
3. IPv6组播配置:
注:AR系列路由器不支持
① 配置接口IPv6地址
② 配置IGP路由协议
③ 运行组播路由器配置:
[Huawei]multicast ipv6 routing-enable——-开启IPv6组播功能
[Huawei]pim-ipv6——开启PIM-ipv6协议
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]pim ipv6 sm——-接口开启组播PIM协议,为SM模式
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]pim ipv6 sm——-接口开启组播PIM协议,为SM模式
④ 配置RP:
- 静态配置:
[Huawei]pim-ipv6
[Huawei-pim]static-rp ef:1
- BSRP/RP动态选举:
[Huawei]pim-ipv6
[Huawei-pim]c-bsr LoopBack 0
[Huawei-pim]c-bsr priority 100
[Huawei-pim]c-rp priority 100—设置rp优先级为100(越小越优先)
[Huawei-pim]c-rp LoopBack 0—-将Loopback0作为接口选举(越大越优先)
十一. IPv6过渡技术:
当前主流依旧为IPv4,并逐渐向IPv6过渡的趋势,所以当前网络会存在IPv4和IPv6共存的现象,所以要实现IPv4和IPv6通信,需要使用IPv6过渡技术。
1. 双栈技术:
双栈技术是IPv4向IPv6过渡的一种有效的技术。网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。单协议栈和双协议栈结构示例如图1所示。
双栈协议具有以下特点:
- 多种链路协议支持双栈:
多种链路协议(如以太网)支持双栈协议。如果链路是以太网,在以太网帧上,如果协议字段的值为0X0800,表示网络层收到的IPv4报文,如果为0X86DD,表示网络层是IPv6报文
- 多种应用协议支持双栈协议:
多种应用(如DNS/FTP/telnet等)支持双栈协议。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优选IPv6协议栈,而不是IPv4协议栈作为网络层协议
如图所示,主机向DNS服务器发送DNS请求报文,请求域名www.example.com对应的IP地址。DNS服务器将回复该域名对应的IP地址。如图所示,该IP地址可能是10.1.1.1或3ffe:yyyy::1。主机系统发送A类查询,则向DNS服务器请求对应的IPv4地址;系统发送AAAA查询,则向DNS服务器请求对应的IPv6地址。
图中Router支持双协议栈功能。如果主机访问IPv4地址为10.1.1.1的网络服务器,则可以通过Router的IPv4协议栈访问目标节点。如果主机访问IPv6地址为3ffe:yyyy::1的网络服务器,则可以通过Router的IPv6协议栈访问目标节点。
2. 隧道技术:
隧道技术(Tunnel)是一种封装技术。它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。隧道是一个虚拟的点对点的连接。一个Tunnel提供了一条使封装的数据报文能够传输的通路,并且在一个Tunnel的两端可以分别对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。隧道技术是IPv6向IPv4过渡的一个重要手段。由于IPv4地址的枯竭和IPv6的先进性,IPv4过渡为IPv6势在必行。因为IPv6与IPv4的不兼容性,所以需要对原有的IPv4设备进行替换。但是IPv4设备大量替换所需成本会非常巨大,且现网运行的业务也会中断,显然并不可行。所以,IPv4向IPv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而IPv6网络只是散落在各地的“孤岛”,IPv6 over IPv4隧道就是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。
(1)IPv6 over IPv4 隧道原理:
① 边界设备启动IPv4/IPv6双协议栈,并配置IPv6 over IPv4隧道。
② 边界设备在收到从IPv6网络侧发来的报文后,如果报文的目的地址不是自身且下一跳出③
接口为Tunnel接口,就要把收到的IPv6报文作为数据部分,加上IPv4报文头,封装成
IPv4报文。
④ 在IPv4网络中,封装后的报文被传递到对端的边界设备。
⑤ 对端边界设备对报文解封装,去掉IPv4报文头,然后将解封装后的IPv6报文发送到IPv6网络中。
(2)IPv6 over IPv4隧道分类:
① 手动隧道:
a)
IPv6 over IPv4手动隧道:
手动隧道直接把IPv6报文封装到IPv4报文中去,IPv6报文作为IPv4报文的净载荷。手动隧道的源地址和目的地址也是手工指定的,它提供了一个点到点的连接。手动隧道可以建立在两个边界路由器之间为被IPv4网络分离的IPv6网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的边界设备必须支持IPv6/IPv4双协议栈。其它设备只需实现单协议栈即可。因为手动隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手动隧道,就需要在设备上配置多个隧道,配置比较麻烦。所以手动隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。
IPv6 over IPv4手动隧道转发机制为:当隧道边界设备的IPv6侧收到一个IPv6报文后,
根据IPv6报文的目的地址查找IPv6路由转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理。
首先保证各个域中的IGP路由能够通信
在双栈协议设备上配置:
- 首先启用Tunnel隧道:
AR2:
[Huawei]inter Tunnel 0/0/100——新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol
ipv6-ipv4——–隧道协议为IPv6到IPv4
[Huawei-Tunnel0/0/100]source 192.168.1.1—————-源地址(可用环回口地址增强冗余)
[Huawei-Tunnel0/0/100]destination
192.168.1.2——-目标地址(英文看准确,不是备注的英文)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address
2015::1/64———–配置隧道地址为2015::1/64
AR3:
[Huawei]inter Tunnel 0/0/100——新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol
ipv6-ipv4——–隧道协议为IPv6到IPv4
[Huawei-Tunnel0/0/100]source 192.168.1.2—————源地址(可用环回口地址增强冗余)
[Huawei-Tunnel0/0/100]destination
192.168.1.1——-目标地址(英文看准确,不是备注的英文)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address 2015::2/64———–配置隧道地址为2015::2/64
- 将隧道加入到IPv6域IGP协议中:
AR2:
[Huawei]inter Tunnel 0/0/100
[Huawei-Tunnel0/0/100]ospfv3 1 ar 0
AR3:
[Huawei]inter Tunnel 0/0/100
[Huawei-Tunnel0/0/100]ospfv3 1 ar 0
b)
IPv6 over IPv4 GRE隧道:
与手动隧道基本一致,在IPv4和IPv6中间增加了GRE报文字段
② 自动隧道:
自动隧道中,用户仅需要配置设备隧道的起点,隧道的终点由设备自动生成。为了使设备能够自动产生终点,隧道接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式。设备从IPv6报文中的目的IPv6地址中解析出IPv4地址,然后以这个IPv4地址代表的节点作为隧道的终点。
根据IPv6报文封装的不同,自动隧道又可以分为IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道三种。
a)
IPv4兼容IPv6自动隧道
IPv4兼容IPv6自动隧道,其承载的IPv6报文的目的地址(即自动隧道所使用的特殊地址)是IPv4兼容IPv6地址。IPv4兼容IPv6地址的前96位全部为0,后32位为IPv4地址。
需要经过Router A发给Router B的IPv6报文到达Router A后,以目的地址::2.1.1.1查找IPv6路由,发现路由的下一跳为虚拟的Tunnel口。由于Router A上的配置的隧道的类型是IPv4兼容IPv6自动隧道。于是Router A对IPv6报文进行了封装。封装的时候,IPv6报文被封装为IPv4报文,IPv4报文中的源地址为隧道的起始点地址1.1.1.1,而目IP地址直接从IPv4兼容IPv6地址::2.1.1.1的后32位拷贝过来即2.1.1.1。这个报文被路由器从隧道口发出后,在IPv4的网络中被路由转发到目的地2.1.1.1,也就是Router B。Router B收到报文后,进行解封装,把其中的IPv6报文取出,送给IPv6协议栈进行处理。Router B返回Router A的报文也是按照这个过程来进行的。
注:如果IPv4兼容IPv6地址中的IPv4地址是广播地址、组播地址、网络广播地址、出接口的子网广播地址、全0地址、环回地址,则该IPv6报文被丢弃,不会进行隧道封装处理。
AR2:
[Huawei]inter Tunnel 0/0/100——新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol
ipv6-ipv4 auto-tunnel——协议为IPv6到IPv4自动隧道
[Huawei-Tunnel0/0/100]source 192.168.1.1—————-源地址(无需配置目标地址)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6
address ::192.168.1.2/96—————–配置隧道地址后32位必须为对端的IPv4地址
[Huawei]ipv6 route-static :: 0 ::192.168.1.2—-配置缺省路由,此时缺省的下一跳封装tunnel头为192.168.1.2
R3:
[Huawei]inter Tunnel 0/0/100——新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol
ipv6-ipv4 auto-tunnel——协议为IPv6到IPv4自动隧道
[Huawei-Tunnel0/0/100]source 192.168.1.2—————源地址(无需配置目标地址)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address
::192.168.1.1/96—————–配置隧道地址后32位必须为对端的IPv4地址
[Huawei]ipv6 route-static :: 0 ::192.168.1.1—-配置缺省路由,此时缺省的下一跳封装tunnel头为192.168.1.1
- 配置完隧道之后,双栈路由器会自动生成一条路由,目标网段为隧道IPv4兼容IPv6地址,下一跳为Tunnel隧道,只有存在这条路由,在访问对端IPv4兼容IPv6地址时,才会使用IPv4兼容IPv6自动隧道技术,封装新的IPv4头部
- AR2 Tunnel隧道 IPv6地址::192.168.1.1访问AR3的Tunnel隧道IPv6地址::192.168.2.2,根据IPv4兼容IPv6地址,AR2得知去往::192.168.2.2的外层IPv4目标地址为192.168.2.2,源IPv4 Source地址192.168.1.1,查找IPv4路由表,将数据包传递给AR2,所以可以根据目标IPv4兼容IPv6地址得出目的IPv4地址
- Client1生成数据包,目标地址为2013::1,传递给AR1,AR1上配置IPv6默认路由下一跳为AR2
- AR2收到数据包后,设备上配置静态路由,下一跳地址为::192.168.1.2,如果双栈路由器收到的数据包的目标IPv6地址并不是一个IPv4兼容IPv6地址,那么外层IPv4报头封装的目标地址为默认路由下一跳(IPv4兼容IPv6地址)转换的IPv4地址
- AR2的默认路由下一跳地址为::192.168.1.2,是一个IPv4兼容IPv6地址,转换的IPv4地址为192.168.1.2,所以外层报头的目标地址为192.168.1.2,送给AR2
- AR2收到数据包后,拆掉外层报头,IPv6目标地址为2013::1,将数据包送给Client2
注:兼容隧道只能实现端到端的通信,孤岛到孤岛的通信无法实现
b)
6to4隧道:
6to4隧道也属于一种自动隧道,隧道也是使用内嵌在IPv6地址中的IPv4地址建立的。与IPv4
兼容自动隧道不同,6to4自动隧道支持Router到Router、Host到Router、Router到Host、
Host到Host。这是因为6to4地址是用IPv4地址做为网络标识
- FP:可聚合全球单播地址的格式前缀(Format Prefix),其值为001。
- TLA:顶级聚合标识符(Top Level Aggregator),其值为0x0002。
- SLA:站点级聚合标识符(Site Level Aggregator)。
注:孤岛中的设备IPv6地址规划有要求,其前缀前16bit必须为2002,后32bit为当前站点
6to4前缀地址为2002::/16,在其后面增加32bit的隧道源地址,得到2002:IPv4地址::/48。6to4地址的网络前缀长度为64bit,其中前48bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变,而后16位(SLA)是由用户自己定义的。
6to4隧道详解:
6to4隧道部署时,孤岛中的IPv6地址前缀中必须包含当前双栈路由器的出接口IP,这样在对端访问时,生成的IPv6数据包直接可以得知当前的目标IPv4地址。
- 当前右侧孤岛中的接口IP地址为192.186.1.1,所以当中的设备所属的IPv6前缀为2002:192.168.1.1(转16进制)
- 左侧孤岛访问目标网络时,目标地址为IPv6地址,格式为2002:192.168.1.1加主机地址,所以此时双栈路由器可以直接根据目标IPv6地址查找到响应的对端IPv4路由
中继网络:
- 在已经部署好的孤岛网络实现6to4通信,但是孤岛中的路由器并不是2002::+IPv4地址
- 如果6to4网络2中的主机要与IPv6网络互通,在其边界路由器上配置路由指向的下一跳为6to4中继路由器的6to4地址
- 中继路由器的6to4地址是与中继路由器的6to4隧道的源地址相匹配的。
- 6to4网络2中去往普通IPv6网络的报文都会按照路由表指示的下一跳发送到6to4中继路由器。
- 6to4中继路由器再将此报文转发到纯IPv6网络中去。当报文返回时,6to4中继路由器根据返回报文的目的地址(为6to4地址)进行IPv4报文头封装,数据就能够顺利到达6to4网络中了。
c)
ISATAP隧道:
ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种自动隧道技术。ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。其接口标识符格式如图10所示:
如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE群体/个体标志。由于ISATAP是通过接口标识来表现的,所以,ISATAP地址有全局单播地址、链路本地地址、ULA地址、组播地址等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。
ISATAP过渡机制允许在现有的IPv4网络内部署IPv6,该技术简单而且扩展性很好,可以用于本地站点的过渡。ISATAP支持IPv6站点本地路由和全局IPv6路由域,以及自动IPv6隧道。ISATAP同时还可以与NAT结合,从而可以使用站点内部非全局唯一的IPv4地址。典型的ISATAP隧道应用是在站点内部,所以,其内嵌的IPv4地址不需要是全局唯一的。
图11为ISATAP隧道一个典型应用场景:
如上图所示,在IPv4网络内部有两个双栈主机Host B和Host C,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:
- 首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
- 根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
- 进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
- 当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。