SPF算法&外部路由选择
LSDB经过描述一个有向图来描述网络拓扑结构
帧中继NBMA网络(非广播多路访问)
R2到R1的距离:10
R2到R3的距离:10
计算设备到网段的距离
(R一、R二、R3在同一个网段以内)
SPF算法的步骤:
一、计算本身到达节点(路由器)的距离(transit、point-to-point、virtual-link)
二、计算到达叶子的距离(路由条目)的 距离(stubnet)
1.首先计算R2到达R1的距离,10
2.计算R2到2的距离,节点的距离加上R1所通告的路由的距离,10+200=210,累加COST值
以RT1为根节点
1.以RTA为根节点
2.查看本身的Router LSA
分析与本身相邻节点的网络类型,生成候选列表
P-2-P:链接节点的链路
StubNet:路由
3.计算到根最短路径的相邻节点
一台设备以本身为根,首先去看本身发送的1类LSA,经过1类LSA去看有哪些链路信息是跟节点互联的,将这些链路信息所有放到候选列表里面,在候选列表中找出最短路径;把最短路径放到最优列表里面,同时将这个链路信息从这个候选列表里面删除掉,最优的放到最短路径树里面
4.RTA选择了RTB,如今RTA会去看RTB所通告的Router LSA,看RTB上面有哪些链路信息,看RTB所通告的Router LSA;在点到点里面,LinkID是邻居的router ID,能够经过这个去查邻居,RTB通告的LSA。
5.经过RTB,进行扩展
经过1类LSA只能知道到达这个网段N6的距离,但并不知道这个网段上是否还有其余节点,经过DR通告的2类LSA,知道这个网络上有哪些节点信息
经过这个2类LSA,知道这个网络上有哪些节点,下表的是网络上节点的router-id,而后能够把这些设备的router-id放到候选列表中
会保持COST值最小的 一个,3和4中随便选一个,好比如今把3放到最短路径树列表里面,能够获取一个LINK ID,根据这个LINK ID再去查,查到3多通告的一个router LSA,根据这个LSA再去看3所通告的一个链路信息
由于这个Transiet 10.3.1.1已经在最短路径树里面,把4放到候选列表里面,这样候选列表为空,再看4所通告的LSA,发现点到点(P-2-P)和TransNET(广播网)已经在最短生成树里面不须要放。
6.经过计算把全部的最短路径树列表里面的LINK ID所有看完了,看完之后候选列表为空,能够画出图。经过第一轮计算,能够计算出这个网络上有哪些节点,能够把本身到节点的距离算出来
7.第二步,须要看每个节点所经过的stubNet的链路类型,这些都是路由,累加就能够了,根据stubNet扩展叶子
经过这两轮计算,能够计算出到达节点和到达叶子的距离
为何2类LSA用的是DR接口的IP地址而不是DR设备的Router id?
由于每台设备都会用Router id去表示一个Router LSA,若是用Router ID做为LINK ID使用的话,在广播网里面可能只会找到DR设备所通告的Router LSA而找不到2类LSA,
为了区分2类LSA才用的接口IP地址,它的目的是须要将DR所通告的Router LSA和2类LSA所区分开,用不一样的地址来表示。
一边是广播网,一边是点到点,为何能够创建邻居传递LSA可是没有路由?
由于他们两个的SPF算法不同,算不出来路由
为何2类LSA用的是DR接口IP地址?
这种作法是用于区分DR所通告的1类和2类LSA
【实验配置】:一边是点到点,一边是广播网
53:40
把1改为广播网 ,2改为点到点
在R2上有1发送的Router LSA
以R2为根,计算到达其余节点的距离,须要看R2本身所发送的Router LSA
R2#show ip ospf database router self-originate //查看本身所发送的Router LSA
有两条链路:第一条是 点到点的 类型,第二条是Stub Network
选点到点的类型,计算到达节点距离,须要将LINK ID和Metric放到候选列表里面;
接下来利用LINK ID去查本地的LSDB,这个LINK ID是对端设备的Router ID;
show ip ospf database 12.1.1.1
此时,有一个Stub Net,有一个Transit ;把Transit Network放进去,把12.1.1.2放进去,这个Metric是10,再去查12.1.1.2
show ip ospf database network 12.1.1.2
会发现并无LSA,因此会形成节点计算有问题
经过一步一步来查,会发现没法执行SPF算法,两边能够正常 创建邻居有LSA但没有路由条目。
若是在IOU2上把e0/0的点到点网络类型改成NBMA非广播网是否能够创建邻居关系是否能够计算路由?
调整Hello时间
show ip route ospf
会发现有路由,由于广播网和非广播的计算方法同样的,在广播网和非广播网里面都会选举DR和BDR,可是一边点到点,一边非广播不行。
***********************************************
5类LSA
AS External LSA
每一条外部路由都会生成一条5类LSA去表示
show ip ospf database external 1.1.1.0 看详细信息
Metric Type :2 //表明2类的外部路由:OE1 或者OE2
Metric:20 //种子度量,无论重分发什么路由Metric值都是20
Forwadr Address:转发地址
External Route Tag:外部路由的标签
4) AS external LSA:
R2#show ip ospf database external 1.1.1.0
OSPF Router with ID (23.1.1.2) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 241
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 1.1.1.0 (External Network Number )
Advertising Router: 12.1.1.1
LS Seq Number: 80000001
Checksum: 0x424C
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path) \\有两种metric type,分别是1和2。
MTID: 0
Metric: 20 \\思科中全部引入的路由的默认metric值为20,称为种子度量,能够手工修改。
Forward Address: 0.0.0.0 \\转发地址,能够避免次优路径。
External Route Tag: 0 \\为外部路由增长TAG,便于路由控制。
5类LSA中什么状况下才会填充FA地址? (
FA地址就是填充外部路由下一跳的地址,若是外部路由没有下一跳则FA地址为空)
一、将到达外部路由下一跳的出接口宣告进OSPF
二、接口的类型不能是点到点或者点到多点
三、接口不能是一个PASSIVE接口
注:若是5类LSA中填充了FA地址,那么外部路由只计算到达FA的距离,不计算到达ASBR的距离。
计算FA地址的前提条件:到达FA地址的路由必须是OSPF域内或者域间路由,其它类型的路由不能参与计算。这么作的缘由是为了不选路形成的环路问题。
默认状况下重分发进OSPF的外部路由类型为OE2,OE2不累加转发链路COST,而OE1是累加转发链路COST值。因此OE1比OE2更加精确。
OSPF中为何会出现次优路径?Forwarding Address怎么填充?