Appendix D. 认证 (Authentication)
C. 可配置常量 (Configurable Constants)
OSPF 协议有相当多可配置参数. 这些参数列在下面. 它们按一般功能类别分组, 例如区域参数、接口参数等. 某些参数给出了示例值.
某些参数设置需要在路由器组之间保持一致. 例如, 一个区域中的所有路由器必须就该区域的参数达成一致, 连接到一个网络的所有路由器必须就该网络的 IP 网络号和掩码达成一致.
某些参数可能由本规范之外的路由器算法决定, 例如通过 SLIP 线路连接到路由器的主机地址. 从 OSPF 角度看, 这些项目仍然是可配置的.
C.1 全局参数 (Global parameters)
一般而言, 每个区域运行一份独立的 OSPF 协议副本. 因此, 大多数配置参数都按区域定义. 少数全局配置参数列在下面.
Router ID
这是一个 32 位编号, 在 Autonomous System 内唯一标识路由器. 一种 Router ID 分配算法是选择分配给路由器的最大或最小 IP 地址. 如果路由器的 OSPF Router ID 发生变化, 在新的 Router ID 生效前应重启路由器的 OSPF 软件. 为更改 Router ID 而重启之前, 路由器应从路由域中清除自己产生的 LSA (见 Section 14.1), 否则它们会持续最多 MaxAge 分钟.
RFC1583Compatibility
控制 Section 16.4 中在多个 AS-external-LSAs 通告同一目的地时使用的偏好规则. 设置为 "enabled" 时, 偏好规则仍为 RFC 1583 ([Ref9]) 指定的规则. 设置为 "disabled" 时, 偏好规则为 Section 16.4.1 所述规则, 这些规则可防止同一目的地的 AS-external-LSAs 从不同区域产生时形成路由环路. 默认设置为 "enabled".
为尽量减少路由环路可能性, 一个 OSPF 路由域中的所有 OSPF 路由器都应把 RFC1583Compatibility 设置为相同值. 当存在尚未更新以支持本备忘录 Section 16.4.1 所指定功能的路由器时, 所有路由器都应将 RFC1583Compatibility 设置为 "enabled". 否则, 所有路由器都应将 RFC1583Compatibility 设置为 "disabled", 以防止所有路由环路.
C.2 区域参数 (Area parameters)
属于一个区域的所有路由器必须就该区域的配置达成一致. 两台路由器之间的不一致会导致它们无法形成邻接关系, 从而阻碍路由协议和数据流量的流动. 以下项目必须为区域配置:
Area ID
这是标识区域的 32 位编号. Area ID 0.0.0.0 保留给 backbone. 如果该区域表示一个子网化网络, 则可使用该子网化网络的 IP 网络号作为 Area ID.
List of address ranges
OSPF 区域定义为地址范围列表. 每个地址范围由以下项目组成:
[IP address, mask]
描述该地址范围包含的 IP 地址集合. 网络和主机是否分配给某个区域取决于其地址是否落入该区域的某个定义地址范围. 路由器则根据其连接网络的区域归属, 被视为属于多个区域.
Status 设置为 Advertise 或 DoNotAdvertise. 路由信息在区域边界处被压缩. 对区域外部来说, 每个地址范围最多通告一条路由 (通过 summary-LSA). 当且仅当该地址范围的 Status 设置为 Advertise 时才通告该路由. 未通告的范围允许有意向其他区域隐藏某些网络的存在. Status 默认设置为 Advertise.
例如, 假设一个 IP 子网化网络要成为自己的 OSPF 区域. 该区域将配置为单个地址范围, 其 IP 地址是该子网化网络的地址, 掩码是自然 class A, B 或 C 地址掩码. 将向区域外部通告一条路由, 描述整个子网化网络.
ExternalRoutingCapability
AS-external-LSAs 是否会被泛洪进入/遍及该区域. 如果 AS-external-LSAs 被排除在区域之外, 该区域称为 "stub". 在 stub 区域内部, 到外部目的地的路由将完全基于默认 summary route. backbone 不能配置为 stub area. 此外, 虚链路不能通过 stub areas 配置. 更多信息见 Section 3.6.
StubDefaultCost
如果该区域已配置为 stub area, 且路由器自身是 area border router, 则 StubDefaultCost 指示路由器应通告到该区域中的默认 summary-LSA 的代价.
C.3 路由器接口参数 (Router interface parameters)
某些可配置路由器接口参数, 例如 IP 接口地址和子网掩码, 实际上隐含了所连接网络的属性, 因此必须在连接到该网络的所有路由器之间保持一致. 必须为路由器接口配置的参数如下:
IP interface address
此接口的 IP 协议地址. 它在整个 internet 中唯一标识该路由器. 点到点网络不要求 IP 地址. 这样的点到点网络称为 "unnumbered".
IP interface mask
也称为 subnet/network mask, 它指示 IP 接口地址中标识所连接网络的部分. 将 IP 接口地址与 IP interface mask 相与会得到所连接网络的 IP 网络号. 在点到点网络和虚链路上, IP interface mask 未定义. 在这些网络上, 链路本身不分配 IP 网络号, 因而链路两端的地址是独立分配的, 如果有分配的话.
Area ID
所连接网络所属的 OSPF 区域.
Interface output cost
在接口上发送报文的代价, 以链路状态度量表示. 这在路由器的 router-LSA 中作为该接口的链路代价通告. Interface output cost 必须始终大于 0.
RxmtInterval
属于该接口的邻接关系进行 LSA 重传之间的秒数. 重传 Database Description 和 Link State Request Packets 时也使用该值. 它应显著大于所连接网络上任意两台路由器之间的预期往返时延. 该值应保守设置, 否则会导致不必要重传. 局域网示例值: 5 秒.
InfTransDelay
通过此接口传输 Link State Update Packet 所需秒数的估计值. 更新报文中包含的 LSA 在传输前必须将其 age 增加该值. 该值应考虑接口的传输和传播时延. 它必须大于 0. 局域网示例值: 1 秒.
Router Priority
一个 8 位无符号整数. 当连接到某个网络的两台路由器都尝试成为 Designated Router 时, Router Priority 最高者优先. 如果仍然平局, Router ID 最高者优先. Router Priority 设置为 0 的路由器没有资格成为所连接网络上的 Designated Router. Router Priority 只为连接到广播网络和 NBMA 网络的接口配置.
HelloInterval
路由器在接口上发送 Hello Packets 的时间间隔, 以秒为单位. 该值在路由器的 Hello Packets 中通告. 对连接到同一公共网络的所有路由器, 该值必须相同. HelloInterval 越小, 拓扑变化检测越快; 但会产生更多 OSPF 路由协议流量. X.25 PDN 网络示例值: 30 秒. 局域网示例值: 10 秒.
RouterDeadInterval
停止听到某路由器的 Hello Packets 之后, 其邻居声明该路由器 down 前等待的秒数. 这也在路由器 Hello Packets 的 RouterDeadInterval 字段中通告. 该值应为 HelloInterval 的某个倍数 (例如 4). 对连接到同一公共网络的所有路由器, 该值同样必须相同.
AuType
标识在所连接网络上使用的认证过程. 对连接到该网络的所有路由器, 该值必须相同. 已定义认证类型的讨论见 Appendix D.
Authentication key
该配置数据允许认证过程验证通过接口收到的 OSPF 协议报文. 例如, 如果 AuType 指示 simple password, 则 Authentication key 将是明文 64 位 password. 与其他 OSPF 认证类型关联的 Authentication keys 在 Appendix D 中讨论.
C.4 虚链路参数 (Virtual link parameters)
虚链路用于恢复/增强 backbone 的连通性. 虚链路可以配置在任意一对 area border routers 之间, 前提是它们都有到同一公共非 backbone 区域的接口. 虚链路在 backbone 图中表现为一条未编号点到点链路. 虚链路必须在两台 area border routers 中都配置.
虚链路在 (backbone 的) router-LSAs 中表现得像是通往 backbone 的一个独立路由器接口. 因此, 它具有与路由器接口关联的所有参数 (见 Section C.3). 尽管虚链路表现得像未编号点到点链路, 它确实有关联的 IP 接口地址. 该地址在虚链路上发送的 OSPF 协议报文中用作 IP 源地址, 并在路由表构建过程中动态设置. Interface output cost 在虚链路上也动态设置为两台路由器之间 intra-area path 的代价. 参数 RxmtInterval 必须配置, 并应显著大于两台路由器之间的预期往返时延. 对虚链路来说这可能难以估计; 宁可把它设得过大.
虚链路由以下两个可配置参数定义: 虚链路另一端点的 Router ID, 以及虚链路经过的非 backbone 区域, 称为该虚链路的 Transit area. 虚链路不能通过 stub areas 配置.
C.5 NBMA 网络参数 (NBMA network parameters)
OSPF 处理 NBMA 网络的方式很像处理广播网络. 由于网络上可能连接许多路由器, 会为该网络选择一个 Designated Router. 然后该 Designated Router 产生 network-LSA, 列出连接到该 NBMA 网络的所有路由器.
但是, 由于缺乏广播能力, 在 Designated Router 选择中可能需要使用配置参数. 这些参数只需要在自身有资格成为 Designated Router 的路由器中配置, 即该网络上的 Router Priority 非零的路由器, 并且只有在不存在自动发现邻居的过程时才需要:
List of all other attached routers
连接到该 NBMA 网络的所有其他路由器列表. 每台路由器按其在该网络上的 IP 接口地址列出. 此外, 对列出的每台路由器, 必须定义该路由器成为 Designated Router 的资格. 当通往 NBMA 网络的接口上线时, 在发现 Designated Router 身份之前, 路由器只向有资格成为 Designated Router 的邻居发送 Hello Packets.
PollInterval
如果相邻路由器已变为 inactive (RouterDeadInterval 秒内未看到 Hello Packets), 可能仍需要向该 dead neighbor 发送 Hello Packets. 这些 Hello Packets 将以降低后的速率 PollInterval 发送, 该值应远大于 HelloInterval. PDN X.25 网络示例值: 2 分钟.
C.6 Point-to-MultiPoint 网络参数 (Point-to-MultiPoint network parameters)
在 Point-to-MultiPoint 网络上, 可能需要配置可通过该 Point-to-MultiPoint 网络直接到达的邻居集合. 每个邻居由其在 Point-to-MultiPoint 网络上的 IP 地址标识. Point-to-MultiPoint 网络上不选举 Designated Router, 因此已配置邻居的 Designated Router 资格未定义.
或者, Point-to-MultiPoint 网络上的邻居可以由 Inverse ARP ([Ref14]) 等低层协议动态发现.
C.7 主机路由参数 (Host route parameters)
Host routes 在 router-LSAs 中作为掩码为 0xffffffff 的 stub networks 通告. 它们表示到点到点网络的路由器接口、looped router interfaces, 或直接连接到路由器的 IP hosts, 例如通过 SLIP 线路连接. 对每个直接连接到路由器的主机, 必须配置以下项目:
Host IP address
主机的 IP 地址.
Cost of link to host
向该主机发送报文的代价, 以链路状态度量表示. 不过, 由于该主机很可能只有一个到 internet 的连接, 在许多情况下实际配置代价并不重要, 即不会影响路由.
Area ID
主机所属的 OSPF 区域.
D. 认证 (Authentication)
所有 OSPF 协议交换都经过认证. OSPF 报文头部 (见 Section A.3.1) 包含一个认证类型字段, 以及供相应认证方案使用的 64 位数据, 该方案由类型字段决定.
认证类型可按接口配置, 或等价地按网络/子网配置. 额外认证数据也可按接口配置.
本规范定义认证类型 0, 1 和 2. 所有其他认证类型保留给 IANA ([email protected]) 定义. 当前认证类型列表见下面的 Table 20.
AuType Description
___________________________________________
0 Null authentication
1 Simple password
2 Cryptographic authentication
All others Reserved for assignment by the
IANA ([email protected])
Table 20: OSPF 认证类型.
D.1 Null authentication
使用这种认证类型意味着网络/子网上的路由交换不经过认证. OSPF 头部中的 64 位 authentication 字段可以包含任何内容; 接收报文时不检查该字段. 使用 Null authentication 时, 为检测数据损坏, 会对每个 OSPF 报文的全部内容 (64 位 authentication 字段除外) 计算校验和.
D.2 Simple password authentication
使用这种认证类型时, 会按网络配置一个 64 位字段. 在某个特定网络上发送的所有报文, 其 OSPF 头部的 64 位 authentication 字段都必须具有该配置值. 这实质上充当一个 "clear" 64 位 password. 此外, 为检测数据损坏, 每个 OSPF 报文的全部内容 (64 位 authentication 字段除外) 都会计算校验和.
Simple password authentication 可防止路由器无意中加入路由域; 每台路由器必须先配置其连接网络的 password, 才能参与路由. 但是, simple password authentication 容易受到目前 Internet 中广泛存在的 passive attacks 影响 (见 [Ref16]). 任何能够物理访问该网络的人都可以获知 password, 并危及 OSPF 路由域安全.
D.3 Cryptographic authentication
使用这种认证类型时, 连接到同一公共网络/子网的所有路由器都会配置一个共享 secret key. 对每个 OSPF 协议报文, 该 key 用于生成/验证附加到 OSPF 报文末尾的 "message digest". message digest 是 OSPF 协议报文和 secret key 的单向函数. 由于 secret key 从不以明文在网络上传输, 因而可防范 passive attacks.
用于生成和验证 message digest 的算法由 secret key 隐式指定. 当使用 MD5 算法时, 本规范完整定义 OSPF Cryptographic authentication 的使用.
此外, 每个 OSPF 协议报文中都包含一个非递减序列号, 用于防范 replay attacks. 这提供长期保护; 但是, 在序列号变化之前仍可能重放 OSPF 报文. 为实现这一功能, 每个邻居数据结构都包含一个称为 "cryptographic sequence number" 的新字段. 该字段初始化为零, 并且也会设置为零