在开始阅读前,能够先考虑如下问题,阅读后也能够来检验学习的效果:html
在以前关于路由器的介绍中,咱们知道它是网络互联的核心设备,用于链接不一样的网络,在网络之间转发 IP 数据报。对于路由器来讲,路由表是其内部最为重要的构成组件。当路由器须要转发数据时,就会按照路由表和必定的匹配规则进行转发。对于路由表来讲,通常有两种静态和动态这两种配置方式。下面将细化这一过程,分别讨论静态和动态路由使用场景,以及原理和配置。网络
回顾一下,对于一个路由器来讲须要完成如下的工做:负载均衡
静态路由:dom
动态路由:oop
总结一下,静态路由将路由的转发彻底交给管理员,在出现拓扑更新等状况,都是由管理员进行维护。而动态路由则相反,全部的转发,学习过程彻底靠路由器本身。学习
静态路由-应用场景:测试
动态路由-应用场景:3d
大型的网络code
当达到目的地有多条路径时router
在配置静态路由时,主要配置目的网段和下一跳地址,在配置前须要进行以下的分析:
静态路由的配置分析:
首先先统计网络个数
每一个路由器须要配置的路由数目等于总网络数目减去自己链接的网络数目
目的网络位须要去的网络,也就是非直连的网络
下一跳为与本身直连路由器的接口地址
在为接口配置 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 两条路径。
这时数据包在到达该网络时,该如何选择呢?
采用的原则以下:
路由器之间能够经过路由协议,自主学习来得到的路由信息,这样的路由称为动态路由。使用路由协议动态构建路由表不须要人工参与,并能自动的适应网络状态的变化更新路由表,大型网络或状态变化频繁的网络一般会采用动态路由协议。
因特网的网络数量巨大,几百万个路由器相互相互链接在一块儿。要让一个路由器记录每一个网络的信息是不可能的,并且许多机构并不肯意本身的网络内部细节对外暴露。基于以上的缘由,因特网划分了许多个自制系统(Autonomous System)。
自治系统内部的路由经过内部网关协议(IGP)交换路由信息,典型的内部网关协议有 RIP 和 OSPF。
自治系统之间也须要交换路由信息,自治系统之间使用外部网关协议(EGP)交换路由信息,每一个自治系统都会有边界路由器来完成这个任务,目前因特网使用的外部网关协议是 BGP。
动态路由协议通常分为如上图中这几种:
距离矢量路由协议:根据跳数来,选择跳数最小的。如 RIP 协议。EIGRP 会把跳数做为参考。
链路状态路由协议:经过本身计算和筛选怎么走(邻居表,拓扑表,路由表),如 OSPF,IS-IS 等。
应用层协议,使用 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 工做原理
当两个路由器共享一条链路或者在同一个物理网络中,就称它们为邻居
配置:
#三台路由器正常配置端口 # 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 在双方的路由表消失。
如何解决成环的问题:
限制最大距离:RIP 协议容许一条路径上最多包含 15 个路由器,距离的最大值为 16(表示网络不可达)
水平分割:路由器从某个接口接收到的更新信息不容许再从这个接口发回去。
但水平分割依然没法解决像第一个图中,有多条路径可达的状况。
这里的解决方法就是毒性反转:
其实是一种改进的水平分割,当路由器从某个接口上接收到某个网段的路由信息后,并非不往回发送信息了,而是将这个网段的跳数(距离)设为无限大,再发送出去。收到此种的路由信息后,接收方路由会当即抛弃该路由,而不是等到其老化时间到。
简单来讲,逆转指的是对水平分割而言,原来是不发送,如今是发送。可是发送的是距离为 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 结束。