第5章 CHAPTER 5 路由器工作原理 本章主要介绍路由器相关的内容,分为3节,主要内容包括路由器基本工作原理简介、静态路由工作原理和配置、OSPF协议原理和配置。本章内容也是一个核心知识版块,学完之后可以掌握路由器配置和维护等操作。 20min 5.1路由器工作原理简介 交换机通常用于企业内部组网,路由器则更多地用在网络对外连接中,实际应用场景如图5.1所示。 交换机根据目标MAC地址来转发以太网帧,收到一个以太网帧之后提取目标MAC,然后查MAC地址表,找到对应接口转发出去,这是交换机的工作过程。 而路由器则根据目标IP来转发报文,收到一个IP报文后,提取目标IP,查表(路由表),找到对应接口转发出去。 路由表里面的内容比MAC地址表更加丰富,下面具体介绍路由表的具体信息,如图5.2所示,3个路由器连在同一个网段里,当R1报文去往10.1.1.0/24网段时,除了需要知道出接口是G0/0/0外,还得知道下一跳是R2,而不是R3。 图5.1路由器和交换机的工作位置 图5.2路由表信息 交换机的MAC地址表是动态学习的,收到IP报文或者ARP报文时提取报文的源MAC和入接口,更新到MAC地址表中,而路由器的路由表有3个来源,分别是直连、静态、动态。 直连路由来源如图5.3所示,路由器接口配置了IP地址和掩码之后,直接在路由表中添加一条路由,并标注路由来源是直连。如果接口处于down状态,则路由条目会被移除。 静态路由来源如图5.4所示,R1上使用命令配置一条去往30.1.1.0/24网段的路由。路由器会添加一条路由,并标注路由来源为静态路由。 动态路由来源如图5.5所示,使用路由协议动态地学习路由条目并将学到的对应路由来源标注为OSPF。 图5.3直连路由 图5.4静态路由 图5.5动态路由 如果路由器上配置了OSPF,并配置了静态路由,则该怎样标注路由来源呢?例如R2上通过OSPF学习到了40.1.1.0/24网段,然后又配置了一条静态路由去往40.1.1.0/24,此时路由将使用OSPF学习到的路由,该条路由的来源显示为OSPF。 这是因为不同路由来源有不同的优先级,数值越低优先级越高,如图5.6所示,OSPF的优先级高于静态路由,所以会被优先使用。 图5.6路由优先级 当路由器学习到一个新条目时,处理过程如图5.7所示,先使用网段/掩码在自身路由表中查找,如果找到相同条目,则比较优先级,优先级高的条目加入路由表中,如果找不到相同条目,则直接放到路由表中。 图5.7路由条目更新过程 路由器组成的网络中允许环路存在,如图5.8所示,RTA通过OSPF学到两条路由去往10.0.0.0/30网段,但是开销不一样,一条开销为20; 另一条开销为10,RTA优先将开销小的路由条目放入路由表中,报文转发时使用开销最小的路径。 图5.8路由开销 通过display ip routingtable命令可以查询路由表,为了方便说明,左边给每个条目做了编号,如图5.9所示。 (1) Destination/Mask: 目标网段和掩码,用来匹配IP报文里的目标IP。 (2) Proto: 路由来源,有直连路由(Direct)、静态路由(Static)、动态路由(RIP、OSPF)。 图5.9路由表 (3) Pre: 路由优先级(Preference),和Proto有映射关系,直连路由的优先级为0,通过OSPF学来的优先级是10,通过RIP学来的优先级是100。数值越小优先级越高,直连路由的优先级最高。 (4) Cost: 路径开销,从本路由器到达目标网段的总开销,跟路径上的带宽和跳数有关。 (5) Flags: 路由标识,通常是D,指的是已经下发到FIB(Forwarding Information Base),FIB是路由器里面另外一张更详细的表,跟机器硬件实现有关,真正指导报文转发的是FIB表。 (6) NextHop: 下一跳的IP地址。 (7) Interface: 当前路由器的出接口。 路由器具体是如何使用路由表的呢?首先是最长匹配原则,如图5.10所示。RTA收到一个去往10.1.1.4的IP报文,查路由表时里面有两个条目都能匹配,第1个条目匹配2字节,第2个条目匹配3字节。第2条匹配更精准,因此会优选10.1.1.0/24这个路由条目。 图5.10路由最长匹配 如果有多条路由的目标网段一样,则使优先级最高的路由生效,路由表中只能看到一条路由。如果目标网段一样,优先级也一样,则比较开销,使开销最小的路由生效。 如果目标网段、路由来源、开销(Cost)也一样,则该怎么办,如图5.11所示,RTA去往10.1.1.0有两条路径都是通过OSPF学来的,开销也一样。 图5.11等价路由 此时两条路径同时生效,而且都会转发业务报文,形成等价路由,RTA可以通过一定的规则来分配流量,例如根据目标MAC或者目标IP,通过一定的算法算出一个值,然后决定流量采用上面的路径还是采用下面的路径。等价路由的两个条目都会出现在路由表里,如图5.12所示。 图5.12等价路由的路由表 总结一下路由器的转发规则,收到一个报文后,提取目标IP,然后查找路由表: (1) 匹配目标网段和掩码,选择最长匹配的路由条目。 (2) 如果有多条最长匹配一样的条目,则比较优先级,选择优先级最高的条目。 (3) 如果有多条优先级一样的条目,则比较开销,选择开销最小的条目。 (4) 如果有多条开销一样的条目,则形成等价路由,同时使它们生效。 34min 5.2静态路由工作原理与配置 路由表的路由来源可以分为3类,第一类是直连路由,第二类是静态路由,第三类是动态路由(OSPF、RIP),其中直连路由不需要配置,只要给路由器接口配置了IP地址就会自动添加一条直连路由,静态路由和动态路由需要配置才能学到,下面介绍静态路由的原理和配置。 静态路由是指由管理员手动配置和维护的路由,静态路由配置简单,并且无须像动态路由那样占用路由器的CPU资源来计算和分析路由更新。 静态路由的缺点在于,当网络拓扑发生变化时,静态路由不会自动适应拓扑的变化,而是需要管理员手动进行调整,在稍微复杂点的网络中维护不方便。 静态路由一般适用于结构简单的网络。在复杂网络环境中,一般会使用动态路由协议来生成动态路由。不过,即使是在复杂网络环境中,合理地配置一些静态路由也可以提高网络的性能。 主机A和主机B之间有两个路由器RTA、RTB,主机A的IP地址是192.168.1.2,主机B的IP地址是192.168.2.2,如图5.13所示。 图5.13静态路由示例 各个主机和路由器配置好接口IP地址之后,查询路由器B的路由表,如图5.14所示,总共6条直连路由,其中第1、第2、第5、第6条这4条直连路由在配置了接口IP地址之后自动学到(仔细观察掩码的区别),第3条和第4条路由默认就有,是本地环回地址。 图5.14路由表状态 此时,主机B ping主机A的IP地址: 192.168.1.2,报文到达RTB,查路由表时无法匹配任何条目,因此报文会被丢弃。为了让RTB能把报文交给RTA,就必须给RTB添加个路由条目。 在路由器B上通过命令ip routestatic来添加静态路由,这个命令有3个参数,第1个是目标网段,告诉路由器这是要去往哪里的; 第2个是目标网段对应的掩码; 第3个是下一跳IP地址,告诉路由器报文要转发给谁,填的是对方路由器的接口IP,如图5.15所示。 图5.15配置静态路由 配置了这条静态路由之后,RTB就多了一个路由条目,如图5.16所示,倒数第3条就是手动配置的静态路由,Protocol是static,优先级为60。 图5.16RTB的路由表(1) 此时,主机B再ping主机A的IP地址: 192.168.1.2,RTB收到该报文后,查路由表可以命中192.168.1.0/24这个条目,接着就发给NextHop: 10.0.12.1,将报文转交给RTA。 RTA收到该报文后,也查自己的路由表,如图5.17所示,192.168.1.0/24是RTA的直连路由,因此可以命中路由表,并将报文转交主机A。 图5.17RTA的路由表(2) 此时只配置了RTB的静态路由,主机B ping主机A并不能成功,因为ping命令其实包括了ICMP里面的Echo Request和Echo Reply两个方向的报文,主机A收到Echo Request之后还要回Echo Reply给主机B,主机B 收到Echo Reply才算成功。 在主机A回的报文里面,目标IP是主机B的IP地址: 192.168.2.2,该报文到达RTA时,RTA查路由表无法匹配任何条目,报文被丢弃,同样地,为了让报文通过,还得在RTA上添加一个静态路由,如图5.18所示。 图5.18RTA的路由表(3) 配置好RTA、RTB的静态路由之后,主机B就可以成功ping主机A了,如图5.19所示。 主机A、主机B除了要配置IP地址、子网掩码之外,还要配置网关IP,如图5.20所示。 图5.19主机B成功ping主机A 图5.20给主机配置网关IP地址 配置静态路由时需要记好3个参数分别填什么内容,另外在问题定位分析时牢记一个原则: 由于路由器根据路由表来转发,当没有查到匹配的路由条目时就会丢弃报文,所以遇到业务不通时多分析一下路由表的状态,包括来回两个方向的路径。 静态路由除了有普通路由功能外,还有以下3种重要用途: 负载分担、路由备份、默认路由。 负载分担如图5.21所示,RTA和RTB之间有两条链路,可以让两条链路同时工作,以增加路由器之间的带宽。 图5.21负载分担应用场景 在路由器B上配置两条静态路由,目标网段和掩码一样,但是下一跳不一样,配置之后查询RTB的路由表,如图5.22所示,第2条路由的Destination/Mask为空,表示和上面一条一样。在实际转发业务时,RTB会根据一定的算法将流量分布到两条链路上。 图5.22等价路由条目 RTA的配置和路由表状态和RTB类似。 路由备份如图5.23所示,RTA和RTB之间有两条链路,可以让一条链路工作,让另外一条处于备份状态,如果工作链路发生故障,则备份链路马上进入工作状态。 图5.23路由备份工作场景 RTB配置了两条到达192.168.1.0网段的静态路由,目标网段和掩码一样,但是优先级不一样,静态路由的默认优先级是60,可以通过参数preference修改优先级,例如第2条静态路由的优先级被修改成100,选择最高优先级的那一条,如图5.24所示,路由表中只有一条路由生效。 图5.24RTB的路由表 将主链路停掉,备份链路会马上进入工作状态,如图5.25所示。 图5.25主备链路切换 默认路由,当路由器查路由表时,如果没有匹配的条目就会将报文丢弃,设备可以配置默认路由作为报文的转发路径。在路由表中,默认路由的目的网络地址为0.0.0.0,掩码也为0.0.0.0,如图5.26所示,RTA配置一条缺省路由,任何在路由表里找不到匹配条目的报文都会被交给RTB。 图5.26默认路由 在3个路由器的场景下配置静态路由,如图5.27所示。 图5.27多路由器场景下配置静态路由 静态路由通常用于小型网络,当拓扑变化时不能动态调整,使用不灵活,除了路由功能外,静态路由还有几个特殊功能,分别为负载分担、路由备份、默认路由。 60min 5.3OSPF协议原理与配置 常用的路由协议有3种: RIP、OSPF、ISIS,其中RIP早期比较常用,但是有一些弊端,现在的网络基本不用RIP,华为新版路由交换HCIA课程也将RIP去掉了。现在网络常用的协议是OSPF和ISIS,其中ISIS协议在HCIP课程里介绍,HCIA课程里只介绍OSPF。 开放式最短路径优先(Open Shortest Path First,OSPF)具有收敛快、效率高、扩展性好等特点,目前得到广泛应用。 5.3.1OSPF基本概念 路由器ID: 每个路由都有一个编号,也就是路由器ID,如图5.28所示,路由器ID的格式与IP地址一样,可以手动指定路由器ID,通过[RTA]ospf routerid 1.1.1.1命令配置。 如果不指定,启动OSPF进程后,则会自动指定路由器ID,优先使用环回IP地址,如果没有环回IP,则取接口IP值最大的那个。 OSPF开销: OSPF基于接口带宽计算开销,计算公式为: 接口开销=带宽参考值/带宽。带宽参考值可以配置,默认为100Mb/s。例如一条100Mb/s链路的开销: 100/100=1; 一条10Mb/s链路的开销: 100/10=10。带宽越大,开销越小。 可以指定具体链路的开销,也可以修改全局的带宽参考值,如图5.29所示, 图5.28路由器ID 图5.29OSPF开销配置 5.3.2OSPF基本工作原理 总共4个路由器,这4个路由器如何自动学习路由条目呢?如图5.30所示,首先每个路由器会发送链路状态公告(Link State Advertisement,LSA),LSA里面包含路由器的详细信息,例如RTA的LSA内容如下。 链路数量: 2 网段: 10.0.0.0 掩码: 255.0.0.0网段开销: 10 网段: 20.0.0.0 掩码: 255.0.0.0网段开销: 10 图5.30OSPF计算过程 RTA的LSA会发给RTB和RTC,同时RTC还会透传给RTD,最终4个路由器都有RTA的LSA。同理,RTB、RTC、RTD也会发送各自的LSA,每个路由器会把收到的所有LSA放在自己的链路状态数据库(Link State Database,LSDB)里。 LSDB稳定后,路由器使用最短路径优先(Shortest Path First,SPF)算法对LSDB进行计算,得出最短路径树。树根就是当前路由器,例如RTC计算最短路径树时,树根就是RTC,然后计算去往各个路由器的最短路径。 得到最短路径树之后,路由器就可以算出路由表。 总结一下路由器计算路由表的大致过程: (1) 发出LSA,并泛洪到各个路由器。 (2) 收集LSA,保存到LSDB。 (3) 使用SPF算法计算最短路径树。 (4) 根据最短路径树计算路由表。 5.3.3OSPF基本工作流程 OSPF基本工作流程如图5.31所示,RTA和RTB连在同一个网段。 图5.31OSPF基本工作流程 OSPF的工作过程有以下几个步骤。 (1) 启动: 路由器上电,接口配置了IP地址,并且配置了OSPF,此时会发出Hello报文探测邻居,Hello报文用的目标IP是组播IP 224.0.0.5。如果同一个网段里有多个路由器,则都可以收到这个Hello报文,如图5.32所示。 (2) 建立邻居: RTA和RTB互相发Hello报文,Hello报文里带有本路由器相关的内容,如图5.33所示,Hello报文携带左边方框里面的信息,由于第1个Hello报文里面不知道邻居是谁,所以置空,收到对方Hello报文后,知道邻居是谁,因此第2个Hello报文里将邻居填进去,收到第2个Hello后,邻居才算建立成功。邻居建立完成后,开始发送LSA,同步LSDB数据库。 图5.32同网段多个路由器 图5.33邻居建立过程 RTA和RTB的信息必须匹配才能建立邻居,否则会丢弃对方发送的Hello报文,例如RTA用的版本号是IPv4,RTB用的版本号是IPv6,此时无法建立邻居。 (3) 建立邻接: 邻居建立完成后开始同步LSDB,同步过程如图5.34所示,假设RTA新加入网络,只有RTA的LSA,此时需要从RTB同步LSDB。 图5.34LSDB同步过程 但是路由器自己并不知道缺哪条LSA,RTA和RTB都不知道对方有哪些LSA,此时RTA和RTB互相交互LSDB清单,这个清单就是数据库摘要(Database Description,DD)报文。 RTA和RTB交互DD时有一个先后顺序,路由器ID值大的先发送DD,小的后发送,因此同步最开始需要确定主次,通过DD报文选出主次,此时DD里面并没有LSDB信息。 主次的选举见图5.34中的步骤1、2、3,在步骤1、2中,RTA和RTB互相发送一个DD,该DD中都认为自己是主,DD报文有一个Sequence编号,最开始是随机值,后面递增,后面还有3个标志位: I、M、MS。 I表示Initiate,置1表示这是第1个DD报文。 M表示More,置1表示后面还有DD报文。 MS表示Master,置1表示自己是主。 RTA和RTB收到对方的DD之后,通过比较路由器ID,RTA发现RTB的ID值比较大,因此RTB是主,自己是从,所以RTA又将一个DD发送给了RTB,告诉RTB自己是从,见步骤3。 主从选好之后,开始交互DD,RTB是主,所以先发,见步骤4、5,Sequence都用主路由器定的值,而且后面递增,所以是Y+1。 RTA和RTB收到对方DD之后,和自己的LSDB比较,RTA发现缺了RTB、RTC、RTD的LSA,所以向RTB请求这3条LSA,见步骤6,Link State Request简称LSR。 RTB收到LSR后,将对应的LSA发送给RTA,见步骤7,Link State Update简称LSU。 RTA收到LSU之后,还要发送一个ACK,确认LSU已经收到,见步骤8。 RTA和RTB之间的LSDB同步完成后,进入Full状态,只有达到Full状态才是邻接关系。 (4) 维护关系: LSDB同步完成后进入一个稳定状态,后面还会使用Hello报文来维护关系,RTA、RTB周期性地将Hello报文发送给对方,例如每10s发一个,如果连续3个周期收不到对方的Hello报文,就可以判定对方出故障了,然后删除相应的路由条目。 5.3.4DR与BDR 如果同一个网段里有多个路由器,则需要考虑同步效率的问题,如图5.35所示,同一个网段有4个路由器,两两之间同步总共需要6次,随着路由器数量的增加,同步次数增长很快,效率较低。 图5.35数据库同步次数 为了提高数据库同步的效率,需要在网段中选出一个同步中心,如图5.36所示,选RTA作为同步中心,其他路由器只跟RTA同步。此时同步次数可以减少到3次,大大提高了同步效率。RTA通常称为指定路由器(Designated Router,DR)。 图5.36数据库同步中心 DR通过路由器优先级选举,值越大,优先级越高,默认值为1,如果优先级都一样,则比较路由器ID,值最大的就是DR,如图5.37所示。优先级可以配置,如果设置为0,则不参加选举。DR选举在邻居建立阶段完成,Hello报文里带有当前路由器的优先级和路由器ID。 图5.37DR选举 DR是数据库同步中心,在选举DR的同时还会选举一个次优的路由器作为DR的备份,这个路由器称为BDR(Backup DR,备份DR),在图5.37中,RTC的优先级最高,是DR,RTA和RTB的优先级一样,但是RTB的路由器ID比RTA大,因此RTB是BDR。 如果DR发生故障,则BDR会自动成为DR,网络中重新选举BDR。 5.3.5邻居和邻接的区别 成为邻居的条件是路由器达到2Way状态,成为邻接的条件是数据库同步完成,如图5.38所示,RTA有3个邻居,RTB也有3个邻居,4个路由器之间都是邻居关系。 图5.38邻居和邻接 RTA是DR,与另外3个路由器同步数据库,RTA与RTB、RTC、RTD都是邻接关系,但是RTC和RTD之间就没有直接进行数据库同步,因此RTC和RTD之间不是邻接关系。 有邻居关系的两个路由器,不一定有邻接关系,但是有邻接关系的两个路由器,一定是邻居(注意: BDR也会与网络上所有的路由器建立邻接关系)。 OSPF状态迁移如图5.39所示,可以长时间保持该状态。 图5.39OSPF状态迁移 5.3.6OSPF区域 OSPF协议可以支持大型网络,在网络规模较大时会有以下问题: (1) LSDB过大,占路由器内存。 (2) LSDB过大,计算路由时消耗太多CPU。 (3) 网络震荡问题,任何链路状态改变,全网路由器都需要更新LSDB并重新计算。 为了解决以上问题,OSPF将网络划分为不同的区域,不同区域的路由器维护的LSDB不一样,如图5.40所示,总共有4个区域,分别是区域0、1、2、3,其中区域0比较特殊,是骨干区域,其他区域是普通区域,OSPF区域有以下规则: 图5.40OSPF区域 (1) 普通区域必须连接到骨干区域上,图5.40中区域1、2、3都和区域0连接。 (2) 普通区域不能直接互相发布路由,避免路由环路,例如RTF和RTE之间不能连在一起并在直连接口上运行OSPF,见打叉部分连线,否则OSPF工作会异常。 (3) 不同区域通过路由器连接,例如RTA,不同接口工作在不同区域。 不同区域的路由器维护的LSDB不一样,RTD只需维护RTD和RTA的LSA,但是RTA和RTD不一样,它有两个LSDB,其中一个是区域1的LSDB,里面有RTD和RTA的LSA,另一个是区域0的LSDB,里面有RTA、RTB、RTC的LSA,其他路由器与此类似。 那么问题来了,RTD没有RTB和RTF的LSA,RTD如何学习30.0.0.0/8网段路由呢? 图5.40中RTA、RTB、RTC处在区域边界上,它们有一个特殊任务,需要对不同区域里面的网段进行概括并同步到彼此区域里面。 例如RTB会往区域0里面通告一个特殊的LSA,在里面告诉RTA和RTC,这里有30.0.0.0/8这个网段; RTA也会往区域1里面通告一个类似的LSA,告诉RTD,这里有30.0.0.0/8、40.0.0.0/8、50.0.0.0/8、60.0.0.0/8,同时还有20.0.0.0/8,因为RTC也会通告20.0.0.0/8。 这个特殊的LSA只是一个网段概括,RTD只需了解到RTA有30.0.0.0/8这个网段就可以了,并不需要了解RTB和RTF的具体细节。 这样RTD既可以学习到全网的路由,又可以大大减少LDSB的条数。 OSPF网络里不同路由器有不同的角色,如图5.41所示,不同角色的定义如下。 图5.41OSPF路由器角色 (1) IR: 完全处于普通区域的路由器,例如RTD。 (2) BR: 完全处于骨干区域的路由器,例如RTG。 (3) ABR: 处于两个区域之间,例如RTA、RTB、RTC。 (4) ASBR: 与外界互通的路由器,例如RTE。 AS指的是Autonomous System,中文意思是自治系统,图5.41中RTA、RTB、RTC、RTD、RTE、RTF、RTG之间运行OSPF,使用统一的路由协议互相学习路由信息,这组路由器就是一个AS。 每个网络都需要和Internet互联,也就是说每个网络都需要有出口,和其他的AS连接,这个出口路由器负责往外面发布本AS的路由信息,同时也负责导入外面的路由信息,它是一个AS边界路由器。 5.3.7OSPF协议格式 OSPF报文封装在IP报文里面,具体格式如图5.42所示,当IP头部Protocol字段的值为89时,表示里面封装的是OSPF报文。目标IP是一个组播IP: 224.0.0.5。 因为OSPF报文不带接口号,因此它属于网络层协议,与ICMP协议处于同一个位置。 OSPF报文格式里面又分两部分,一部分是公共头部; 另一部分是具体报文内容,如图5.43所示,不管是哪种报文都带有一个公共头部。 图5.42OSPF报文格式 图5.43OSPF报文具体格式 其中Version用来标识这是IPv4还是IPv6协议; Packet Type用来标识后面是什么报文,例如当Packet Type=1时,标识里面是Hello报文; Packet Length、Router ID、Area ID、Checksum比较简单,此处就不介绍了。 AuType指认证类型,OSPF支持3种不同方式,即0: 不认证; 1: 明文认证; 2: MD5认证。如果需要认证,则最后Authentication字段填认证密钥。 认证指的是两个路由器之间的认证,双方配置必须一致才能成功建立邻居。 下面介绍Hello报文格式,如图5.44所示,该内容跟在公共头部的后面。 图5.44Hello报文格式 (1) Network Mask: 发送Hello报文的接口的网络掩码。 (2) Hello Interval: 发送Hello报文的时间间隔,单位为秒,默认为10s。 (3) Options: 标识发送此报文的OSPF路由器所支持的可选功能,HCIA课程不展开介绍。 (4) Router Priority: 发送Hello报文的接口的Router Priority,用于选举DR和BDR。 (5) Router Dead Interval: 失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效,单位为秒,通常为4倍Hello Interval。 (6) Designated Router: 发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,则表示未选举DR路由器。 (7) Backup Designated Router: 发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,则表示未选举BDR。 (8) Neighbor: 邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文。如果有多个邻居,则里面会填多个路由器ID。 5.3.8OSPF配置 总共有3个路由器,RTA在骨干区域0,RTC在普通区域1,RTB是ABR,在区域0和区域1之间,如图5.45所示。 图5.45实验拓扑 RTA的配置命令如图5.46所示,首先配置环回IP和接口IP,然后配置路由器的ID,使用命令ospf routerid 1.1.1.1,通常使用环回地址作为路由器ID,然后进入Area 0,在里面宣告环回地址和接口地址对应的网段,注意,掩码用的是反掩码。 RTB的配置命令如图5.47所示,配置步骤和RTA类似,不同点在于RTB有两个区域,将对应的网段宣告在对应的区域里面。 图5.46RTA的配置命令 图5.47RTB的配置命令 RTC的配置命令如图5.48所示,和RTA类似。 图5.48RTC的配置命令 查看RTA的路由学习情况,如图5.49所示,方框内的路由都是通过OSPF学习来的,其他路由是RTA的直连路由。 图5.49RTA的路由表 查看RTA的LSDB,如图5.50所示,RTA只有一个LSDB,方框内的两条LSA就是前面介绍的由ABR发出来的特殊LSA,是一个网络摘要,不是路由器明细。 图5.50RTA的LSDB 查看RTA的邻居,如图5.51所示,本路由器的ID是1.1.1.1,接口192.168.1.2的邻居是2.2.2.2,LSDB同步状态是Full,优先级是默认值1,DR是192.168.1.2。 图5.51RTA的邻居信息 前面介绍过DR的选举过程,首先比较优先级,如果优先级一样就比较路由器ID值大小,按理说RTB的ID是2.2.2.2,RTB应该是DR,为什么这里RTA是DR呢?有一点需要注意的是OSPF的DR是非抢占式的,如果网络里有DR存在,则后加入的路由器的优先级再高也不会变成DR,因为配置时先启动的是RTA,所以RTA首先成为DR。 RTB和RTC的路由表、LSDB、邻居关系可以自己尝试,其中RTB是ABR,它有两个LSDB,如图5.52所示,一个是Area 0的; 另一个是Area 1的。 图5.52RTB的LSDB 5.3.9项目案例: OSPF A公司使用OSPF组建公司路由网络,有3个区域,即区域0、区域1、区域2,如图5.53所示。R1与外网连接,R6模拟外网,里面有一个环回地址1.1.1.1用于测试。两台PC使用DHCP分配IP地址,DHCP服务器在R4、R5上面。 图5.53项目拓扑 要求: 两台PC可以互相ping通,而且还可以访问通外网IP地址1.1.1.1。 步骤1: 配置PC,两台PC的配置一样,如图5.54所示,使用DHCP获得IP地址。 步骤2: 配置R1,如图5.55所示,配置各接口IP地址,然后配置OSPF。因为R1的G0/0/2连接外网,因此不能在此接口上使能OSPF,这里使用静态路由学习去往1.1.1.1的路由,同时将静态路由引入OSPF进程,使其他路由器学习到去往1.1.1.1的路由。 图5.54PC配置 图5.55配置R1 步骤3: 配置R2,如图5.56所示,配置各接口IP地址,然后配置OSPF,不同接口属于不同区域,需要在对应区域里面宣告相应网段。 步骤4: 配置R3,如图5.57所示,配置各接口IP地址,然后配置OSPF,不同接口属于不同区域,需要在对应区域里面宣告相应网段。 图5.56配置R2 图5.57配置R3 步骤5: 配置R4,如图5.58所示,配置各接口IP地址,然后在Ethernet 0/0/1接口上开启DHCP服务器,然后配置OSPF,需要将70.0.0.0/24网段宣告到OSPF,使其他路由器能学习到这个网段。 图5.58配置R4 步骤6: 配置R5,如图5.59所示,配置各接口IP地址,然后在Ethernet 0/0/1接口上开启DHCP服务器,然后配置OSPF,需要将70.0.0.0/24网段宣告到OSPF,使其他路由器能学习到这个网段。 步骤7: 配置R6,如图5.60所示,配置各接口IP地址,然后配置一条默认路由,下一跳指向R1。 图5.59配置R5 图5.60配置R6 步骤8: 验证实验结果,如图5.61所示,在PC1上使用ipconfig命令查询自己的IP,经查询IP是70.0.0.254,因为DHCP分配IP地址的时候是从高到低分配的,最高的IP地址就是70.0.0.254。 图5.61结果验证 PC2的IP地址也是由DHCP分配的,经查询IP是80.0.0.254。从PC1可以ping通PC2,也可以ping通外网IP: 1.1.1.1。 5.3.10小结 本章的内容非常重要,首先要掌握OSPF协议从头到尾的工作过程,还要清楚理解DR和BDR的作用和选举过程,以及邻居和邻接的区别。最后要理解为什么要分区域,还要理解区域的一些规则,以及分区域后如何学习全网路由。 OSPF初学比较抽象,需要多做实验,多练习。