From: http://blog.sina.com.cn/s/blog_61bd83dc0100la2u.html
OSPFv3与OSPFv2协议的比较
OSPF是一种链路状态路由协议。它具有标准开放、收敛迅速、无环路、便于层级化设计等众多优点。IPv4网络中广泛使用的OSPFv2协议由于在报文内 容、运行机制等方面与IPv4地址联系得过于紧密,大大制约了它的可扩展性和适应性。在IPv6环境中,为了使OSPF更好的应用,同时保留原有的众多优 点,因此,在OSPFv2的基础上作了多方面的修改后产生了OSPFv3协议。
OSPFv3相比OSPFv2作出的改进可以分为几个方面来描述。
1. OSPFv3独立于网络协议
1) OSPFv3基于链路运行
OSPFv2协议是基于子网运行的,邻居之间形成邻接关系的必要条件之一就是两端的IP地址属于同一网段而且掩码相同。而OSPFv3协议基于链路运行,与具体的IPv6地址、前缀分离开,即使同一链路上的不同节点具有不同网段的IPv6地址时,协议也可以正常运行。
能否直接在v2上修改,使其也不基于子网运行。
2) 编址性语义的取消
在OSPFv2中,协议分组和LSA中的许多字段都是来自于网络上的某个IP地址、掩码或某个IP子网号。报文的数据内容决定了OSPFv2的多种机制必须基于IPv4来进行,包括邻居路由器标识、邻居建立等等。
在OSPFv3中取消了这些编址性语义,而只保留协议运行必须的核心内容。比如,Router-LSA和Network-LSA中不再包含网络地址,而只用于传递拓扑信息;LSA的Link State ID依然保留32位长度的IPv4地址格式,但只是一个编号,不再包含地址信息;邻居路由器,包括DR和BDR,都是用Router ID来标识。这些保证了OSPFv3协议能够独立于网络协议运行。
3) 链路本地地址的使用
OSPFv2协议要求,每一个运行OSPF的接口都必须有一个全局的IPv4地址,即使是在网络中仅仅用于传输转发的中间节点也必须如此,协议的运行和路 由的计算都依赖于这个地址。而在IPv6中,每个接口都会分配本地链路地址(link-local address),这个地址只在本地链路有效,并不会在整个网络中传播。OSPFv3使用这个本地链路地址作为协议分组发送的源地址(虚连接除外)和路由 的下一跳,在网络规划时就不需要在大量的中间节点规划子网,同样也不需要专门配置IPv6地址。这样,一方面可以节省大量的全局地址,另一方面可以说协议 的运行独立于IPv6,可以方便的对协议进行扩展,实现组播选路等其他的功能。