4.1. Protocol Data Structures (协议数据结构)
IPv4 和 IPv6 的主要 OSPF 数据结构是相同的: 区域 (Areas)、接口 (Interfaces)、邻居 (Neighbors)、链路状态数据库 (Link-State Database) 和路由表 (Routing Table). IPv6 的顶层数据结构保持 [OSPFV2] 第 5 节中列出的那些, 具有以下修改:
- 所有具有已知 LS 类型和 AS 泛洪范围 (AS Flooding Scope) 的 LSA 都出现在顶层数据结构中, 而不是属于特定区域或链路. AS 外部 LSA (AS-External-LSAs) 是本规范定义的唯一具有 AS 泛洪范围的 LSA. 具有未知 LS 类型、U 位设置为 1 (即使无法识别也泛洪) 且 AS 泛洪范围的 LSA 也出现在顶层数据结构中.
4.1.1. The Area Data Structure (区域数据结构)
IPv6 区域数据结构包含 [OSPFV2] 第 6 节中为 IPv4 区域定义的所有元素. 此外, 所有具有区域泛洪范围 (Area Flooding Scope) 的已知类型的 LSA 都包含在 IPv6 区域数据结构中. 这始终包括以下 LSA 类型: 路由器-LSA (Router-LSAs)、网络-LSA (Network-LSAs)、区域间前缀-LSA (Inter-Area-Prefix-LSAs)、区域间路由器-LSA (Inter-Area-Router-LSAs) 和区域内前缀-LSA (Intra-Area-Prefix-LSAs). 具有未知 LS 类型、U 位设置为 1 (即使无法识别也泛洪) 且区域范围的 LSA 也出现在区域数据结构中. NSSA-LSA 也包含在 NSSA 区域的数据结构中.
4.1.2. The Interface Data Structure (接口数据结构)
在 IPv6 的 OSPF 中, 接口将路由器连接到链路. IPv6 接口结构修改了 IPv4 接口结构 (如 [OSPFV2] 第 9 节中定义的), 如下所示:
Interface ID (接口 ID)
为每个接口分配一个接口 ID, 它在路由器内唯一标识该接口. 例如, 某些实现可以使用 MIB-II IfIndex ([INTFMIB]) 作为接口 ID. 接口 ID 出现在从接口发送的 Hello 数据包中、路由器为连接的链路发起的链路本地 LSA (Link-Local-LSA) 中, 以及路由器为关联区域发起的路由器-LSA 中. 如果路由器被选为指定路由器, 它还将作为路由器为链路发起的网络-LSA 的链路状态 ID (Link State ID).
虚拟链路 (Virtual Link) 的接口 ID 独立于它在传输区域 (Transit Area) 中穿越的出站接口的接口 ID.
Instance ID (实例 ID)
为每个接口分配一个实例 ID. 默认值应为 0. 只有在那些将包含多个独立的 OSPF 路由器社区的链路上才需要分配 0 以外的值. 例如, 假设在给定的以太网段上有两个路由器社区, 您希望保持它们分离.
第一个社区被分配实例 ID 0, 第一个社区中的所有路由器将被分配 0 作为连接到以太网段的接口的实例 ID. 实例 ID 1 被分配给连接到以太网段的其他路由器的接口. OSPF 发送和接收处理 (参见第 4.2 节) 将使这两个社区保持分离.
List of LSAs with link-local scope (具有链路本地范围的 LSA 列表)
所有在链路上发起/泛洪的具有链路本地范围 (Link-Local Scope) 的 LSA 都属于连接到链路的接口结构. 这包括链路的链路-LSA (Link-LSAs) 集合.
IP interface address (IP 接口地址)
对于 IPv6, 出现在接口上发送的 OSPF 数据包源地址中的 IPv6 地址几乎总是链路本地地址 (Link-Local Address). 唯一的例外是虚拟链路必须使用路由器自己的全局 IPv6 地址之一作为 IP 接口地址.
List of link prefixes (链路前缀列表)
可以为连接的链路配置 IPv6 前缀列表. 这些将由路由器在链路-LSA 中通告, 以便链路的指定路由器可以在区域内前缀-LSA (Intra-Area-Prefix-LSAs) 中通告它们.
在 IPv6 的 OSPF 中, 每个路由器接口都有一个表示在接口上发送数据包成本的单个度量值 (Metric). 此外, IPv6 的 OSPF 依赖于 IP 认证头 (IP Authentication Header, 参见 [IPAUTH]) 和 IP 封装安全有效载荷 (IP Encapsulating Security Payload, 参见 [IPESP]), 如 [OSPFV3-AUTH] 中所述, 以确保路由交换的完整性和认证/机密性. 因此, AuType 和认证密钥不与 IPv6 OSPF 接口关联.
接口状态、事件和接口状态机与 IPv4 保持不变, 分别在 [OSPFV2] 的第 9.1、9.2 和 9.3 节中记录. 指定路由器和备份指定路由器选举算法也与 [OSPFV2] 第 9.4 节中的 IPv4 选举保持不变.
4.1.3. The Neighbor Data Structure (邻居数据结构)
邻居结构在 IPv6 和 IPv4 中执行相同的功能. 即, 它收集在两个路由器之间形成邻接关系所需的所有信息, 当这样的邻接关系变得必要时. 每个邻居结构都绑定到单个 OSPF 接口. IPv6 邻居结构与 [OSPFV2] 第 10 节中为 IPv4 定义的邻居结构之间的差异是:
Neighbor's Interface ID (邻居的接口 ID)
邻居在其 Hello 数据包中通告的接口 ID 必须记录在邻居结构中. 当 a) 通告到邻居的点对点或点对多点链路时, 或 b) 通告到邻居已成为指定路由器的网络的链路时, 路由器将在路由器的路由器-LSA 中包含邻居的接口 ID.
Neighbor IP address (邻居 IP 地址)
邻居的 IPv6 地址, 包含在 IPv6 的 OSPF 数据包的源地址中. 对于除虚拟链路之外的所有链路类型, 这将是 IPv6 链路本地地址.
Neighbor's Designated Router (邻居的指定路由器)
邻居对指定路由器的选择现在编码为路由器 ID (Router ID) 而不是 IP 地址.
Neighbor's Backup Designated Router (邻居的备份指定路由器)
邻居对备份指定路由器的选择现在编码为路由器 ID 而不是 IP 地址.
邻居状态、事件和邻居状态机与 IPv4 保持不变, 分别在 [OSPFV2] 的第 10.1、10.2 和 10.3 节中记录. 关于形成哪些邻接关系的决策也与 [OSPFV2] 第 10.4 节中记录的 IPv4 逻辑保持不变.