4.1【OSPF】NP十二班第七天OSPF的SPF算法&外部路由选择
SPF算法&外部路由选择
LSDB通过描述一个有向图来描述网络拓扑结构
帧中继NBMA网络(非广播多路访问)
R2到R1的距离:10
R2到R3的距离:10
计算设备到网段的距离
(R1、R2、R3在同一个网段之内)
SPF算法的步骤:
1、计算自己到达节点(路由器)的距离(transit、point-to-point、virtual-link)
2、计算到达叶子的距离(路由条目)的 距离(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地址为空)
1、将到达外部路由下一跳的出接口宣告进OSPF
2、接口的类型不能是点到点或者点到多点
3、接口不能是一个PASSIVE接口
注:如果5类LSA中填充了FA地址,那么外部路由只计算到达FA的距离,不计算到达ASBR的距离。
计算FA地址的前提条件:到达FA地址的路由必须是OSPF域内或者域间路由,其它类型的路由不能参与计算。这么做的原因是为了避免选路造成的环路问题。
默认情况下重分发进OSPF的外部路由类型为OE2,OE2不累加转发链路COST,而OE1是累加转发链路COST值。所以OE1比OE2更加精确。
OSPF中为什么会出现次优路径?Forwarding Address怎么填充?