工作区域分类
IGP(内部网关协议):RIP、OSPF、IS-IS
EGP(外部网关协议):BGP
工作机制及算法分类
距离矢量协议:RIP
链路状态路由协议:OSPF、IS-IS
LSA泛洪:链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)。
LSDB组建:每台路由器会保存自己产生的及从邻居收到的LSA信息,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。
SPF计算:每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。
路由表生成:最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
链路状态路由协议总结
建立邻居关系
交互LSA
计算路径
生成路由表项
目前针对IPv4使用OSPF V2;IPv6使用V3
运行OSPF路由器之间交互的是LS(Link State,链路状态)信息;LS信息是OSPF能够正常进行拓扑及路由计算的关键信息。
OSPF路由器将网络中的LS信息收集起来,存储在LSDB中。路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。
每台OSPF路由器都采用SPF算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。
多区域(area)的设计使得OSPF能够支持更大规模的网络。
Hello:周期性发送,用来发现和维护OSPF邻居关系。
DD(Database Description):描述本地LSDB的摘要信息,用于两台设备进行数据库同步。
LSR(Link State Request):用于向对方请求所需要的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。
LSU(Link State Update):用于向对方发送其所需要的LSA,LSU中包含多条LSA。
LS ACK(Link State ACK):用来对收到的LSA进行确认。
邻居表
OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
OSPF的邻居关系通过交互Hello报文建立。
OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。
LSDB表
LSDB会保存自己产生的及从邻居收到的LSA信息。
Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
使用命令行display ospf lsdb查看LSDB表。
OSPF路由表
OSPF路由表和路由器路由表是两张不同的表项。
OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
使用命令display ospf routing查看OSPF路由表。
考虑一种简单的拓扑,两台路由器直连。在双方互联接口上激活OSPF,路由器开始发送及侦听Hello报文。在通过Hello报文发现彼此后,这两台路由器便形成了邻居关系。
邻居关系的建立只是一个开始,后续会进行一系列的报文交互,例如前文提到的DD、LSR、LSU和LS ACK等。当两台路由器LSDB同步完成,并开始独立计算路由时,这两台路由器形成了邻接关系。
邻接关系建立步骤
建立双向邻居关系(发送Hello报文)
协商主从(router-id大的为主,ex-start阶段)
互相描述各自的LSA摘要信息(发送DD报文,exchange阶段)
更新LSA,同步双方LSDB(发送LSR、LSU、LSACK,loading阶段)
然后各自独立使用SPF计算,生成路由
OSPF网络类型是一个非常重要的接口变量,这个变量将影响OSPF在接口上的操作,例如采用什么方式发送OSPF协议报文,以及是否需要选举DR、BDR等。
接口默认的OSPF网络类型取决于接口所使用的数据链路层封装。
OSPF的有四种网络类型,Broadcast、NBMA、P2MP和P2P,其中Broadcast(BMA)和P2P最常用。
一般情况下,链路两端的OSPF接口网络类型必须一致,否则双方无法建立邻居关系。
P2P(Point-to-Point,点对点)
※ P2P指的是在一段链路上只能连接两台网络设备的环境。
※ 典型的例子是PPP链路。当接口采用PPP封装时,OSPF在该接口上采用的缺省网络类型为P2P 。
BMA(Broadcast Multiple Access,广播式多路访问)
※ BMA也被称为Broadcast,指的是一个允许多台设备接入的、支持广播的环境。
※ 典型的例子是Ethernet(以太网)。当接口采用Ethernet封装时,OSPF在该接口上采用的缺省网络类型为BMA。
NBMA(Non-Broadcast Multiple Access,非广播式多路访问)
※ NBMA指的是一个允许多台网络设备接入且不支持广播的环境。
※ 典型的例子是帧中继(Frame-Relay)网络。
P2MP(Point to Multi-Point,点到多点)
※ P2MP相当于将多条P2P链路的一端进行捆绑得到的网络。
※ 没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。
※ 常用做法是将非全连通的NBMA改为点到多点的网络。
① DR与BDR只是一个网段间的。
② DR与BDR遵循“不抢占”原则,如果已经选举完成了,修改某一台设备的接口优先级,也不换更换DR(除非DR挂掉了或者接口都shutdown后,重新选举)
③ 每个网段都会选举DR与BDR,因此一个路由器可能是一个网段的DR,也是另外一个网段的BDR(也可能是Dr或者DRouter)。
④ DR与BDR的选举先看接口优先级priority谁大,其次按router-id谁大
DR与BDR的背景
MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网(Ethernet)是一种典型的广播型多路访问网络。
※ 现在已经基本上不用NBMA了,因此将MA理解为以太网(广播型多路访问网络)即可。
在MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会导致网络中存在过多的OSPF邻接关系,增加设备负担,也增加了网络中泛洪的OSPF报文数量。
当拓扑出现变更,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的损耗。
为优化MA网络中OSPF邻接关系,OSPF指定了三种OSPF路由器身份,DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备用指定路由器)和DRother路由器。
只允许DR、BDR与其他OSPF路由器建立邻接关系。DRother之间不会建立全毗邻的OSPF邻接关系,双方停滞在2-way状态。
BDR会监控DR的状态,并在当前DR发生故障时接替其角色。
OSPF域与单区域(网络范围不大的情况下,推荐使用单区域,不会出现环路)
OSPF域(Domain):一系列使用相同策略的连续OSPF网络设备所构成的网络。
※ OSPF的域中可能包含多个区域Area。
OSPF路由器在同一个区域(Area)内网络中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。
如果OSPF域仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题:
※ LSDB越来越庞大,同时导致OSPF路由表规模增加。路由器资源消耗多,设备性能下降,影响数据转发。
※ 基于庞大的LSDB进行路由计算变得困难。
※ 当网络拓扑变更时,LSA全域泛洪和全网SPF重计算带来巨大负担。
※ 简单来说,就是如果只用单区域,那么每个路由器都有整个domain中所有路由器的路由,其中一个改变,都会使全局变化。
OSPF多区域
OSPF引入区域(Area)的概念,将一个OSPF域划分成多个区域,可以使OSPF支撑更大规模组网。
OSPF多区域的设计减小了LSA泛洪的范围,有效的把拓扑变化的影响控制在区域内,达到网络优化的目的。
在区域边界可以做路由汇总,减小了路由表规模。
※ 比如一个区域都是192.168.0.0网段的,只需要在边界路由器ABR中配置路由汇总即可,所有192.168.0.0的路由都会扔给该区域,进入该区域后由区域内部路由精确送达。
多区域提高了网络扩展性,有利于组建大规模的网络。
在区域边界可以做路由过滤,方便路由控制。
OSPF路由器类型(OSPF路由器根据其位置或功能不同,有如下四种类型)
区域内路由器IR(Internal Router):域(Area)内的路由器(常规区域,也就是除了Area 0以外的区域,比如Area 1或者2等等)。
区域边界路由器ABR(Area Border Router):连接多个域(Area)的路由器。
骨干路由器BR(Backbone Router):骨干域(Area 0)内的路由器。
自治系统边界路由器ASBR(AS Boundary Router):连接其他自治系统(AS)的路由器(比如连接一个Rip系统,身上既运行了OSPF又运行了RIP,起到一个连接的作用)。
[Huawei] ospf [ process-id | router-id router-id ]
示例:[Huawei] ospf 1 // 进入ospf进程1
porcess-id用于标识OSPF进程,默认进程号为1;OSPF支持多进程,在同一台设备上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。router-id用于手工指定设备的ID号。如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号。
进程号仅在本地有效,两边的路由器不是同一个进程也没关系,一般只使用一个进程ospf 1即可
[Huawei-ospf-1] area area-id
示例:[Huawei-ospf-1] area 0 // 进入area 0,首次输入会创建区域0
area命令用来创建OSPF区域,并进入OSPF区域视图。
area-id可以是十进制整数或点分十进制格式。采取整数形式时,取值范围是0~4294967295
[Huawei-ospf-1-area-0.0.0.0] network network-address wildcard-mask
示例:[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255 // 通告192.168.1.0网段
network命令用来指定运行OSPF协议的接口和接口所属的区域。
network-address为接口所在的网段地址。
wildcard-mask为IP地址的反码,相当于将IP地址的掩码反转(0变1,1变0),例如0.0.0.255表示掩码长度24 bit。
[Huawei-GigabitEthernet0/0/0] ospf cost 开销值
示例:[Huawei-GigabitEthernet0/0/0] ospf cost 10 // 将接口GigabitEthernet0/0/0的开销设置为10
ospf cost命令用来配置接口上运行OSPF协议所需的开销。缺省情况下,OSPF会根据该接口的带宽自动计算其开销值
cost取值范围是1~65535。
通过调整开销可以实现选路控制;路由开销的计算是计算传递方向,每个路由器的入口Cost。
[Huawei-ospf-1] bandwidth-reference value
示例:[Huawei-ospf-1] bandwidth-reference 1000 // 配置带宽为1000Mbit/s
bandwidth-reference命令用来设置通过公式计算接口开销所依据的带宽参考值。value取值范围是1~2147483648,单位是Mbit/s,缺省值是100Mbit/s;
接口的cost值=100Mbits➗接口带宽(如果带宽为1000Mbits,那么cost就是1,其实计算是0.1,但是不支持小数显示,所以是1)
修改接口带宽也可以实现选路控制,因为会走cost低的那条路由。
[Huawei-GigabitEthernet0/0/0] ospf dr-priority priority
示例:[Huawei-GigabitEthernet0/0/0] ospf dr-priority 5 // 将GigabitEthernet0/0/0的优先级配置为5
ospf dr-priority命令用来设置接口在选举DR时的优先级。priority值越大,优先级越高,取值范围是0~255,接口优先级,可以指定DR。
实验九快速配置OSPF
单区域OSPF配置
实验十一 单区域OSPF
多区域OSPF配置
实验十二 多区域OSPF