昨天聊了聊了IPv6的邻居发现协议
今天来了了IPv6的三种路由协议
静态路由
IPv6路由表如图所示:
在IPv4里面,动态路由的下一跳是对端地址。但是在IPv6里面做了相应的改变,IPv6里面除了有接口上的IPv6地址,还有链路本地地址,链路本地地址是由接口MAC地址经过EUI-64算法得出的,其地址是固定的。那为什么不用接口的IPv6地址呢,因为接口上的全局IP地址是可能发生变化的,所以使用固定不变的链路本地地址增加了路由表的稳定性。
IPv6的静态路由也没有没有多少改变,IPv6下一跳地址为IPv6地址
RIP
在IPv6里,RIP变为RIPng(next generation),是RIP协议针对IPv6网络做的修改和增强。它做了如下改变:
- UDP端口号:521
- 组播地址:FF02::9
- 前缀长度:目的地址使用IPv6的前缀长度
- 下一跳地址:使用128b(16字节)的IPv6地址
- 源地址:使用链路本地地址FE80::/10
RIPng的工作机制和RIP基本上无区别
在IPv6里面不需要使用 network将网段宣告,只需要在指定的网络接口上时能RIPng。如下:
【RTA-G0/1】ripng 1 enable
注:在IPv6中,路由器会默认开启对RA信息发布的抑制,如果需要让PC自动获取IPv6地址,就需要收到取消抑制
OSPF
在IPv4中,OSPF使用v2版本,随着IPv6的发展,OSPF也更新到了OSPFv3。如下为V3和V2版本的比较:
相同点:
- 使用相同的SPF算法,根据开销决定路径
- 区域和Router ID概念没有变化,仍然采用32b
- 相同的邻居发现机制和邻居形成机制
- 相同的LSA扩散机制(洪泛)和老化机制
不同点:
- OSPFv3是基于链路运行的,OSPFv2是基于网段运行的。在一条链路上可以由多个IPv6子网,OSPFv2版本的子网和网段的概念都被OSPFv3版本的链路所取代。由于OSPFv3不受网段限制,所以两个具有不同前缀的节点也能建立邻居关系(在OSPFv2版本中只能是同网段的节点才能建立邻居关系)。
- OSPFv3在协议报文中添加了Instance ID字段,用于标记不同的实例。OSPFv3在一条链路上可以运行多个实例,路由器在接收到报文时,对该字段进行判断,只有报文是实例号和接口配置中的实例号相匹配,报文才会被处理,否则丢弃。
- OSPFv3通过Router ID来表示邻接的邻居。(有人说在OSPFv2中也是通过Router ID来表示邻接的邻居啊,这又有什么区别呢?)在OSPFv2版本中,Router ID和IP地址是相关联的,但是OSPFv3中Router ID和IP地址并无关系,采用独立的32b标识。(当然有区别啊,别人都独立了,独立不香嘛)。所以在OSPFv3版本中,OSPF协议可以独立于网络层运行,大大提高协议的拓展性
- OSPFv3取消的报文中的验证。那么是否就代表OSPFv3不够安全呢,其实不是呢,因为IPv6相比IPv4更加安全(底层更安全,何必采取多的验证呢)。IPv6的拓展头部中AH和ESP用来保证报文的完整性和机密性(IPSec中的两种通信保护协议)。
- 增加了两种LSA。Link-LSA和Intra-Area-Prefox-LSA。前者是用于为每一条链路生成一条LSA,只会在本地链路范围内传播。后者是用于描述路由上IPv6前缀消息的