CCNA - Part12 - 路由协议 (1) - 静态路由,动态路由 RIP

在开始阅读前,能够先考虑如下问题,阅读后也能够来检验学习的效果:html

  • 静态路由和动态路由的区别,以及应用的场景。
  • 为何要有默认路由?
  • 动态路由中距离矢量和链路状态矢量是怎么一回事?
  • 为何说 RIP V1 仅支持有类网络?
  • RIP 的功能原理是什么?
  • 为何说 RIP 会出现成环的现象?
  • 水平分割和毒性反转解决的是什么问题?

路由器

在以前关于路由器的介绍中,咱们知道它是网络互联的核心设备,用于链接不一样的网络,在网络之间转发 IP 数据报。对于路由器来讲,路由表是其内部最为重要的构成组件。当路由器须要转发数据时,就会按照路由表和必定的匹配规则进行转发。对于路由表来讲,通常有两种静态和动态这两种配置方式。下面将细化这一过程,分别讨论静态和动态路由使用场景,以及原理和配置。网络

回顾一下,对于一个路由器来讲须要完成如下的工做:负载均衡

  • 识别数据包的目的地:经过匹配子网掩码,肯定出数据包应该发往的网段。
  • 肯定路由信息的来源:当使用动态协议时,假若有多条路由能够到达某个网络,应该先评估将最优的那条添加到路由表中。
  • 匹配路由:根据路由表选择最合适的路由条目。
  • 维护和更新:拓扑的信息可能随时方法改变,须要自动的更新。

静态路由和动态路由的对比及应用场景

静态路由:dom

  • 是网络管理员在路由器上手动配置的路由条目
  • 当网络拓扑改变时,须要让管理员手动的更新路由条目
  • 路由过程必须根据管理员的配置转发

动态路由:oop

  • 当拓扑改变时,能够自动的更新路由条目。
  • 经过交换和路由更新来学习和维护远端的路由。就是动态路由器按期会同步哥各个路由器之间的路由信息,保持一致。
  • 路由器发现新的网络是经过共享路由表来实现的。

总结一下,静态路由将路由的转发彻底交给管理员,在出现拓扑更新等状况,都是由管理员进行维护。而动态路由则相反,全部的转发,学习过程彻底靠路由器本身。学习

静态路由-应用场景:测试

  • 小型的网络-好比只有几台路由器
  • 到达目的地只有单一路径时
  • 当测试,排错等状况想快速创建一条路由时
  • 做为默认路由使用:好比做为外网的输入

动态路由-应用场景:3d

  • 大型的网络code

  • 当达到目的地有多条路径时router

静态路由

在配置静态路由时,主要配置目的网段和下一跳地址,在配置前须要进行以下的分析:

静态路由的配置分析:

  1. 首先先统计网络个数

  2. 每一个路由器须要配置的路由数目等于总网络数目减去自己链接的网络数目

  3. 目的网络位须要去的网络,也就是非直连的网络

  4. 下一跳为与本身直连路由器的接口地址

在为接口配置 IP 地址后,路由器就会生成两条默认路由-表示直连

Loopback 接口的做用主要是用于测试,当接收到数据时,会将数据自动返回来。

# 预配置命令
enable 
configure terminal
line console 0
no exec-timeout
logging synchronous
no ip domain lookup

# R3 Router 
Router(config)#hostname R3
# Configure 1.1.1.1/24, 12.1.1.1/24 IP
Router(config)#int e 0/0
Router(config-if)# ip addr 12.1.1.1 255.255.255.0
Router(config-if)# no shutdown
Router(config)#int lo 0
Router(config-if)# ip addr 1.1.1.1 255.255.255.0
Router(config-if)# no shutdown

# Configure Static Route
# Method1:
Router(config)#ip route 2.2.2.0 255.255.255.0 12.1.1.2
Router(config)#ip route 3.3.3.0 255.255.255.0 12.1.1.2
Router(config)#ip route 23.1.1.0 255.255.255.0 12.1.1.2

# Method2:边界配置默认路由比较省时间
Router(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

// hostname R4
Router(config)#interface ethernet 0/0
Router(config-if)#ip address 12.1.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface loopback 0
Router(config-if)#ip address 2.2.2.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface ethernet 0/1
Router(config-if)#ip address 23.1.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit

# Configure Static Route
Router(config)#ip route 1.1.1.0 255.255.255.0 12.1.1.1
Router(config)#ip route 3.3.3.0 255.255.255.0 23.1.1.2
# The configuration of R5 is same as the R3

想象这样一种状况,假设到达 5.5.5.5/24 的网络,在 R4 配置静态路由时,能够经过 R6 和 R7 两条路径。

这时数据包在到达该网络时,该如何选择呢?

采用的原则以下:

  • 首先经过 mask 匹配最长掩码
  • 若是最长掩码同样,比较 AD,能够手动配置
  • 当 AD 同样,能够比较 Metric
  • 最后还同样的话,经过负载均衡来实现

动态路由

路由器之间能够经过路由协议,自主学习来得到的路由信息,这样的路由称为动态路由。使用路由协议动态构建路由表不须要人工参与,并能自动的适应网络状态的变化更新路由表,大型网络或状态变化频繁的网络一般会采用动态路由协议。

自制系统和分层路由

因特网的网络数量巨大,几百万个路由器相互相互链接在一块儿。要让一个路由器记录每一个网络的信息是不可能的,并且许多机构并不肯意本身的网络内部细节对外暴露。基于以上的缘由,因特网划分了许多个自制系统(Autonomous System)。

自治系统内部的路由经过内部网关协议(IGP)交换路由信息,典型的内部网关协议有 RIP 和 OSPF。

自治系统之间也须要交换路由信息,自治系统之间使用外部网关协议(EGP)交换路由信息,每一个自治系统都会有边界路由器来完成这个任务,目前因特网使用的外部网关协议是 BGP。

动态路由协议通常分为如上图中这几种:

距离矢量路由协议:根据跳数来,选择跳数最小的。如 RIP 协议。EIGRP 会把跳数做为参考。

链路状态路由协议:经过本身计算和筛选怎么走(邻居表,拓扑表,路由表),如 OSPF,IS-IS 等。

RIP (距离矢量)

应用层协议,使用 UDP 传输,端口为 520。RIP 和 IGRP 已经被淘汰,由于它们仅支持有类路由协议。(就是不能划分子网的协议)

路由信息协议(RIP)是路由器生产厂商之间使用的第一个开放标准,是链接不一样厂商设备使用最为普遍的共有协议。RIP 协议有两个版本,V2 版本比 V1 版本的基础上增长了一些拓展特性,如更新认证、路由汇总、无类路由、VLSM, 将广播改成组播等。

RIP 协议是基于距离矢量的路由状态协议。RIP 协议中,若是路由器 A 和 网络 B 直接相连,那么路由器 A 到网络 B 的距离就是 N + 1。若是从路由器 A 出发 到达网络 B 须要通过 N 个路由器,则路由器 A 到网络 B 的距离就是 N + 1。

RIP 认为距离最小的路径就是最好的路径。RIP 中的距离也称为 “跳数”,每增长一个路由器,跳数就加 1。

RIP 工做原理

  1. 每一个路由器每隔 30s 给本身全部的邻居路由器广播 RIP 报文,报文的内容是这个路由器当前的路由信息。
  2. 收到邻居路由器的路由表信息后,更新本身的路由表,下次将更新后的路由表告诉本身的邻居
  3. 180s 没有收到某个路由器的路由表信息,就认为这个路由器出现故障,路由表中将全部以这个路由器为下一站的表项的距离修改成 16,表示不可达。再过 60s 依然没有回复,从路由表删除

当两个路由器共享一条链路或者在同一个物理网络中,就称它们为邻居

配置:

#三台路由器正常配置端口

# R1
# r1(config)#router rip 
# 关闭自动汇总,汇总成主类 A,B,C 类的网络。
r1(config-router)#no auto-summary
r1(config-router)#version 2
r1(config-router)#network 12.0.0.0
r1(config-router)#network 1.0.0.0
r1(config-router)#network 13..0.0
# R2,R3 同理

# 排错命令
show ip rip database
show ip protocols/inc second

因为在向外通告网络时,存在 30s (默认)的时间差,这就有可能出现环路的现象。

好比在图中 R3 宣告本身的网络后,恰巧 Lo 0 接口端口,此时 R3 会当即将直接在路由表中删除 3.3.3.0 的网络。

但此时 R2 是不知道的,假设过了 10 s 后,到了 R2 该通告自己路由的状况,此时会组播发给 R1 和 R3.

而此时 R3 发现,R2 能到达 3.3.3.0 的网络,会将该网络加入本身的路由表,而且距离加一。

此时若是有数据包发送 3.3.3.0 的网络,就会在 R2 和 R3 之间一直传递。而随着下一通告周期的来临,R2 和 R3

的举例会一直增长,直到 16 在双方的路由表消失。

如何解决成环的问题:

  1. 限制最大距离:RIP 协议容许一条路径上最多包含 15 个路由器,距离的最大值为 16(表示网络不可达)

  2. 水平分割:路由器从某个接口接收到的更新信息不容许再从这个接口发回去。

    1. 如 R2 收到了 R3 中到达 3.3.3.0 网络的路由信息,在本身宣告时不会将到 3.3.3.0 的消息再告诉 R3.

但水平分割依然没法解决像第一个图中,有多条路径可达的状况。

这里的解决方法就是毒性反转:

其实是一种改进的水平分割,当路由器从某个接口上接收到某个网段的路由信息后,并非不往回发送信息了,而是将这个网段的跳数(距离)设为无限大,再发送出去。收到此种的路由信息后,接收方路由会当即抛弃该路由,而不是等到其老化时间到。

简单来讲,逆转指的是对水平分割而言,原来是不发送,如今是发送。可是发送的是距离为 16 的信息,这样就代表该网络不可达,因此叫毒。

这里能够作一个实验,利用关闭水平分割,手动形成成环现象。

# 关闭 R1 e 0/0 接口的水平分割
R1(config-if)#no ip split-horizon

# 关闭 R2 e 0/0 接口的水平分割
R2(config-if)#no ip split-horizon

# 设置 R2 的 e0/0 为被动,禁止发送协议报文
R2(config-router)# passive-interface e 0/0

# 关闭 R2 的 loopback 0 口

# 设置 R2 的 e0/0 为主动
R2(config-router)#no passive-interface e 0/0

这时咱们能够利用 show ip route 来观察,会发现 R1 和 R2 的跳数一直都会增长,增长到 16,全都消失

缘由:

因为把 R2 的端口设置成被动,R1 收不到 R2 关闭了 lo 0 的消息。并且 R1,R2 的水平分割都已经被关闭。

这时 R2 会收到来自 R1 的它到 2.2.2.0 网络的跳数是 1,因此到 2.2.2.0 网络的跳数是 2。

因为 R2 已经没法经过直连到达 2.2.2.2。因此会更新本身的跳数。以后 R2 又会给 R1 发送到 2.2.2.2 的跳数是 2。

因为 R1 自己到 2.2.2.2 网络就是经过 R2,因此会更新本身的路由表跳数为 3。就这样以此类推直到到 16 结束。

相关文章
相关标签/搜索