路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且基于拓扑结构的变化而自动收敛。
目录
自治系统
AS的通信
IGP还可以根据算法进行分类
RIP
贝尔曼.福特算法
RIP的版本
RIPV1和RIPV2的区别
RIP的数据包
RIP的计时器
破环方案
RIP的配置
拓展配置
RIP与OSPF相比
OSPF
区域划分
OSPF的数据包
hello包
DBD包
LSR包
LSU包
LSACK包
补充
OSPF的状态机
OSPF的工作过程
结构突变措施
OSPF的基本配置
条件匹配
DR/BDR的选举规则
OSPF的拓展配置
1,OSPF的手工认证
2,手工汇总 --- 区域汇总
3,沉默接口
4,加快收敛 --- 减少计时器的时间
5,缺省路由
自治系统
AS --- 由单一组织或机构所管理的一些IP网络及其设备所构成的集合。
为了方便对AS进行管理创建AS号,由16位二进制构成。范围是0 - 65535(1 - 65534)
现在也有拓展版的AS号 --- 由32位二进制构成
AS的通信
用于AS内部通信的协议统称为IGP协议(内部网关协议),包括RIP,OSPF,IS-IS,EIGRP等。
用于AS之间通信的协议统称为EGP协议(外部网关协议),包括BGP等。
IGP还可以根据算法进行分类
距离矢量型协议(DV),典型代表是RIP。
使用算法为贝尔曼.福特算法(Bellman&Ford,两个人)。因为是路由器间直接传递路由信息,所以又被称为“依据传闻的路由协议”。
链路状态型协议(LS),典型代表是OSPF。
传递的是LSA信息(链路状态通告),也就是拓扑信息(每一台设备本身连接设备的信息)。将自身周围的拓扑信息转发给其他设备,当所以拓扑信息收集完毕(意味着整个网络的拓扑结构拼接完成),将会进行SPF。
SPF(最短路径优先算法),将收集到的图形结构转换为树形结构,因为树形结构不会出现环路。
RIP
RIP协议传输层使用的是UDP协议,使用的端口号是520端口。
RIPNG协议传输层使用的是UDP协议,使用的端口号为521端口。
在RIP里面,将两台直接相连的设备,具备通信条件的设备称为
邻居关系
。以广播的形式传递信息。
在RIP中,传递一条路由条目,主要需要携带的参数是目标网段信息以及开销值(cost)。
开销值是动态路由协议选路的重要依据。 --- 当动态路由协议计算出到达同一个目标网段存
在多条路径时,将选择开销值最小的路径加表。(越小越好)
不同动态路由协议的开销值的评判标准可能不同,不同动态路由协议之间开销值没有可比性,
开销值仅用于同一种动态路由协议进行选路。RIP是以跳数来判断开销,RIP协议以跳数作为开销评判标准本身就存在不合理。RIP协议支持
等开销
负载均衡
。
跳数=路由器发出的信息经过几个路由器转发。RIP的
工作半径为15跳。如果收到的路由的开销值等于16,则设备将认为该目标网段不可
达。
RIP协议的默认优先级为
100
--- 不同路由协议之间其默认的优先级不同,所以,不同协议可以通过比较优先级来进行路由加表。
数据包中需要携带的开销值 = 本地路由表中的开销值 + 1(即发出路由信息数据包中的开销值为发包设备本地储存的开销值加一)
贝尔曼.福特算法

RIP协议发送的路由信息数据包中只含有目标网段的地址和开销值,所以在收到运行RIP协议的路由器发的数据包时,本设备会直接将发包设备的发包接口作为该目标网段的下一跳。(即R2将2.0/24网段信息发给R1,R1将会直接将通往2.0/24网段的下一跳写为R2的0/0/0接口的IP地址。)
所以R1通往2.0/24网段的路由表为:
Destination/Mask | Proto | Pre | Cost | Flags | NextHop | Interface |
2.2.2.0/24 | RIP | 100 | 1 | D | 12.0.0.2 | G 0/0/0 |
1,R2发送2.0/24网段的路由信息给R1,而R1的路由表中没有到达2.0/24网段的路由信息。R1将直接把2.0网段的路由信息刷新到本地的路由表中。
2,R2发送2.0/24网段的路由信息给R1,而R1的路由表中存在到达2.0/24网段的路由信息,并且R1本地的通往2.0/24网段的路由信息的下一 跳就是R2。R1将把最新发来的
刷新
到本地的路由表中。
3,R2发送2.0/24网段的路由信息给R1,而R1的路由表中存在到达2.0/24网段的路由信息,本地路由表中的下一跳不是R2,则比较开销值,如果本地的开销值大于R2发来的开销值,则将R2发
来的路由信息
刷新
到本地的路由表中。
4,R2发送2.0/24网段的路由信息给R1,而R1的路由表中存在到达2.0/24网段的路由信息,本地路由表中的下一跳不是R2,则比较开销值,如果本地的开销值小于R2发来的开销值,则
不刷新
。
RIP的版本
RIPV1和RIPV2用于IPV4
RIPNG适用于IPV6
RIPV1和RIPV2的区别
1,V1是有类别的路由协议,V2是无类别的路由协议。
有类别:传递路由信息时不携带子网掩码,按照IP的分类由前8为数来确定掩码信息,这种方式会出现巨大的路由黑洞。
无类别:传递路由信息时,携带子网掩码。
2,V1不支持手工认证,V2是支持手工认证。
手工认证:即手动配置加密,加密后路由器间的数据传输需要对设置密码进行验证,即“对口令”。
3,V1采用广播的形式发送信息,V2采用组播的形式发送信息。
224.0.0.9(主播地址) --- 所有运行RIPV2的设备默认加入的组播组
运行RIPV2的设备在发送数据包时目标MAC地址有一个统一的组播地址。
采用组播发送的数据包就算电脑收到,在第二层的MAC地址查看时就已经知道不是发给自己的。避免了拆一层而浪费资源。而RIPV1就不行,电脑收到后会进行解封装,解到四层时通过端口号才能发现该数据包是RIP协议,将该包丢弃。
交换机泛洪条件:
1,遇到广播帧;2,遇到组播帧;3,遇到未知单播帧
RIP的数据包
RIP - REQUEST --- 请求报文,发给所有的邻居,向邻居请求路由信息。只有在RIP刚运行时才会发一次,后面不会再发。
RIP - Response --- 应答报文 --- REQUEST的回复包,真正携带路由信息的数据包(更新包)。
RIP的周期更新:在RIP收敛完成之后,RIP会依旧每隔30S发送一次Response报文。是异步周期更新,即所有设备不是同时计时,而是各记各地。周期更新会占用大量的资源。
1,为了弥补RIP没有确认机制,因为RIP使用的传输层协议是UDP协议,没有确认机制,传输不可靠。所以需要一直发送应答报文来确保信息的传达。
2,为了弥补RIP没有保活机制,因为除应答报文外没有确认其他设备的手段,所以没办法确认对方是否还“存活”,所以只能不断发送应答报文,当一台设备不在发送应答报文时,其他设备能够发现该设备宕机。
RIP的计时器
1,周期更新计时器 --- 30S --- 异步
2,失效计时器 --- 180S --- 为每一条路由条目计时
路由条目在
刷新
之后,将会启动一个180S的失效计时器。如果时间归0,则代表该路由信息失效。失效后,首先从全局路由表中删除,但是依然会将这条路由信息保存在缓存中,之后,周期更新时依然会携带。只是将这跳路由信息的开销值改为16后在发送。因为RIP的工作半径为15跳,即开销值不能大于15。开销值为16就意味着该路由条目对应的网段已经不存在,或不可达。这个过程称为
带毒传输,目的就是为了传递失效信息。
3,垃圾收集计时器 --- 120S --- 为每一条失效路由条目计时
在失效计时器归0后开始计时,120s时间结束后,将彻底删除失效的路由条目。
破环方案

设想:根据RIP协议,R1 获取到的通往2.2.2.0/24网段的下一跳应为R2的0/0/0接口,当2.2.2.0/24网段消失,R2会将该路由信息进行带毒传输,但周期更新需要30S的时间,在30S内R1先进行了周期更新,把到2.2.2.0/24网段的路由信息广播发送给R2,就会发生贝尔曼.福特算法的第三中情况,R2将会将R1发给R2的路由条目刷新到本地。即通往2.2.2.0/24网段的下一跳为R1的0/0/0接口,而在R1的路由表中通往2.2.2.0/24网段的下一跳为R2的0/0/0接口。造成路由环路。
1,15跳的工作半径
按上面的情况,最开始R2通往2.2.2.0/24网段的开销值为0,发给R1后R1通往2.2.2.0/24的开销值变为1。然后,按上面的情况发生路由环路。R2在接收到R1的路由信息中通往2.2.2.0/24网段的开销值为1+1=2,然后R2再次发送给R1此路由信息但开销值+1,此时为贝尔曼.福特算法的第三中情况,R1将会无条件刷新,此后R1再次发给R2也会是第二种情况,经过多次的发送。最后开销值会增加到16,因为RIP工作半径是15跳,该路由信息被判断为不可达,最后失效,破环。
2,触发更新 --- 一旦拓扑结构发生变化,则第一时间将变更信息传递出去,而不去等待周期更新。
3,水平分割 --- 从哪个接口学到的路由信息将不再从这个接口发出去。
以R1为例,收到R2发送的通往2.2.2.0/24网段的路由条目是由0/0/0接口接收的,按照水平分割将不会将通往2.2.2.0/24网段的路由条目由0/0/0接口发出。
4,毒性逆转 --- 从哪个接口学来的路由信息,依然可以从这个接口发出去,只不过需要将开销值改为16。--- 发送无效信息
注意:因为水平分割和毒性逆转其做法相矛盾,所以,只能选择其中一个来执行。华为设备默认开启水平分割。如果水平分割和毒性逆转同时开启,华为设备将按照毒性逆转来执行。
RIP的配置
1,启动RIP进程
[Huawei]
rip 1
(
进程号,仅具有本地意义,如果需要同时启动多个RIP进程时,需要使用不同的进
程号进行区分)
[Huawei-rip-1]
2,选择RIP版本
[Huawei-rip-1]
version 2
(版本号)
3,宣告
RIP宣告的要求:
1,所有直连网段都必须宣告
2,必须按照主类进行宣告
主类:按IPA、B、C等的分类来宣告网段,例如接口IP为1.1.1.1,此IP为A类,掩码为前8位,所以宣告时就填1.0.0.0
宣告的作用:
1,激活接口 --- 只有宣告的网段包含的接口会被激活,只有激活的接口可以收发RIP的数据。
2,发布路由 --- 只有激活的接口所对应的直连网段的路由才能被发布。
[Huawei-rip-1]
network 1.0.0.0
(宣告的网段,需要激活的接口IP地址包含在内)
[Huawei]
display rip 1
(选择rip进程)
route
--- 查询rip进程的路由表
拓展配置
1,RIPV2的手工认证 --- 在接口视图中
[Huawei-GigabitEthernet0/0/1]rip authentication-mode md5(可选simple或者md5,若选择前者,口令将会以明文的形式携带并传递。后者将以取摘要形式传递) usual(选择标准,可选usual或者nonstandard,前者是华为标准,后者是IETF标准) plain(可选plain或者cipher,前者口令在本地以明文形式储存,后者以密文形式。只具有本地意义) 123456(设置口令)
注意:在选择时两端所选的选项(除储存方式)必须选相同的。
2,RIPV2的手工汇总 --- 在接口视图中
[Huawei-GigabitEthernet0/0/0]rip summary-address 192.168.0.0 255.255.254.0(汇总后的网段及掩码信息,掩码需要写完整版)
3,沉默接口
[Huawei-rip-1]silent-interface GigabitEthernet 0/0/1(需要沉默的接口)
如果一个接口配置成为沉默接口,则将只接受,不发送RIP的数据包。可以将连接电脑的接口沉默,只收不发,减少对电脑资源的占用。
4,加快收敛 --- 减少计时器的时间
[Huawei-rip-1]
timers rip 30
(周期更新时间)
180
(路由条目失效时间)
120
(垃圾收集时间)
5,缺省路由
[Huawei-rip-1]
default-route originate
可以指定配置设备作为缺省路由的源头,所有其他设备将自动生成一条指向该设备的缺省路由。但是该设备自身的缺省必须手工配置。
注意:一般在边界设备配置。
RIP与OSPF相比
优秀动态协议应具备的特点:选路佳,收敛快,占用资源少
1,OSPF本身是链路状态型协议,所以,计算出的路径不会存在环路。并且使用带宽作为选
路依据,所以,在选路的角度上优于RIP。
2,OSPF的计时器时间也短于RIP,所以,收敛速度会快于RIP。
3,因为OSPF协议传递的是LSA信息,所以,单个数据包的资源占用远大于RIP;但是,因为
RIP存在30S一次的周期更新,而OSPF并没有如此高频率的周期更新,并且,OSPF协议存在
许多针对资源占用的优化措施,所以,从整体的角度看,OSPF资源占用上应该小优于RIP。
注:OSPF --- 开放式(免费的)最短路径优先协议
RIP存在3个版本 --- RIPV1,RIPV2 --- IPV4&RIPNG --- IPV6
OSPF也存在3个版本 --- OSPFV1(实验室阶段就夭折了),OSPFV2 --- IPV4&OSPFV3 --- IPV6
RIPV2和OSPFV2
相同点:
1,OSPFV2和RIPV2一样,都是无类别的路由协议,都支持VLSM和CIDR。
OSPF传递拓扑信息,那为什么是无类别的协议呢?
因为OSPF协议区域内部传递拓扑信息,区域之间传递路由信息。
2,OSPFV2和RIPV2一样,都是使用组播发送数据 。
补充:RIPV2的组播网IP为224.0.0.9,OSPFV2的组播网IP为224.0.0.5和224.0.0.6。
3,OSPFV2和RIPV2都支持等开销负载均衡。
不同点:
RIP协议只能适用于小型网络环境中,而OSPF协议可以应用在中大型网络环境中,因为OSPF协议可以实现
结构化部署
(
划分区域)。
OSPF
区域划分
区域划分的主要目的是为了区域内部传递拓扑信息,区域之间传递路由信息。 --- 链路状态型协议的距离矢量特征。
因为传递拓扑信息比传递路由信息的资源占用量大,所以区域之间传递路由信息是为了
减少资源占用量。
如果一个OSPF网络只存在一个区域,这个网络称为单区域OSPF网络。
如果一个OSPF网络存在多个区域,这样的网络称为多区域OSPF网络。
区域划分的要求:
1,区域之间必须存在ABR设备。
2,区域划分必须按照星型拓扑结构进行划分。
ABR设备:区域边界路由器,同时属于多个区域,一个接口对应一个区域,必须有一个接口在区域0中,将区域内的拓扑信息收集计算成路由信息,之后进行传递。区域之间可以存在多个ABR备,一个ABR设备可以处于多个区域。
星型拓扑的中间区域称为骨干区域,也就是上面的区域0(骨干区域的区域ID定义为区域0)。
为了方便区分和标识不同的区域,所以,我们给每一个区域都定义一个区域ID(area id
),由32位二进制构成。具有两种表示方法,可以直接使用十进制进行表示,还可以使用点分十进制进行表示。
补充:
RID(route ID),用于区分和标识不同的路由器,本质由32位二进制构成。因为OSPF传递拓扑信息,所以需要给每一台路由器“标号”,方便“大地图”的构建。
1,格式统一。
2,全网唯一。
RID的生成方式:
1,手工配置
2,自动生成 ,首先,设备将优先选择环回接口的IP地址作为RID,如果存在多个环回接口,则将选择所有环回接口中IP地址最大的作为RID;如果没有配置环回接口,则将使用设备的物理接口的IP地址作为RID,如果物理接口存在多个,则选择IP地址最大的作为RID。
OSPF的数据包
hello包
周期性的发现,建立和保活邻居关系。
hello包的发送周期(hello时间)默认为10S(以太网下)或30S(其他网络)
死亡时间 --- dead time --- 4倍的hello时间
若4倍时间过去没有收到hello包,将会判断邻居设备宕机。则删除关于该设备的路由信息并告知其他与本设备为邻接关系的设备。
DBD包
数据库描述报文,携带LSDB数据库(链路状态数据库)。LSDB数据库存储的是LSA(拓扑信息)的信息。相当于LSA是“菜”,而LASDB是“菜单”。
注:因为拓扑信息占用资源量大,所以为减少资源占用量,OSPF采用“点菜”形式。避免发送已有信息而造成资源浪费。
LSR包
链路状态请求报文,对端基于DBD包,请求未知的LSA信息。相当于“点菜”。
LSU包
链路状态更新报文,真正携带LSA的数据包,根据LSR包发送LSA信息。相当于“上菜”。
LSACK包
链路状态确认报文,确认包,告知对端信息已经收到。
补充
与RIP协议相同,OSPF协议具有周期更新机制,但每隔30分钟发送一次。因为PSOF协议拥有确认和保活机制,所以基本上不需要周期更新机制。设置30分钟的周期更新只是为了保底。
OSPF的状态机
采用思科为例:

Down --- 刚开机,还没有建立邻居关系。或者hello报文超时而断开邻居关系。发出hello包后进入下一个状态。
Init --- 向周围路由器发送hello包后进入到初始化状态。收到对方的hello包中包含自己本地的RID,则进入到下一个状态
Two - Way --- 收到回信后进入双向通信状态 ---- 标志着邻居关系的建立。
注意:思科设备B发送的hello包是在收到A的hello包后单播发给A。而华为设备依然是广播发送。
邻居关系建立后将进行条件匹配,条件匹配成功则可以进入到下一个状态(邻接关系),如果条件匹配失败。则将停留在邻居关系,则仅周期性的发送hello包进行保活。

Exstart --- 预启动状态 --- 通过发送没有携带数据的DBD包来进行主从关系选举。
Exchange --- 准交换状态 --- 交换携带数据(摘要信息)的DBD包进行LSDB数据库目录共享。
主从关系选举 --- 通过发送没有携带数据的DBD包来进行主从关系选举,比较RID来进行选举,RID大的为主(master),为主可以优先进入后面的状态。之所以使用DBD包主要是为了和之前的邻居关系进行区分。
因为同时发送LADB信息会增加资源占用量,所以为了减少资源占用量,增加了主从关系,为主的先发送。

Loading --- 加载状态 --- 基于对端发送的DBD包,使用LSR/LSU/LSACK交换未知的LSA信息。
Full --- 标志着邻接关系的建立。设置邻接关系主要目的是为了和之前的邻居关系进行区分。
注:邻居只能通过hello包进行保活,而邻接之间,可以交换LSA信息。
注意:hello包不需要进行确认,因为周期发送本身就是一种确认方式。DBD包需要确认,但华为不是按上图的以LSAck包来确认(显性确认),而是使用一种隐形确认法。为主设备的主导隐形确认,在发包过程中在DBD包中增加一串序号,当为从的设备回DBD包时也携带一串相同的序号,就表示确认收到。
OSPF的工作过程
1、启动配置完成,OSPF协议向本地所有运行协议的接口以组播的形式(224.0.0.5)发送hello包。hello包中携带自己本地RID,以及本地已知的邻居的RID。之后,将收集到的邻居关系记录在一张表中 --- 邻居表。
2、邻居关系建立完成后,进行条件匹配。失败则停留在邻居关系,仅发hello包进行保活。
3、匹配成功,则开始建立邻接关系。首先,使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享目录信息,之后,基本DBD包,通过LSR/LSU/LSACK获取未知的LSA信息。将所有的LSA信息保存本地的LSDB数据库 --- 数据库表。
4、最后,基于LSDB,使用SPF算法进行计算,得到未知网段的路由信息,将其加载到路由表。
5、收敛完成后,周期性的发送hello包进行保活,每30min一次周期更新。
结构突变措施
1,突然新增一个网段:
触发更新
,第一时间将变更信息通过LSU包传递出去,需要ACK确认。
2,突然断开一个网段:
触发更新
,第一时间将变更信息通过LSU包传递出去,需要ACK确认。
3,无法联系:将使用dead time进行计时(周期更新的4倍时间),计时完毕还未有回信将删除该LSA信息。
OSPF的基本配置
1,启动OSPF进程
[Hauwei]
ospf 1
(进程号)
router-id 1.1.1.1
(该路由器的RID)
--- 手工配置RID需要在进程启动时配置
[Huawei-ospf-1]
RID可手动配置,也可以自动获取。
2,创建区域
[Huawei-ospf-1]
area 0
(区域编号)
[Huawei-ospf-1-area-0.0.0.0]
3,宣告
[Huawei-ospf-1-area-0.0.0.0]
network 1.1.1.1
(宣告网段或者单个IP地址)
0.0.0.0
(反
掩码,由连续的0和连续的1组成,0对应位不可变,1对应位可变。)
宣告的作用:
1,激活接口 --- 只有宣告的网段包含的接口会被激活,只有激活的接口可以收发OSPF的数据。
2,发布路由 --- 只有激活的接口所对应的直连网段的路由才能被发布
补充:
[Huawei]
display ospf peer
--- 查看邻居表
[Huawei]
display ospf peer brief
--- 查看邻居关系简表
[Huawei]
display ospf lsdb
--- 查看数据库表
[Huawei]
display ospf lsdb router 2.2.2.2
(需要查看的LSA ID)
--- 展开一条LSA的方法
[Huawei]
display ip routing-table protocol ospf
--- 查看路由表
华为设备中,OSPF协议的默认优先级为10。
OSPF开销值判定方式:COST = 参考带宽 / 真实带宽(华为设备默认的参考带宽为100Mbps),如果计算出来是一个小于1的小数,则直接按照1来算。如果是一个大于1的小数,只取整数部分。
[Huawei-ospf-1]
bandwidth-reference 1000
(需要修改的参数)
--- 修改参考带宽
条件匹配
如果一个广播域中的每一台设备都是邻接关系,或者有多对设备为邻接关系,将会产生重复接收LSA变更信息(重复更新),从而浪费网络资源。为减少资源占用量,一个广播域中将会选出一台DR设备和一台BDR设备。
DR --- 指定路由器,和广播域内其他设备建立邻接关系。
BDR --- 备份指定路由器,和广播域内其他设备建立邻接关系,称为DR设备的备份。
DRother --- 除了DR和BDR外的其他设备。在广播域中所有的DRother都为邻居关系。
DR设备还承担着网络中一些其他的责任。BDR设备在DR设备宕机后会承担起DR的责任从而成为新的DR。(DR和BDR其实是接口的概念)
DR/BDR的选举规则
1,先比较优先级(与路由条目优先级不同),优先级最大的为DR,次大的为BDR。
设备的优先级默认都为1,其主要目的是让人为修改。(即人为决定DR和BDR)
[Huawei-GigabitEthernet0/0/0]
ospf dr-priority 1
(需要配置的优先级,在0-255间选择)
注意:如果将一个接口的优先级设置为0,则代表这个接口将放弃DR/BDR的选举。
2,如果优先级相同,则比较RID。RID大的路由器所对应的接口为DR,次大的为BDR。
注意:注意区分主从关系选举。
补充:DR/BDR的选举是非抢占模式的。即一旦选举出来,则将无法抢占。(选举时间等同于死亡时间,即4倍的hello时间)
<Huawei>
reset ospf 1
(进程号)
process
--- 重启OSPF进程
OSPF的拓展配置
1,OSPF的手工认证
与RIPV2相似
[Huawei-GigabitEthernet0/0/0]
ospf authentication-mode md5 1
(KEY ID即口令编号)
cipher 123456
两边都必须相同(除了cipher)
2,手工汇总 --- 区域汇总
需要在ABR设备上进行配置,因为只有ABR设备才会发路由信息。必须进入区域视图配置,因为配置的是区域汇总。且汇总信息自有在传输过程中发送,本地储存的还是明细。
[Huawei-ospf-1-area-0.0.0.0]
abr-summary 192.168.0.0
(汇总网段)
255.255.254.0
(掩码信息)
3,沉默接口
配置了沉默接口的接口,将只接受不发送路由信息。
[Huawei-ospf-1]
silent-interface GigabitEthernet 0/0/2
(接口号)
4,加快收敛 --- 减少计时器的时间
[Huawei-GigabitEthernet0/0/0]ospf timer hello 5(时间) --- 修改hello时间的方法
[Huawei-GigabitEthernet0/0/0]ospf timer dead 10(时间)--- 修改死亡时间
注意:邻居双方的hello时间和死亡时间必须相同,否则将断开邻居关系。
5,缺省路由
[Huawei-ospf-1]default-route-advertise --- 在边界设备中进行编辑
注意:这个命令要求边界设备自身得具有缺省路由才行。
[Huawei-ospf-1]default-route-advertise always --- 在没有缺省的情况下,强制下发缺省