1.OSPF概念
-
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。
2.OSPF与RIP的区别
-
OSPF是链路状态路由协议,而RIP是距离向量路由协议
-
作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
3.链路是什么?
-
链路是路由器接口的另一种说法
4.为什么说OSPF是一种链路状态协议?
-
OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
-
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域(AS)。
5.什么叫自治域(AS)
-
AS全称是(Autonomous System),它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
6.1-way和2-way是什么意思?
-
1-way是指收到了邻居发来的hello报文,但是在邻居的hello报文中,并没有提到自己(证明邻居还没有收到自己发过去的hello报文)
-
2-way是指相邻的两台路由器分别收到了对方发过来的hello报文,2-way是邻接(adjacency)关系正式开始建立
7.简要描述OSPF邻居关系建立分为几个阶段?分别是什么?
-
邻接关系建立的4个阶段:
-
邻居发现阶段
-
双向通信阶段:Hello报文都列出了对方的RID,则BC完成.
-
数据库同步阶段:
-
完全邻接阶段: full adjacency
-
8.OSPF邻居关系建立的机制是什么?
- 邻居关系的建立和维持都是靠Hello包完成的,在一般的网络类型中,Hello包是每经过1个HelloInterval发送一次,
- 有1个例外:在NBMA网络中,路由器每经过一个PollInterval周期发送Hello包给状态为down的邻居(其他类型的网络是不会把Hello包发送给状态为down的路由器的).
- Cisco路由器上PollInterval默认60s Hello Packet以组播的方式发送给224.0.0.5,
- 在NBMA类型,点到多点和虚链路类型网络,以单播发送给邻居路由器。邻居可以通过手工配置或者Inverse-ARP发现.
9.画图说明一下OSPF邻居关系的状态机
- +----+
|Down|
+----+
|\
| \Start
| \ +-------+
Hello | +---->|Attempt|
Received | +-------+
| |
+----+<-+ |HelloReceived
|Init|<---------------+
+----+<--------+
| |
|2-Way |1-Way
|Received |Received
| |
+-------+ | +-----+
|ExStart|<--------+------->|2-Way|
+-------+ +-----+
Neighbor state changes (Hello Protocol)
- +-------+
|ExStart|
+-------+
|
NegotiationDone|
+->+--------+
|Exchange|
+--+--------+
|
Exchange|
Done |
+----+ | +-------+
|Full|<---------+----->|Loading|
+----+<-+ +-------+
| LoadingDone |
+------------------+
Neighbor state changes (Database Exchange)
说明
- Down: 初始化状态.
- Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发 送Hello包.
- Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然没有建立起来.
- two-way: 双向会话建立.
- ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number,接口等级高的的成为Master.
- Exchange: 信息交换状态,本地路由器向邻居发送数据库描述包,并且会发送LSR用于请求新的LSA.
- Loading: 信息加载状态,本地路由器向邻居发送LSR用于请求新的LSA .
- Full: 完全邻接状态,这种邻接出现在Router LSA和Network LSA中.
10.说说OSPF协议中的几种路由器类型
-
Internal Router:内部路由器
-
ABR(Area Border Router):区域边界路由器,OSPF中存在Area的概念,一个AS中可能存在着很多的Area,那些连接了两个或两个以上Area的路由器,就叫做区域边界路由器
-
Backbone Router(BR):骨干路由器
-
ASBR(Autonomous System Boundary Router):自治系统边界路由器.
-
DR:待补充
-
BDR:待补充
11.简述一下OSPF的几种LSA报文及其用途
OSPF协议因为定义了多种类型的路由器类型,因此定义多种LSA通告类型也是必要的。汇总来讲,OSPF总共有7种类型的LSA
- LSA Type 1:
- 概念:路由器LSA,(RLA ,router link advertisement,路由器链路通知)
- 谁产生的:AS域内的所有路由器
- 洪泛范围:AS域中所有路由器(除发出者自己)
- 洪泛内容:区域中所有路由器的链路信息、每个链路状态、开销、
- LSA Type 2:
- 概念:也称为网络LSA,(NLA,network link advertisement,网络链路通知)
- 谁产生的:指定路由器(DR)或者BDR产生的。
- 洪泛范围:只在产生这条Network LSA的区域内泛洪
- 洪泛内容:描述了所有和它相连的路由器(包括DR本身).
- LSA Type 3 & LSA Type 4:
- 概念:称为汇总LSA(SLA,summary link advertisements)
- 谁产生的:由区域边界路由器(ABR)产生。
- 洪泛范围:这些ABR向区域中所有路由器发送第三种与第四种LSA。这些LSA向主干区域通知区域内路由,向非主干区域通知区域内路由和区域间路由。
- 洪泛内容:用于通告AS域外部的目的地址.当其他的路由器收到来自ABR的Network Summary LSA以后,它不会运行SPF算法,它只简单的加上到达那个ABR的开销和Network Summary LSA中包含的开销,通过ABR,到达目标地址的路由和开销一起被加进路由表里,这种依赖中间路由器来确定到达目标地址的完全路由(full route)实际上是距离矢量路由协议的行为
- LSA Type 3和Type 4的区别:他们的唯一差别在于第三种LSA将区域外的网络通知和到区域内,而第四种将ASBR信息通知到区域内
- LSA Type 5:
- 概念:AS外部LSA(AS external link advertisements)
- 谁产生的:是边界路由器(ASBR)发出的
- 洪泛范围:整个AS域
- 洪泛内容:用来通告到达OSPF自主系统外部的目的地,或者OSPF自主系统那个外部的缺省路由的LSA.
- LSA Type 7:
- 概念:External LSA
- 谁产生的:第七种LSA只由补全残根系统(NSSA)中的ASBR产生。
- 洪泛范围:只在NSSA区域内泛洪
- 其它说明:第七种LSA跨区域传递到ABR。第七种LSA到达ABR之后,BR将第七种LSA变成第五种LSA,传递到主干。第七种LSA通知OSPF自治系统外部的区域外的网络路由。
12.讲讲OSPF中用到的几种报文类型
- 所有的OSPF报文共用相同的报文头
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Hello
-
何时发送:Hello报文在每个使能了OSPF能力的接口上发送,根据路由器上设置的Hello Interval间隔时间进行发送.Hello报文中有路由器的优先级,hello报文发送的间隔时间,RouterDeadInterval(表示一旦多长时间没有收到邻居的hello报文,就会认为邻居关系丢失了)
-
主要功能:
-
发现邻居
-
维持邻接关系
-
选举DR和BDR
-
-
-
Database description
-
DD报文的发送与邻居之间的邻接状态有很大的关系
-
ExStart状态时:路由器发送空的DD报文,并将I(initialize),M(more),MS(master)标志位置上
-
Exchange状态时:此时DD包中就包含了实实在在的LSA内容(这里注意一下其中的DD sequence num主要是起啥作用的)
-
在Exchange状态的时候,DD报文的发送和接收其实还涉及到谁是Master谁是Slave
-
-
-
Link state request
-
何时发送:在邻居关系处于Exchange或Loading的时候
-
主要内容:
-
主要功能:
-
-
Link state update:OSPF中链路状态数据库的更新是可靠的,主要就是靠link state update和link state ack报文来实现的
-
Link state ack:
13. OSPF协议中经常使用的组播地址和一些常量
- AllSPFRouters:224.0.0.5,只要是运行了OSPF路由协议的路由器都需要处理发送到这个组播地址的报文,在广播和多播网络中,ospf的hello报文以及在LSA洪泛过程中的报文都会发送到这个地址
- AllDRouters:224.0.0.6,一个ospf域中的指定路由器和备份指定路由器都需要支持这个组播地址
- OSPF IP协议号:89
- 所有的OSPF报文在IP头中使用的type of service都是0000
- 除了虚链路,所有OSPF报文都有一跳,只在有邻接关系的节点之间发送