14-路由,路由基础
1.常用名词
术语
|
备注
|
路由 routing
|
从源地址到目的地址不同网络间的转发过程
|
路由表 routing table
|
路由信息的集合路由的依据
|
路由器 router
|
具有路由功能的设备
|
默认网关default gateway
|
通常是路由设备的接口IP地址
|
类比:
想从广州到武汉 ->访问不同的网段时
去火车站买票 ->需要找网关
售票员查列车时刻表 ->查路由表
有票就坐火车去 ->路由表中有记录,通过路由出口转发
无票就想其他办法 ->路由器将数据包丢弃
有票的情况下可能有多辆车次,选最合适的车次 ->按规则匹配最优路由
2.路由过程
设备需要访问其它网段的地址时,先找到网关;
路由器、交换机等都可以作为网关;
然后,路由器会查询路由表,有路由就转发,没路由就丢弃数据包;
例如:
10.3.1.0的设备给10.4.1.0的设备发送了一个数据包;
首先数据包发给路由器RA;
RA收到数据包后,查自己的路由表,发现路由表里有去往10.4.1.0的路由;
路由表里一般记的是网络地址,一个子网将开始的地址作为网络地址,结尾作为广播地址,中间的才是可用的主机地址;
根据路由表信息,数据包将从路由器RA的E0口出去,到往10.1.2.2也就是路由器RB的地址;
RB收到数据包后,和RA一样,查路由表,数据包从RB的E1口发出,到往10.2.1.2即路由器RC的地址;
RC收到数据包后,查路由表,将数据包交给目标设备;
路由器收到数据包检测路由表中是否存在能够去往目的IP地址
转发过程中是逐跳转发“并不会引导其他路由器转发”
数据通信是”双向性“,也就是要有去有回才行;
路由表只是转发的依据,真正转发的是根据接口 “知道从哪里发送”
下一跳是路由器需要将该数据包交给谁来转发
总之最重要的是下一条和出接口;
3.路由选路
例如:从武汉到广州,可以有多个车次可选,在买票时,会根据耗时、价格、舒适度等各种因素来选择车票;
对路由器来说,在路由表中一个目标地址有多个下一跳;
4.路由表
1)路由器的工作内容
收到数据包查看目标ip地址;
在路由表中选择最佳路径;
维护路由表;
2)查看路由表
命令:
display ip routing-table
IP路由表:存放最优的路由信息/条目
路由表字段
|
备注
|
Destination目标地址
|
用来标识存在的能够去往的目的地址或目的网络
|
Mask掩码
|
用来选择最佳路由的重要依据(最长匹配原则)
|
NextHop下一跳
|
指明该数据包所经过的下一个路由器的接口地址
|
Interface出接口
|
指明该数据包将从哪个接口转发
|
Protocol 协议
|
路由的来源(学习方式)
|
Preference优先级
|
用来比较不同协议学习去往相同地址不同路径的优先程度(越小越优先)
|
cost开销
|
用来比较相同协议学习去往相同地址不同路径的的代价(越小越优先)
|
路由表包含了可以去往的目的网络 ;
路由器收到目的网络不存在的数据包时会直接丢弃;
5.路由优先级
路由表中有个字段pre表示优先级;
pre越小表示优先级越高;
pre是用来比较不同路由协议的优先级,比较相同协议的优先级的是cost;
例如:
从路由器RA到RB有两种方式,第一种方式通过OSPF协议,第二种用RIP协议;
不同协议的优先级不同,如下表所示:OSPF的优先级时10、RIP的优先级时100;
因为OSPF的优先级较高(越小越优先),所以RIP的路由不会存放在路由表里面,路由表只存放最优路由;
不同协议的优先级:
路由协议/类型
|
Direct
|
OSPF
|
ISIS
|
Static
|
RIP
|
OSPF ASE
|
BGP
|
管理距离/优先级
|
0
|
10
|
15
|
60
|
100
|
150
|
255
|
路由协议分为三类:
直连:direct
静态路由:static
动态路由:各种动态路由协议,ospf、rip等等
6.路由度量
路由表中有一个字段cost,表示路由度量;
cost用来比较相同路由协议的优先级;
cost越小优先级越高;
当同一目标地址有多条使用相同协议的路由时,就需要比较cost来决定优先级;
例如:
RA到RB有两条路由,都是使用OSPF协议;
这时要比较cost来决定走哪个下一跳;
有两条路径:
上面:cost = 10 + 10 =20
下面:cost = 1 + 1 = 2
2 < 20;因此选下面那条路由;
也就是说,路由表中只会写下面那条路由;
7.等价路由
为了满足实际需求,可以通过调整pre和cost来达到控制路由表;
也就是说,通过人为控制pre和cost来决定路由器到底走那条路;
如果两条路由的pre和cost相同时,这两条路由就是等价路由;
等价路由(ECMP,Equal cost multi-Path):
对于一个路由来源,当到同一个目标网络存在多条相同度量值的路由时,路由器会将这些路由条目都加入路由表,数据包会在这几个链路(路径)进行负载分担。
例如:
下图中:A-B-C-D和A-C-D这两条路径的cost都是18,成为等价路由;
导致的结果是,路由表中对同一个目标地址有多个下一跳和出接口;
等价路由可以实现负载均衡,也就是从从A到D的数据包可以走上面那条路,也可能走下面那条路;
但并不一定是两条路平分的,例如从A发10个数据包到D,不一定是两条路各走5个包;
(负载均衡的选择:逐包,逐流 可以根据目标IP或源IP,目标MAC或源MAC选择。最终会经过“哈希”计算实现)
8.掩码和最长匹配原则
最长掩码匹配原则:最终数据包实现最佳路由的算法
路由器的转发原则如下:
将所有的路由条目进行与计算,得出最长的相同掩码来转发
如上图所示:
要去9.1.2.1,需要知道到底选那一条路由;
目标地址9.1.2.1,路由器转发过程:
9.1.2.1的二进制表示:0000 1001.0000 0001.0000 0010.0000 0001
路由表中的每一条路由和9.1.2.1匹配,掩码为位数和目标地址一致的才能使用;
例如:
8.0.0.0/8 掩码为8,前8位为8不等于9因此不能用;
0.0.0.0/0,掩码为0,表示前0位和目标地址相同即可,也就是所有位不同都行,可以用,和9.1.2.1匹配4位0000;
然后从可用地址中找到匹配位数最多的那一条路由;
1】0.0.0.0/0 掩码为0,表示任意目标地址都行
0000 0000.0000 0000.0000 0000.0000 0000
0000 1001.0000 0001.0000 0010.0000 0001
匹配出4位相同 ✔
2】8.0.0.0/8 掩码为8,表示只有目的地址前8位一致才行
0000 1000.0000 0000.0000 0000.0000 0000
0000 1001.0000 0001.0000 0010.0000 0001 ❌
3】9.0.0.0/8 掩码为8,表示只有目的地址前8位一致才行
0000 1001.0000 0000.0000 0000.0000 0000
0000 1001.0000 0001.0000 0010.0000 0001
匹配出8位相同 ✔
4】9.1.0.0/16 掩码为16,表示只有目的地址前16位一致才行
0000 1001.0000 0000.0000 0000.0000 0000
0000 1001.0000 0001.0000 0010.0000 0001
匹配出15位相同 ✔
拿出 0.0.0.0/0 ❌
9.0.0.0/8 ❌
9.1.0.0/16 ✔
9.路由表的形成
路由表的形成,路由的来源:
路由来源
|
备注
|
直连路由
|
路由器接口上的网络 (路由器的接口配置IP地址并且UP出现)
|
静态路由
|
管理员手动添加的网络
|
动态路由
|
路由器之间运行某些协议学习到的网络
|
例如:
路由器A的到网段10.1.1.0就是直连的;