ospf开放最短路径优先

链路状态路由协议,IGP

无类路由协议

基于ip协议,协议号89

ospf使用组播和单播更新

224.0.0.5,224.0.0.6

AD = 110

支持明文和md5认证

【RFC2328】

版本:

ospfv2 = ipv4

ospfv3 = ipv6

ospf因为open,所以每个厂商都会用,而且算法优良,收敛迅速


ospf三张表:

邻居表:

记录了ospf的所有邻居关系,而且只能直连建立邻居,因为组播224.0.0.5的ttl=1

拓扑表:

也叫LSDB(链路状态数据库),装载了所有路径信息

路由表:

ospf转发数据库,通过spf算法算出来的最佳路径


提示:

链路状态知道的内容比距离矢量更丰富


ospf采用层次化网络设计:

引用了分area的概念

建议分成2个区域

1.骨干区域,也叫传输区域,也叫area 0(backbone area)

2.常规区域(nonbackbone areas)

备注:一个成熟的ospf网络设计,一定是骨干牵着一堆非骨干的

层次化设计好处:

1.减少路由表条目

2.可以把拓扑的改变限制在一个区域

3.lsa泛洪可以限制在一个区域的边界

完全工作在骨干区域的路由器叫backbone router

工作在骨干区域和非骨干区域中间的路由器(ABRs)


ospf的5个包:

1.hello 包,发现邻居

2.database description(DBD)数据库描述包

3.link-state request(LSR)链路状态请求包

4.link-state update(LSU)链路状态更新包

5.link-state acknowledgement(LSACK)回复


ospf的邻居状态机:

1.down

2.init

3.two-way

4.ex-start 选举DR BDR

5.exchange 谁的router-id大谁做主,主先发LSDB,是摘要信息

6.loading

7.full

【attempt只出现在NBMA网络,尝试状态】

down—-init—–two-way——-ex-start——–exchange——-loading———-full

|——hello——-| |—-DBD———| |–LSR,LSU,LSACK-|


配置

(config)

router ospf [进程号] 进程号随便写

router-id [路由器router-id] 一定要写!!!!!

net [ip] [反掩码] area [区域] 宣告

sh ip os nei 查看邻居表

sh ip os da 查看拓扑表

sh ip rou 查看路由表

O = ospf同区域内路由

O IA = ospf域间路由(和我不是一个area)

sh ip os bor 看谁是我这个area的ABR

sh run | se os 查看ospf配置


router-id细节:

唯一标识一台ospf设备的东西

1.手动指定的最优先

2.选取环回口中最大的

3.选取物理地址中最大的

ospf的router-id一旦选取了就会很稳定如果需要修改或者重新配置

clear ip os pro之后写yes

如果网络中出现2个一样的router-id,那么就无法建立邻居


DR,BDR,DRother选举:

DR指定路由器(designated router)

BDR备份指定路由器(backup designated rotuer)

(减少更新次数)

DR,BDR选举规则:

1.比优先级,越大越优先,cisco默认优先级(priority)都为1,可以设置0-255,如果设置为0就是不参与选举,如果设置为255,就意味着最有可能成为DR

2.优先级一样就比较router-id,越大越优先

DR,BDR特点:

1.DR,BDR一旦选举完成,修改优先级就没用,除非你重启

2.如果DR挂了,BDR自动成为DR,哪怕在area中有人优先级比他更高,然后在若干个DRother中选一个当BDR

3.DR,BDR如果想重新选举,就要重置这两台设备上的进程,在DRother上做重置没用

4.DRother之间互相为two-way状态

5.DR,BDR概念是接口的概念,和路由器无关

6.DR,BDR是不同网段分别选举的

(config-if)

ip os pri [0-255] 调接口的优先级


ospf通过hello包建立邻居:

1.每隔10s:在点到点或者广播网络

2.每隔30s:其余的

sh ip os int [接口] 查看ospf的接口信息

在ospf网络中,dead时间是hello时间的4倍

(config-if)

ip os hello [多少秒] 修改hello时间,dead会随之修改

ip os dead [多少秒] 强改dead时间

ip os dead mini hello [除数] 把dead时间修改,hello会被改成毫秒级(1/除数),dead永久为1s


LSA(link state advertisement)链路状态通告

LSDB放的就是LSA

LSA-1:Router LSA

通告自己的RID

在一个ospf的area里,有几个设备就有几个1号lsa

有一台或者零台设备和该设备相连,叫做stub network(末节网络)

LSA-2:network lsa

LSA-2只有DR一人通告,通告的内容是DR的router-id

lsa-2是对1号的一个补充

不管是1号还是2号,都是一个area内的!!!

LSA-3:summary network lsa汇总网络lsa

由ABR通告的

有多少个O IA的路由就有多少个LSA

LSA-5:external lsa外部lsa

由ASBR通告的

有几个O E2就有几个5号lsa

在其他路由协议和ospf之间的路由器叫ASBR(自治系统边界路由器),自己area内的可以通过1号lsa知道谁是ASBR

LSA-4:summary ASBR lsa

告诉其他区域路由谁是ASBR

通告者是ABR,通告内容是谁是ASBR


sh ip os da router 查看1号lsa

sh ip os da net 查看2号lsa

sh ip os da sum 查看3号lsa

sh ip os da ext 查看5号lsa

sh ip os da asbr 查看4号lsa


总结

lsa-1:

直连网段,直连路由器(邻居),直连网络类型,虚链路,描述的是直连信息

lsa-2:

在MA网络,我们的DR(DR通告)

lsa-3:

描述域间路由,目标网络,子网掩码,cost(ABR通告)

lsa-5:

描述普通区域内的外部路由(ASBR通告)

lsa-4:

描述ASBR所在位置(ABR通告)

-—————

ospf的组播:

所有路由器向DR发送使用224.0.0.6(DR,BDR监听)

DR向所有路由器发送使用224.0.0.5(所有ospf路由器监听)

(如果网络中不选择DR BDR,就统一使用224.0.0.5)


ospf认证:

默认情况不做认证

支持区域和链路的明文,密文认证

链路明文认证:

(config-if)

ip os authentication-key [密码] 在接口下设置密码

ip os authentication 声明使用明文认证

链路密文认证:

(config-if)

ip os me 1 md [密码]

ip os authen me 声明使用密文认证

区域密文认证:

ip os me 1 md [密码]

router os 1

area [区域] authen me 声明区域密文认证

区域明文认证:

(config-if)

ip os authentication-key [密码]

router os 1

area [区域] authen

密文的key最多8个字符串,密文16个

链路认证和区域认证同时存在,以链路为主


不规则区域:

(config-router)

area [要穿越的区域] vir [目标ABR的RID]

虚链路,逻辑上增加area0的范围

网络类型:virtual link

虚链路术语DNA

sh ip os vir 查看虚链路情况

早期会比较hello时间,后面直接没了,最终达到full状态不进行hello包发送

虚链路认证:

(config-router)

area 1 vir [对端RID] authen me

area 1 vir [对端RID] me 1 md [密码]


路由汇总:

ospf的路由汇总只能在abr和asbr上做

如果在abr上做,可以汇总域间和域外路由

如果在asbr上只能汇总域外

(域内路由无法汇总)

域间汇总

(config-router)在abr上做

area 1 range 10.1.96.0 255.255.240.0

汇总出现在area1中的10.1.100.0 10.1.105.0/24两条路由,到area0中

域外汇总

(config-router)在asbr上做

summary-address 10.1.96.0 255.255.240.0


ospf特殊区域:

1.stub末节区域

不能接收lsa-5和lsa-4,只有域内和域间路由

(config-router)

area 1 stub 本区域所有路由器都要配置

abr会自动产生一条3号lsa的默认路由

在abr上

area 1 def 15 修改默认路由的cost值

2.totally stub area完全末节区域

不能接收lsa-5,4,3,也就是只有域内路由

(config-router)abr上添加

area 1 stub no-sum

abr会自动产生一条3号lsa的默认路由

###【配置成为stub或者totally stub的条件】

1.如果有多个abr并且允许次优路径产生

2.该区域所有路由器必须配置成stub路由器

3.该区域不允许出现asbr(也就是该区域不允许出现重发布操作)

4.骨干区域不能成为stub

5.stub中不允许出现虚链路!

3.NSSA(not-so-stubby areas)不要这么末节的区域

不允许接收lsa-5,4,abr不会产生默认路由!

(config-router)

area 1 nssa 要在area1所有设备上配置

需要在abr上下放一个默认路由

(config-router)abr

area 1 nssa def

产生一条O*N2的默认路由

阻止重发布进入nssa区域

(config-router)

area 1 nssa no-redis

4.totally NSSA

把lsa-3,4,5都过滤掉,abr下放默认路由

abr上增加

(config-router)

area 1 nssa no-sum

nssa和stub不同

nssa可以出现asbr,stub不能

nssa的外部路由是lsa-7描述的,使用sh ip os da nssa-ext可以看到,也就O N路由,只会在nssa区域里出现,在nssa的abr上进行Lsa-7=》Lsa-5的转换,外部路由接收到的是lsa-5,也就是O E2,此时ABR多了一个形象叫ASBR

(totally stub和totally nssa是cisco私有)


cost:

(config-if)

ip os co [cost值] 修改自己的


lsdb过载保护:

(config-router)

max-lsa ?


默认路由:

强制下放默认路由

(config-router)

default-information originate always metric 3

有就下放没有就不下放

default-information originate


负载均衡:

(config-router)

maxi [多少条]


关闭发hello包的能力:

一般用在连接终端的设备上

(config-router)

passive [接口]


A—5—-B—-20—-D

|—30—C—-10—-|

ABC是一个ospf内的,D是外部,如果采用O E1来算,那么A的ASBR就是B,如果采用O E2来算的话,A的ASBR就是C

O E1是我到目标的总路径

O E2是下一跳到目标的路径


修改AD:

(config-router)在ospf和eigrp的边界上

distan 100 此时边界路由器的AD变成100

distan 88 3.3.3.3 0.0.0.0 针对某个通告给我的人修改

distan os ext 99 专门修改lsa-5和7的ad值


分发列表:

acce 10 deny 10.1.100.0

acce 10 per any

(config-router)

distr 10 in [接口]

该路由器无法收到deny的目标,但是lsa还会传递!!!所以其他路由器依然不会deny


注意

ospf重发布除直连以外的任何路由都要加sub,否则会丢失对面的掩码