OSPF在企业网络中的应用
开放式最短路径优先(英文Open Shortest Path First,OSPF)是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。它使用“代价(Cost)”作为路由度量。链路状态数据库(LSDB)用来保存当前网络拓扑结构,它在同一区域中的所有路由器上是相同的。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。
OSPF协议是大中型网络上使用最为广泛的IGP(Interior Gateway Protocol)协议。节点在建立邻接,接受链路状态通告(Link-state Advertisement,LSA)时,可以通过MD5或者明文进行安全验证。OSPF的主要特性如下:
1. 适应范围广 支持各种规模的网络,最多可支持一千台路由器。
2.节省带宽 路由信息采用触发更新,只有当网络的拓扑结构发生变化时才进行路由表的更新;网络拓扑结构不变时,每30分钟更新一次。
3.收敛快速 在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
4.无自环 OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法上保证了不会生成自环路由。
5.区域划分 允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象画,从而减少了占用的网络带宽。
6.等值路由 支持到同一目的地址的多条等值路由。
7.路由分级 使用四类不同等级的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
8.支持验证 支持基于接口的报文验证以保证路由计算的安全性。
9.组播发送 在有组播发送能力的链路层上以组播地址收发报文,既达到了广播的作用,又最大程度地减少了对其他网络设备的干扰。
区域
一个OSPF网络被分割成多个区域。区域将网络中的路由器在逻辑上分组并以区域为单位向网络的其余部分发送汇总路由信息。区域是以接口为单位来划分的,所以一台多接口路由器可能属于多个区域。相同区域内的所有路由器都维护一份相同的链路状态数据库(LSDB),如果一台路由器属于多个区域,那么它将为每一个区域维护一份LSDB。OSPF有多种区域类型,其中定义了几种特殊的区域:
1.骨干区域 骨干区域(Backbone Area)也即Area 0,是整个OSPF域的核心区域。所有其他非骨干区域必须和骨干区域直接相连。骨干区域的功能是在不同的非骨干区域之间分发路由信息。
2.末梢区域 末梢区域(Stub Area)是一个不允许AS外部路由通告(AS External LSA,即类型5 LSA)在其内部进行洪泛扩散的区域。末梢区域的ABR会通告一条默认路由(default route)到该区域内所有路由器,任何发往AS外部网络的数据流都将依据默认路由来转发。
3.非纯末梢区域 非纯末梢区域(Not-So-Stubby Area,NSSA)允许引入AS外部路由并且扩散到其他区域,但是NSSA仍旧不允许其他区域通告的AS外部路由进入该区域。
4.完全末梢区域 完全末梢区域(Totally Stubby Areas)是Cisco私有的一种区域类型。完全末梢区域不仅不允许AS外部路由通告在其内部洪泛,还不允许区域间汇总路由(Network Summary LSA ,即类3 LSA)在其内部洪泛。同末梢区域一样,完全末梢区域ABR也会向该区域内所有路由器通告一条默认路由,任何发往其他区域以及AS外部网络的数据流都将依据默认路由来转发。将区域设置为完全末梢区域可以显著的降低路由表条目的数量。
5.完全非纯末梢区域 完全非纯末梢区域(NSSA Totally Stubby Area )也是Cisco私有的区域类型,该种区域除了拥有和NSSA相同的特性外,还不允许类型3 LSA在该区域内部洪泛。完全非纯末梢区域ABR也会向该区域内所有路由器通告一条默认路由。将区域设置为完全非纯末梢区域也会显著的降低路由表条目的数量。
OSPF路由器类型
OSPF定义了一下4种路由类型:
内部路由器(Internal Router)、骨干路由器(Backbone Router)、区域边界路由器(Area Border Router,ABR)、自治系统边界路由器(Autonomous System Boundary Router,ASBR)。
1.内部路由器 如果一台路由器上所有启用了OSPF的接口都在同一区域,那么这台路由器就是内部路由器。
2.骨干路由器 骨干路由器是指至少有一个启用了OSPF的接口是和骨干区域(Area 0)相连的路由器。一台骨干路由器也可以同时是ABR或ASBR,如上图中的R2和R3。如果一台路由器上所有的接口都属于Area 0,那么这台路由器也是一台内部路由器。
3.区域边界路由器 区域边界路由器是指连接一个或者多个区域到骨干区域的路由器。区域边界路由器必须至少有一个接口属于骨干区域。区域边界路由器为每一个与之相连的区域维护一份链路状态数据库,因此区域边界路由器需要比内部路由器更多的内存资源和更高性能的处理器。
4.自治系统边界路由器 自治系统边界路由器(ASBR)用来把从其他路由协议(如BGP、EIGRP等)学习到的路由以路由重分发的方式注入到OSPF进程中,从而使得整个OSPF域内的路由器都可以学习到这些路由(除了末梢区域内的路由器)。一台ASBR可以是OSPF域内非末梢区域的任何路由器,它可以是内部路由器、区域边界路由器、骨干路由器。
OSPF网络类型
OSPF定义了以下5种网络类型:
点到点网络(Point-to-point)、广播网络(Broadcast)、非广播多路访问网络(Nonbroadcast Multiaccess,NBMA)、点到多点网络(Point-to-multipoint)、虚链路(Virtual links)。
1.点到点网络 点到点网络,例如E1、SONET,是单独连接一对路由器的网络。点到点网络上的一对OSPF路由器形成完全邻接关系(Full Adjacency),并且不进行DR和BDR的选举。点到点网络上的路由器使用组播地址224.0.0.5发送OSPF协议数据包。
2.广播网络 广播网络即可以同时连接多于两台设备的网络,如以太网、令牌环网、FDDI。广播网络上的路由器发送的组播/广播数据包会被其他与之相连的路由器收到。在广播网络上的OSPF路由器会选举一台指定路由器(DR)和一台备份指定路由器(BDR)。所有始发于DR和BDR的OSPF数据包使用目的地址224.0.0.5,以组播方式发送到所有其他OSPF路由器,所有其他的路由器都将使用目的地址224.0.0.6,以组播方式发送OSPF数据包到DR和BDR。所有其他的路由器只与DR和BDR建立完全邻接关系。
3.非广播多路访问网络 NBMA网络,诸如X.25、帧中继、ATM等,可以同时连接两台以上的路由器,但是这种网络没有广播数据包的能力。一台处于NBMA网络上的路由器发送的组播/广播数据包将不能被其他与之相连的路由器收到。在NBMA网络上需要选举DR和BDR,并且所有的OSPF数据包都是单播发送的。
4.点到多点网络 点到多点网络是NBMA网络的一个特殊设置,可以看作是一群点到点链路的集合,因此在该种网络上不必选举DR和BDR。点到多点网络上OSPF的行为和点到点网络OSPF的行为一样,也使用组播地址224.0.0.5发送OSPF协议数据包。
5.虚链路 虚链路被路由器认为是没有编号的点到点网络的一种特殊设置,在虚链路上OSPF数据包是以单播方式发送的。不能人工设置一个接口的网络类型为虚链路。
此外还有一种特殊的网络类型,称之Loopback类型。OSPF路由器上的环回接口在默认状态下均为此类型。不能人工设置一个接口的网络类型为Loopback。
指定路由器和备份指定路由器
在广播多路访问网络和NBMA网络上会选举DR和BDR。所有其他路由器只与DR和BDR建立完全邻居关系,其他路由器之间的邻居状态停留在2-Way状态。所有其他路由器使用组播目的地址224.0.0.6向DR和BDR发送链路状态更新。
DR完成以下工作:
1.描述该多路访问网络和与其相连的路由器。
2.管理该多路访问网络上的LSA洪泛扩散过程。
为了避免因DR失效导致的单点故障,多路访问网络上还将选举BDR。DR失效时,BDR将成为DR,由于网络上其他路由器已经和BDR形成了完全邻接关系,因此可以将DR失效对网络的影响降至最低。
DR和BDR的相关选举规则如下:
1.如果一台OSPF路由器的接口优先级(Priority)为0,那么这台路由器永远不能成为DR或BDR。
2.具有最高优先级的路由器将会选举为DR,具有次高优先级的路由器将会选举为BDR。
3.如果同时有多台路由器具有相同的优先级,那么具有最高路由器ID的路由器将会选举为DR。
4.当DR失效时,BDR将成为DR,并将重新选举一个BDR。
5.优先级的取值范围为0-255,更高的优先级意味着路由器有更大的机会成为DR。
6.如果一台具有更高优先级的路由器在选举完DR和BDR之后接入网络,该路由器将不会成为DR或BDR,直到DR或BDR失效。即DR和BDR的选举不是抢占式的。
OSPF邻接关系
在OSPF路由器之间互相交换信息之前,必须先建立邻接关系。
两台OSPF路由器要建立完全邻接关系,以下参数必须相同:
1.Hello时间间隔
2.Dead时间间隔
3.区域编号
4.认证(如果启用了认证)
5.链路MTU大小
6.子网掩码
7.子网号
8.末梢区域设置
一般来说,建立OSPF完全邻接时会经过以下状态:
1.失效状态(Down):这是邻居会话的初始状态,表示最近没有从邻居收到信息。在NBMA网络上,可能仍然会以较低频率向处于Down状态的邻居发送Hello数据包。
2.尝试状态(Attempt):该状态仅仅适用于连接在NBMA网络上的邻居。该状态表示最近没有从邻居收到信息,但仍需要作进一步的尝试,来联系邻居。这时按某一特定间隔向邻居发送Hello数据包。
3.初始状态(Init):在此状态下,表示最近收到了从邻居发来的Hello数据包。但是,仍然没有和邻居建立双向通信(Bidirectional Communication),例如,路由器自身并没有出现在邻居发送的Hello数据包中。
4.双向通信状态(2-Way):此状态意味着两台路由器之间建立了双向通信。在此状态下还将进行DR和BDR的选举(只有处于2-Way状态的路由器才有资格参选DR和BDR)
信息交换初始状态(ExStart):这个状态是建立邻接关系的第一步。该状态的目标是决定信息交换时路由器的主从关系,并确定初始数据库描述(DD)数据包的序列号。具有最高路由器ID的路由器将成为主路由器。
5.信息交换状态(ExChange):在此状态的路由器通过向邻居发送DD数据包来描述其完整的链路状态数据库。每一个DD数据包都有一个序列号,并且需要被显式的确认。在任何时候,每次只能发送一个DD数据包。在此状态下,路由器也可以发送链路状态请求数据包,用来向邻居请求最新的LSA。实际上,这些状态的邻接关系完全有能力发送和接收所有类型的OSPF协议数据包。
6.信息加载状态(Loading):在此状态下,路由器将会向邻居路由器发送链路状态请求数据包,用来请求信息交换状态发现的最新的LSA。
7.完全邻接状态(Full):在此状态下,邻居路由器形成完全邻接关系。这些邻接关系将会在路由器LSA和网络LSA中被描述。
OSPF数据包类型和格式
OSPF定义了以下5种协议数据包类型:
Hello包
数据库描述包
链路状态请求包
链路状态更新包
链路状态确认包
由于OSPF协议定义了多种路由器的类型,因而定义多种LSA通告的类型也是必要的。
例如:一台DR路由器必须通告多路访问链路和所有与这条链路相连的路由器,而其他类型的路由器将不需要通告这种类型的信息。
OSPF的七种类型LSA:
1.ROUTER LSA ,描述区域内部与路由器直连的链路的信息.
2.NETWORK LSA, 记录了广播或是NBMA网段上所有路由的ROUTER ID.
3.NETWORK SUMMARY LSA,将所连接的区域内部的链路信息以子网的形式传播到邻区.
4.ASBR SUMMARY LSA ,描述的是一个ASBR的ROUTER ID.
5.AS EXTERNAL LSA ,描述的是AS外部的路由信息.
6.在MOSPF协议中使用的组播LSA.(不常用)
7.NSSA EXTERNAL LSA ,在NSSA区域内传播的,描述到AS外部的路由信息.
OSPF在网络中应用的优势:
路由协议是网络的核心技术之一,要设计一个IP网络,首先遇到的问题是选用何种路由协议,常见的路由协议包括RIP、OSPF、ISIS、BGP等。何时应选用OSPF,何时不能选用OSPF是值得重视的问题。
OSPF应用分析
进行IP网络设计需要考虑的因素主要有:网络拓扑、选址与路由汇总、路由选择、路由收敛、网络可伸缩性、安全性等几点。可以分别从这方面来考虑在什么的环境下使用OSPF,而什么样的环境不能使用OSPF。
从网络拓扑结构来看,OSPF是专门为大网络而设计的IP路由协议,它没有路由跳数限制,允许网络域被细分成各个易于管理的子域,支持的路由器数量在实际环境中没有限制。
不过,如果要求不使用层次性的结构组网,OSPF就丧失了支持大型网络的优势。
从选址与路由汇总来看,OSPF为无类路由协议,支持VLSM,所以能很好地支持路由汇总。路由汇总浓缩了路由信息,能将一些路由信息整合到一起,减轻了路由器与网络两方面的负担。所以在网络中,随着规模的增大,汇总的重要性也逐渐增大。不过,OSPF的汇总有一个缺点是需要手工设置,这就需要管理员分IP地址时,必须注意各分区间IP地址的层次性,以方便手工设置路由汇总。
从路由选择来看,OSPF缺省使用路径的带宽作为路径代价的度量,选择拥有最小代价的路径作为最佳路径。在多条路径拥有相同的代价时,OSPF能支持同时使用这些路径作为最佳路径,较好地支持负载平衡。
从路由收敛来看,OSPF的收敛时间数量级一般为秒级,可以适用于大多数网络。
从伸缩性来看,OSPF保存所在间区的所有连接状态以及外部路由,对存储器利用是比较高的。另外,只要连接状态发生变化,OSPF就要使用大量的CPU资源进行拓扑的重新计算。可以通过路由汇总,减少CPU的使用。最后,OSPF仅在连接状态变化时才发送状态变化报告。
从安全性来看,OSPF可以支持对路由信息进行认证,只接受认证通过的信息,提供了较高的安全性。
案例:
R1配置:
Router>
Router>en
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int f 0/0
Router(config-if)#
Router(config-if)#
Router(config-if)#ip add 192.168.1.1 255.255.255.0
Router(config-if)#int s 1/0
Router(config-if)#ip add 192.168.2.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:06:20: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
00:06:21: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#int f 0/0
Router(config-if)#no shut
Router(config-if)#
00:06:32: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
00:06:33: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
00:06:41: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#ex
Router(config)#
Router(config)#
Router(config)#router ospf 100
Router(config-router)#net
Router(config-router)#network 192.168.1.0 0.0.0.255 ar
Router(config-router)#network 192.168.1.0 0.0.0.255 area 1
Router(config-router)#net
Router(config-router)#network 192.168.2.0 0.0.0.255 ar
Router(config-router)#network 192.168.2.0 0.0.0.255 area 1
Router(config-router)#^Z
Router#
R2配置:
Router>
Router>en
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int f 0/0
Router(config-if)#ip add 192.168.6.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:09:45: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
00:09:46: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#int s 1/0
Router(config-if)#ip add 192.168.2.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
Router(config-if)#
00:10:18: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
00:10:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#int s 1/1
Router(config-if)#ip add 192.168.3.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:10:48: %LINK-3-UPDOWN: Interface Serial1/1, changed state to up
00:10:49: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/1, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#^Z
Router(config)#router ospf 100
Router(config-router)#net
Router(config-router)#network 192.168.2.0 0.0.0.255 are
Router(config-router)#network 192.168.2.0 0.0.0.255 area 1
Router(config-router)#net
Router(config-router)#network 192.168.
00:14:23: %OSPF-5-ADJCHG: Process 100, Nbr 192.168.2.1 on Serial1/0 from LOADING to FULL, Loading Done
% Incomplete command.
Router(config-router)#
Router(config-router)#network 192.168.3.0 0.0.0.255 are
Router(config-router)#network 192.168.3.0 0.0.0.255 area 0
Router(config-router)#ex
Router(config)#router rip
Router(config-router)#net
Router(config-router)#network 192.168.6.0
Router(config-router)#
Router(config-router)#
Router(config-router)#ex
Router(config)#router rip
Router(config-router)#redistribute ospf 100 me
Router(config-router)#redistribute ospf 100 metric 2
Router(config-router)#ex
Router(config)#router ospf 100
Router(config-router)#re
Router(config-router)#redistribute rip ?
metric Metric for redistributed routes
metric-type OSPF/IS-IS exterior metric type for redistributed routes
route-map Route map reference
subnets Consider subnets for redistribution into OSPF
tag Set tag for routes redistributed into OSPF
<cr>
Router(config-router)#redistribute rip
% Only classful networks will be redistributed
Router(config-router)#
Router(config-router)#
Router(config-router)#
Router(config-router)#^Z
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#router ospf 100
Router(config-router)#de
Router(config-router)#default-i
Router(config-router)#default-information o
Router(config-router)#default-information originate
Router(config-router)#^Z
Router#
R3配置:
Router>
Router>en
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int s 1/1
Router(config-if)#ip add 192.168.3.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#int s 1/0
Router(config-if)#ip add 192.168.4.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
Router(config-if)#
Router(config-if)#ex
Router(config)#router ospf 100
Router(config-router)#net
Router(config-router)#network 192.168.3.0 0.0.0.255 area 0
Router(config-router)#net
Router(config-router)#network 192.168.4.0 0.0.0.255 ar
Router(config-router)#network 192.168.4.0 0.0.0.255 area 2
Router(config-router)#
Router>
Router>en
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#a
Router(config)#area 0?
% Unrecognized command
Router(config)#router ospf 100
Router(config-router)#are
Router(config-router)#area 2 s
Router(config-router)#area 2 stub no
Router(config-router)#area 2 stub no-summary
R4配置:
Router>
Router>en
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int s 1/0
Router(config-if)#ip add 192.168.4.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:17:02: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
00:17:03: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#int f 0/0
Router(config-if)#ip add 192.168.5.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:17:30: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
00:17:31: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#ex
Router(config)#router ospf 100
Router(config-router)#net
Router(config-router)#network 192.168.4.0 0.0.0.255 ar
Router(config-router)#network 192.168.4.0 0.0.0.255 area 2
Router(config-router)#net
Router(config-router)#network 1
00:18:10: %OSPF-5-ADJCHG: Process 100, Nbr 192.168.4.1 on Serial1/0 from LOADING to FULL, Loading Done92
% Incomplete command.
Router(config-router)#
Router(config-router)#network 192.168.5.0 0.0.0.255 ar
Router(config-router)#network 192.168.5.0 0.0.0.255 area 2
Router(config-router)#
Router(config-router)#
Router(config-router)#^Z
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router ospf 100
Router(config-router)#are
Router(config-router)#area 2 s
Router(config-router)#area 2 stub no
Router(config-router)#area 2 stub no-summary
R5配置:
Router>
Router>en
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#
Router(config)#int f 0/0
Router(config-if)#ip add 192.168.6.2 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:18:58: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
00:18:59: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#int s 1/0
Router(config-if)#ip add 192.168.7.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#
00:19:28: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
00:19:29: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#ex
Router(config)#router rip
Router(config-router)#net
Router(config-router)#network 192.168.6.0
Router(config-router)#netr
00:19:51: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to dow
% Incomplete command.Router(config-router)#
Router(config-router)#net
Router(config-router)#network 192.168.7.0
Router(config-router)#
Router(config-router)#
R6配置:
Router>en
Router#
Router#
Router#conf ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#int s 1/0
Router(config-if)#ip add 192.168.7.2 255.255.255.0
Router(config-if)#
Router(config-if)#
Router(config-if)#no shut
Router(config-if)#
00:20:50: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
00:20:51: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#
Router(config-if)#ex
Router(config)#router rip
Router(config-router)#net
Router(config-router)#network 192.168.7.0
Router(config-router)#^Z
R1测试:
R2测试:
R3测试:
R4测试:
R5测试:
R6测试:
转载于:https://blog.51cto.com/tellzns/950674