16. 路由表的计算
summary-LSA 由 area border router 始发。Area A 中的每个
summary-LSA 依次被考察。请记住,summary-LSA 所描述的目的地
要么是一个网络(Type 3 summary-LSA),要么是一台 AS boundary
router(Type 4 summary-LSA)。对每个 summary-LSA:
(1) 如果该 LSA 所指定的代价为 LSInfinity,或者该 LSA 的
LS age 等于 MaxAge,则检查下一个 LSA。
(2) 如果该 LSA 是由执行计算的路由器自身始发的,则检查下一个
LSA。
(3) 如果它是一个 Type 3 summary-LSA,且该 summary-LSA 所描述
的目的地集合等于路由器所配置的某个 area address range
(见 3.5 节),并且该特定 area address range 处于活动状态,
则应忽略该 summary-LSA。"活动"意味着该 area range 中包含
一个或多个(通过 intra-area 路径)可达的网络。
(4) 否则,把该 LSA 所描述的目的地称为 N(对 Type 3
summary-LSA 而言,N 的地址通过用该 LSA 正文中包含的
network/subnet 掩码对其 Link State ID 做掩码运算得到),
把始发该 LSA 的 area border router 称为 BR。查找以 Area A
为关联区域的 BR 的路由表条目。如果路由器 BR 不存在这样的
条目(即 BR 在 Area A 中不可达),则对该 LSA 不做任何处理,
考察列表中的下一个。否则,该 LSA 描述了一条通向目的地 N
的 inter-area 路径,其代价为到 BR 的距离加上该 LSA 中指定
的代价。把这条 inter-area 路径的代价称为 IAC。
(5) 接下来,查找目的地 N 的路由表条目。(如果 N 是一台 AS
boundary router,则查找与 Area A 关联的 "router" 路由表
条目。)如果 N 不存在条目,或者该条目的 path type 是
"type 1 external" 或 "type 2 external",则安装到 N 的
inter-area 路径,其关联区域为 Area A,代价为 IAC,下一跳
等于到路由器 BR 的下一跳列表,Advertising router 等于 BR。
(6) 否则,如果表中现有的路径是 intra-area 路径,则对该 LSA
不做任何处理(intra-area 路径总是被优先选择)。
(7) 否则,路由表中现有的路径也是 inter-area 路径。如果经由 BR
的新路径代价更低,则安装该新路径,覆盖路由表中的路径。
否则,如果新路径代价相同,则把它加入该路由表条目中出现的
路径列表。
16.3. 检查 transit area 的 summary-LSA
这一步只由那些接入一个或多个能够承载转接流量的非 backbone
区域(即 "transit area",或者说那些在 Dijkstra 算法的步骤 2
中 TransitCapability 参数被设为 TRUE 的区域,见 16.1 节)的
area border router 执行。
下面这个计算的目的是考察这些 transit area,看它们是否提供了
比之前在 16.1 节和 16.2 节中计算出的路径更优(更短)的路径。
任何被发现优于或等于之前发现路径的路径都会被安装到路由表中。
该计算还会为那些在 16.1 节和 16.2 节中下一跳被计算为 virtual
link 的目的地确定实际的下一跳。在下面的计算完成之后,凡是在
16.1 节和 16.2 节中计算出的、仍然存在未解析虚拟下一跳的路径,
都应被丢弃。
计算过程如下。所有 transit area 的 summary-LSA 依次被考察。
每个这样的 summary-LSA 描述了一条穿过某个 transit area
(Area A)通向网络 N 的路由(N 的地址通过用该 LSA 正文中包含
的 network/subnet 掩码对其 Link State ID 做掩码运算得到),
或者在 Type 4 summary-LSA 的情况下,通向一台 AS boundary
router N。再假定该 summary-LSA 是由某台 area border router BR
始发的。
(1) 如果该 summary-LSA 通告的代价为 LSInfinity,或者该 LSA
的 LS age 等于 MaxAge,则检查下一个 LSA。
(2) 如果该 summary-LSA 是由执行计算的路由器自身始发的,则
检查下一个 LSA。
(3) 查找 N 的路由表条目。(如果 N 是一台 AS boundary router,
则查找与 backbone 区域关联的 "router" 路由表条目。)如果
它不存在,或者路由类型不是 intra-area 或 inter-area,
或者该路由表条目的关联区域不是 backbone 区域,则检查下一个
LSA。换言之,该计算只更新在 16.1 节中找到的 backbone
intra-area 路由和在 16.2 节中找到的 inter-area 路由。
(4) 查找与 Area A 关联的通告路由器 BR 的路由表条目。如果它
不可达,则检查下一个 LSA。否则,到目的地 N 的代价是 BR 在
Area A 中路由表条目的代价与该 LSA 中通告代价之和。把这个
代价称为 IAC。
(5) 如果该代价小于 N 的路由表条目中出现的代价,则用 BR 所用的
下一跳覆盖 N 的下一跳列表,并把 N 的路由表代价设为 IAC。
否则,如果 IAC 与 N 当前的代价相同,则把 BR 的下一跳列表
加入 N 的下一跳列表。无论哪种情况,N 的路由表条目的关联
区域都必须保持为 backbone 区域,path type(intra-area 或
inter-area)也必须保持不变。
必须注意,上述计算绝不会把不可达的目的地变为可达,而只是可能
为已经可达的目的地找到更优的路径。该计算会把找到的任何更优
代价安装进路由表条目,随后它可能会在 summary-LSA 中被重新
通告给其他区域。
作为该计算的一个示例,考虑图 17 中描绘的自治系统。其中有一个
非 backbone 区域(Area 1),它在物理上把 backbone 分割成两个
独立的部分。为了维持 backbone 的连通性,在路由器 RT1 和 RT4
之间配置了一条 virtual link。在图的右侧,网络 N1 属于
backbone。虚线表示存在一条短得多的 intra-area
........................
. Area 1 (transit) . +
. . |
. +---+1 1+---+100 |
. |RT2|----------|RT4|=========|
. 1/+---+********* +---+ |
. /******* . |
. 1/*Virtual . |
1+---+/* Link . Net|work
=======|RT1|* . | N1
+---+\ . |
. \ . |
. \ . |
. 1\+---+1 1+---+20 |
. |RT3|----------|RT5|=========|
. +---+ +---+ |
. . |
........................ +
图 17:穿过 transit area 的路由
backbone 路径连接路由器 RT5 与网络 N1(代价 20),而路由器
RT4 与网络 N1 之间的路径代价为 100。路由器 RT4 和路由器 RT5
都会向 Area 1 注入网络 N1 的 summary-LSA。
在 16.1 节中为 backbone 计算出最短路径树之后,路由器 RT1
(virtual link 的左端点)将为所有发往网络 N1 的数据流量计算出
一条经由路由器 RT4 的路径。但是,由于路由器 RT5 离网络 N1
近得多,Area 1 内部的所有路由器(例如路由器 RT2 和 RT3)都会
把它们发往网络 N1 的流量转发给路由器 RT5,而不是 RT4。而且
确实,在通过上述计算考察了 Area 1 的 summary-LSA 之后,路由器
RT1 也会把网络 N1 的流量转发给 RT5。注意,在本例中,virtual
link 使得转接数据流量能够穿过 Area 1 被转发,但转接数据流量
实际所走的路径并不沿着该 virtual link。换言之,virtual link
允许转接流量穿过某个区域被转发,但并不规定该流量所走的确切
路径。
16.4. 计算 AS external 路由
AS external 路由通过考察 AS-external-LSA 来计算。每个
AS-external-LSA 依次被考虑。大多数 AS-external-LSA 描述的是
通向特定 IP 目的地的路由。AS-external-LSA 也可以描述自治系统
的默认路由(Destination ID = DefaultDestination,
network/subnet 掩码 = 0x00000000)。对每个 AS-external-LSA:
(1) 如果该 LSA 所指定的代价为 LSInfinity,或者该 LSA 的
LS age 等于 MaxAge,则检查下一个 LSA。
(2) 如果该 LSA 是由执行计算的路由器自身始发的,则检查下一个
LSA。
(3) 把该 LSA 所描述的目的地称为 N。N 的地址通过用该 LSA 正文中
包含的 network/subnet 掩码对其 Link State ID 做掩码运算
得到。查找始发该 LSA 的 AS boundary router(ASBR)的路由表
条目(每个所连接的区域可能各有一个)。如果路由器 ASBR
不存在任何条目(即 ASBR 不可达),则对该 LSA 不做任何处理,
考察列表中的下一个。
否则,该 LSA 描述了一条通向目的地 N 的 AS external 路径。
考察该 AS-external-LSA 中指定的 forwarding address。它
指示了发往该目的地的报文应被转发到的 IP 地址。
如果 forwarding address 被设为 0.0.0.0,则报文应被发送给
ASBR 自身。在 ASBR 的多个路由表条目中,按如下方式选择
首选条目。如果 RFC1583Compatibility 被设为 "disabled",
则按 16.4.1 节所述对 ASBR 的路由表条目集合进行剪枝。
无论哪种情况,在剩余的路由表条目中,选择代价最小的那个
路由表条目;当存在多个代价最小的路由表条目时,选择其关联
区域的 OSPF Area ID 最大(按无符号 32 位整数比较)的那个
条目。
如果 forwarding address 非零,则在路由表中查找该
forwarding address。[24] 匹配到的路由表条目必须指定一条
intra-area 或 inter-area 路径;如果不存在这样的路径,则
对该 LSA 不做任何处理,考察列表中的下一个。
(4) 令 X 为 ASBR/forwarding address 的首选路由表条目所指定的
代价,Y 为该 LSA 中指定的代价。X 以链路状态 metric 表示,
而 Y 是一个 type 1 或 type 2 外部 metric。
(5) 查找目的地 N 的路由表条目。如果 N 不存在条目,则安装到 N
的 AS external 路径,其下一跳等于到 forwarding address 的
下一跳列表,advertising router 等于 ASBR。如果外部 metric
类型为 1,则 path-type 被设为 type 1 external,代价等于
X+Y。如果外部 metric 类型为 2,则 path-type 被设为 type 2
external,该路由代价的链路状态分量为 X,type 2 代价为 Y。
(6) 按如下方式,把该 LSA 所描述的 AS external 路径与 N 的
路由表条目中已有的路径进行比较。如果新路径更优,则它替换
N 的路由表条目中现有的路径。如果新路径优先级相同,则把它
加入 N 的路由表条目的路径列表。
(a) intra-area 和 inter-area 路径总是优先于 AS external
路径。
(b) type 1 external 路径总是优先于 type 2 external 路径。
当所有路径都是 type 2 external 路径时,通告的 type 2
metric 最小的路径总是被优先选择。
(c) 如果新的 AS external 路径与 N 的路由表条目中当前的
路径仍无法区分,且 RFC1583Compatibility 被设为
"disabled",则按 16.4.1 节的规定,基于通向
ASBR/forwarding address 的 intra-AS 路径来选择首选
路径。
(d) 如果新的 AS external 路径与 N 的路由表条目中当前的
路径仍无法区分,则基于最小代价比较来选择首选路径。
type 1 external 路径通过比较到 forwarding address
的距离与通告的 type 1 metric 之和(X+Y)来比较。
通告了相同 type 2 metric 的 type 2 external 路径则
通过比较到 forwarding address 的距离来比较。
16.4.1. 外部路径优先级(External path preferences)
当存在多条通向 ASBR/forwarding address 的 intra-AS 路径
时,以下规则指明哪些路径被优先选择。这些规则适用于同一台
ASBR 可以通过多个区域到达的情形,或者需要判断若干个
AS-external-LSA 中哪一个应被优先选择的情形。在前一种情形
中,所有路径都终止于同一台 ASBR;而在后一种情形中,各条
路径终止于不同的 ASBR/forwarding address。无论哪种情形,
每条路径都由第 11 节所定义的一个独立路由表条目表示。
本节仅在 RFC1583Compatibility 被设为 "disabled" 时适用。
路径优先级规则按从高到低的优先级列出如下。注意,应用这些
规则之后,仍可能存在多条最高优先级的路径。此时,必须按
16.4 节所述基于代价来确定要使用的路径。
o 使用非 backbone 区域的 intra-area 路径总是最优先的。
o 其他路径,即 intra-area backbone 路径和 inter-area
路径,优先级相同。
16.5. 增量更新 —— summary-LSA
当收到一个新的 summary-LSA 时,不必重新计算整张路由表。把该
summary-LSA
所描述的目的地称为 N(N 的地址通过用该 LSA 正文中包含的
network/subnet 掩码对其 Link State ID 做掩码运算得到),并令
Area A 为该 LSA 所属的区域。于是有两种不同的情况:
情况 1:Area A 是 backbone,和/或该路由器不是 area border
router。
在这种情况下,必须执行以下计算。首先,如果当前存在到
目的地 N 的 inter-area 路由,则使 N 的路由表条目失效,
并保存该条目的取值以便稍后比较。然后针对单个目的地 N
重新运行 16.2 节中的计算。在这个计算中,Area A 中所有
描述通向 N 路由的 summary-LSA 都会被考察。此外,如果该
路由器是一台接入一个或多个 transit area 的 area border
router,则还必须针对该单个目的地重新运行 16.3 节中的计算。
如果这些计算的结果改变了到某台 AS boundary router 的
代价/路径(Type 4 summary-LSA 的情形就是如此),或者改变
了到任何 forwarding address 的代价/路径,则必须通过重新
运行 16.4 节中的计算来重新考察所有 AS-external-LSA。
否则,如果 N 现在变为新的不可达,则必须针对单个目的地 N
重新运行 16.4 节中的计算,以防存在通向 N 的另一条外部
路由。
情况 2:Area A 是一个 transit area,且该路由器是一台 area
border router。
在这种情况下,必须执行以下计算。首先,如果 N 的路由表
条目当前包含一条或多条利用了 transit area(Area A)的
inter-area 路径,则应移除这些路径。如果这导致该路由表
条目中的所有路径都被移除,则应使该条目失效。应保存该条目
的旧取值以便稍后比较。接下来,必须针对单个目的地 N 重新
运行 16.3 节中的计算。如果该计算的结果导致到 N 的代价增加,
则必须从 16.1 节所规定的 Dijkstra 算法开始,重新运行完整的
路由表计算。否则,如果到某台 AS boundary router 的代价/路径
(Type 4 summary-LSA 的情形就是如此)或到任何 forwarding
address 的代价/路径发生了变化,则必须
通过重新运行 16.4 节中的计算来重新考察所有
AS-external-LSA。否则,如果 N 现在变为新的不可达,则必须
针对单个目的地 N 重新运行 16.4 节中的计算,以防存在通向
N 的另一条外部路由。
16.6. 增量更新 —— AS-external-LSA
当收到一个新的 AS-external-LSA 时,不必重新计算整张路由表。
把该 AS-external-LSA 所描述的目的地称为 N。N 的地址通过用该
LSA 正文中包含的 network/subnet 掩码对其 Link State ID 做掩码
运算得到。如果已经存在到该目的地的 intra-area 或 inter-area
路由,则不需要重新计算(内部路由优先)。
否则,必须执行 16.4 节中的过程,但只针对那些目的地为 N 的
AS-external-LSA。在执行该过程之前,应使 N 当前的路由表条目
失效。
16.7. 路由表变化所产生的事件
路由表条目的变化有时会导致 OSPF area border router 采取额外的
动作。这些路由器需要对以下路由表变化作出响应:
o 某个路由表条目的代价或 path type 发生了变化。如果该条目
所描述的目的地是一个 Network 或一台 AS boundary router,
并且这不只是 AS external 路由的变化,那么可能需要生成新的
summary-LSA(每个所连接的区域,包括 backbone,都可能各
生成一个)。更多信息见 12.4.3 节。如果之前通告过的某个
条目已被删除,或者已不能再向某个特定区域通告,则必须通过
把该 LSA 的 LS age 设为 MaxAge 并重新泛洪,把它从路由域中
清除(见 14.1 节)。
o 与某条已配置 virtual link 关联的路由表条目发生了变化。
这类路由表条目的目的地是一台 area border router。该变化
表明该 virtual link 的代价或可用性发生了改变。
如果该条目表明这台 area border router 变为新的可达,则
相应的 virtual link 现在可运行了。应为该 virtual link
生成一个 InterfaceUp 事件,这将使一条 virtual adjacency
开始形成(见 10.3 节)。此时也会计算该 virtual link 的
IP 接口地址以及 virtual neighbor 的 Neighbor IP address。
如果该条目表明这台 area border router 不再可达,则应销毁
该 virtual link 及其关联的 adjacency。这意味着应为相关的
virtual link 生成一个 InterfaceDown 事件。
如果该条目的代价发生了变化,并且存在一条已完全建立的
virtual adjacency,则必须为 backbone 始发一个新的
router-LSA。这反过来又可能引起进一步的路由表变化。
16.8. 等价多路径(Equal-cost multipath)
OSPF 协议为所有目的地维护多条等价路由。这一点可以从上面用于
计算路由表的各个步骤中,以及从路由表结构的定义中看出。
这多条路由中的每一条都具有相同的类型(intra-area、inter-area、
type 1 external 或 type 2 external)、相同的代价,并且具有
相同的关联区域。但是,每条路由可以指定不同的下一跳和
Advertising router。
并不要求运行 OSPF 的路由器必须跟踪通向某个目的地的所有可能
等价路由。实现可以选择只为任一给定目的地保留固定数量的路由。
这不影响本规范中给出的任何算法。
脚注(Footnotes)
[1]图的顶点表示路由器、transit network 或 stub network。由于路由器
可能属于多个区域,因此无法对图的顶点进行着色。
[2]路由器的所有接口都可能是无编号的 point-to-point 链路。在这种
情况下,必须为该路由器分配一个 IP 地址。该地址随后将作为一条主机
路由在该路由器的 router-LSA 中通告。
[3]注意,在这些情况下,非虚拟接口和虚拟接口这两个接口将具有相同的
IP 地址。
[4]注意,不会为通向无编号 point-to-point 网络的接口生成主机路由,
也不能把 IP 报文寻址到这类接口。这与该接口的状态无关。
[5]看看当网络的 Designated Router 崩溃时会发生什么,是很有启发性
的。把该网络的 Designated Router 称为 RT1,Backup Designated
Router 称为 RT2。如果路由器 RT1 崩溃(或者可能是它到该网络的接口
失效),网络上的其他路由器将在 RouterDeadInterval 秒内检测到 RT1
的缺失。所有路由器不一定在完全相同的时刻检测到这一点;那些比 RT2
更早检测到 RT1 缺失的路由器,会在一段时间内同时把 RT2 选为
Designated Router 和 Backup Designated Router。当 RT2 检测到 RT1
已经消失时,它会把自己提升为 Designated Router。此时,剩余路由器中
Router Priority 最高的那台将被选为 Backup Designated Router。
[6]在 point-to-point 网络上,较低层协议会指示邻居是否处于运行状态。
同样地,virtual link 上邻居的存在性由路由表计算来指示。但是,在这
两种情况下,Hello Protocol 仍然会被使用。这确保了邻居之间的通信是
双向的,并且每个邻居都具有一个正常工作的路由协议层。
[7]当 Designated Router 的身份正在变化时,处于该状态的邻居向路由器
发送
Database Description 报文可能相当常见;这意味着对 Designated
Router 的身份存在短暂的分歧。
[8]注意,路由器可以通过把某条 adjacency 的状态退回到 ExStart,
来重新同步它任何一条已完全建立的 adjacency。这将使该 adjacency
的另一端处理一个 SeqNumberMismatch 事件,从而也退回到 ExStart
状态。
[9]IP 网络的地址空间与 OSPF Router ID 的地址空间可能重叠。也就是
说,某个网络的 IP 地址可能(当作为 32 位数字看待时)与某台路由器的
Router ID 完全相同。
[10]"Discard" 条目是必要的,用以确保在区域边界处的路由汇总不会
导致报文环路。
[11]这里假定,对于匹配同一目的地的两个不同地址范围,其中一个范围
比另一个更精确。配置非连续的子网掩码可能违反这一假定。OSPF 协议
无法处理这样的子网掩码配置。
[12]MaxAgeDiff 是一个体系结构常量。它表示单个 LSA 实例在整个路由域
中泛洪时,其年龄可能出现的最大离散度(以秒为单位)。如果两个 LSA
的年龄相差超过这个值,则认为它们是同一 LSA 的不同实例。这可能发生
在路由器重启并丢失了该 LSA 之前的 LS 序列号记录时。更多细节见
13.4 节。
[13]当两个 LSA 具有不同的 LS 校验和时,认为它们是不同的实例。这
可能发生在路由器重启并丢失了该 LSA 之前的 LS 序列号记录时。在两个
LSA 具有相同 LS 序列号的情况下,无法判断哪个 LSA 实际上更新。不过,
即使错误的 LSA 被接受为更新的,始发路由器也只会再始发一个实例。
更多细节见 13.4 节。
[14]有一种情形必须基于部分信息做查找。这就是在路由表计算过程中,
必须仅依据 Link State ID 来找到一个 network-LSA。
这种情况下的查找仍然是良定义的,因为不可能有两个 network-LSA 具有
相同的 Link State ID。
[15]这是 RFC 1583 所规定的 point-to-point 表示方式。它有三个优点:
a) 不需要为该 point-to-point 链路分配一个子网;b) 它倾向于使路由
产生偏置,使得发往该 point-to-point 接口的报文实际上会通过该接口
被接收(这对诊断目的很有用);c) 它允许对邻居进行网络引导启动
(bootstrapping),而不要求引导程序中包含一个 OSPF 实现。
[16]这是诸如 RIP 等协议所使用的、更为传统的 point-to-point 表示
方式。
[17]该条款涵盖以下情形:inter-area 路由不会被汇总到 backbone。
这是因为 inter-area 路由总是与 backbone 区域关联。
[18]该条款仅在某个非 backbone 区域 Area A 支持转接数据流量(即其
TransitCapability 被设为 TRUE)时才被触发。例如,在图 6 的区域
配置中,由于在路由器 RT10 和 RT11 之间配置了 virtual link,Area 2
可以支持转接流量。因此,路由器 RT11 只需向 Area 2 始发单个
summary-LSA(其目的地为聚合后的 N9-N11,H1),因为路由器 RT11 所有
其他符合条件的路由的下一跳都属于 Area 2 本身(因而只需由其他
area border router 通告;在本例中即路由器 RT10 和 RT7)。
[19]通过在路由表中保存更多信息,实现可以只重新计算单个区域的最短
路径树。事实上,存在一些增量算法,允许实现只重新计算单个区域最短
路径树的一部分 [Ref1]。不过,这些算法超出了本规范的范围。
[20]这就是 Link state request list 被清空的方式,它最终会使邻居
状态转换到 Full。更多细节见 10.9 节。
[21]LSA 的 LS age 以这种方式达到 MaxAge 应当是相对罕见的情况。
通常,该 LSA 在老化超时之前就会被
一个更新的实例所替换。
[22]严格来说,由于存在等价多路径,该算法并不创建一棵树。我们继续
使用"树"这一术语,是因为它在现有文献中最为常见。
[23]注意,只要存在任何一条回到 V 的链路就足够了;它不必是所考察的
从 V 到 W 那条链路的匹配另一半。这足以确保在一对相邻路由器之间开始
流动数据流量之前,它们的链路状态数据库已经同步。
[24]当 forwarding address 非零时,它应当指向属于另一个自治系统的
一台路由器。更多细节见 12.4.4 节。
参考文献(References)
[Ref1] McQuillan, J., I. Richer and E. Rosen, "ARPANET Routing
Algorithm Improvements", BBN Technical Report 3803, April
1978.
[Ref2] Digital Equipment Corporation, "Information processing
systems -- Data communications -- Intermediate System to
Intermediate System Intra-Domain Routing Protocol", October
1987.
[Ref3] McQuillan, J., et.al., "The New Routing Algorithm for the
ARPANET", IEEE Transactions on Communications, May 1980.
[Ref4] Perlman, R., "Fault-Tolerant Broadcast of Routing
Information", Computer Networks, December 1983.
[Ref5] Postel, J., "Internet Protocol", STD 5, RFC 791, September
1981.
[Ref6] McKenzie, A., "ISO Transport Protocol specification ISO DP
8073", RFC 905, April 1984.
[Ref7] Deering, S., "Host extensions for IP multicasting", STD 5,
RFC 1112, May 1988.
[Ref8] McCloghrie, K., and M. Rose, "Management Information Base
for network management of TCP/IP-based internets: MIB-II",
STD 17, RFC 1213, March 1991.
[Ref9] Moy, J., "OSPF Version 2", RFC 1583, March 1994.
[Ref10] Fuller, V., T. Li, J. Yu, and K. Varadhan, "Classless
Inter-Domain Routing (CIDR): an Address Assignment and
Aggregation Strategy", RFC1519, September 1993.
[Ref11] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
1700, October 1994.
[Ref12] Almquist, P., "Type of Service in the Internet Protocol
Suite", RFC 1349, July 1992.
[Ref13] Leiner, B., et.al., "The DARPA Internet Protocol Suite", DDN
Protocol Handbook, April 1985.
[Ref14] Bradley, T., and C. Brown, "Inverse Address Resolution
Protocol", RFC 1293, January 1992.
[Ref15] deSouza, O., and M. Rodrigues, "Guidelines for Running OSPF
Over Frame Relay Networks", RFC 1586, March 1994.
[Ref16] Bellovin, S., "Security Problems in the TCP/IP Protocol
Suite", ACM Computer Communications Review, Volume 19,
Number 2, pp. 32-38, April 1989.
[Ref17] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
April 1992.
[Ref18] Moy, J., "Multicast Extensions to OSPF", RFC 1584, March
1994.
[Ref19] Coltun, R., and V. Fuller, "The OSPF NSSA Option", RFC 1587,
March 1994.
[Ref20] Ferguson, D., "The OSPF External Attributes LSA", work in
progress.
[Ref21] Moy, J., "Extending OSPF to Support Demand Circuits", RFC
1793, April 1995.
[Ref22] Mogul, J., and S. Deering, "Path MTU Discovery", RFC 1191,
November 1990.
[Ref23] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 (BGP-
4)", RFC 1771, March 1995.
[Ref24] Hinden, R., "Internet Routing Protocol Standardization
Criteria", BBN, October 1991.
[Ref25] Moy, J., "OSPF Version 2", RFC 2178, July 1997.
[Ref26] Rosen, E., "Vulnerabilities of Network Control Protocols: An
Example", Computer Communication Review, July 1981.