路由表的生成
基于Dijkstra算法 , 封装出了一个新的协议 , OSPF协议(Open Shortest Path First, 开放最短路径优先) 。
有了OSPF , 路由器就得到了网络图里自己到其他点之间的最短距离 , 于是就知道了数据包要到某个点 , 该走哪条最优路径 。
将这些信息汇成一张表 , 也就是我们常说的路由表 。
路由表里记录了到什么IP需要走什么端口 , 以及走这条路径的成本(metric) 。
可以通过 route 命令查看到 。
文章插图
route表
路由表决定数据包路径
数据包在发送的过程中 , 会在网络层加入目标地址IP 。
路由器会根据这个IP跟路由表去做匹配 。
然后路由表 , 会告诉路由器 , 什么样的消息该转发到什么端口 。
举个例子 。
文章插图
通过路由表转发数据
假设A要发消息到D 。也就是192.168.0.105/24要发消息到192.168.1.11/24 。
那么A会把消息经发到路由器 。
路由器已知目的地IP192.168.1.11/24 , 去跟路由表做匹配 , 发现192.168.1.0/24, 就在e2端口 , 那么就会把消息从e2端口发出 , (可能还会经过交换机)最后把消息打到目的机器 。
当然 , 如果路由表里找不到 , 那就打到默认网关吧 , 也就是从e1口发出 , 发到IP192.0.2.1 。这个路由器的路由表不知道该去哪 , 说不定其他路由器知道 。
路由表的匹配规则
上面的例子里 , 是只匹配上了路由表里的一项 , 所以只能是它了 。
但是 , 条条大路通罗马 。实际上能到目的地的路径肯定有很多 。
如果路由表里有很多项都被匹配上了 , 会怎么选?
如果多个路由项都能到目的地 , 那就优先选匹配长度更长的那个 。比如 , 还是目的地192.168.1.11 , 发现路由表里的192.168.1.0/24 和 192.168.0.0/16都能匹配上 , 但明显前者匹配长度更长 , 所以最后会走 192.168.1.0/24对应的转发端口 。
但如果两个表项的匹配长度都一样呢?
那就会看生成这个路由表项的协议是啥 , 选优先级高的 , 优先级越高也就是所谓的管理距离(AD , AdministrativeDistance)越小 。比如说优先选手动配的静态(static)路由 , 次优选OSPF动态学习过来的表项 。
如果还是相同 , 就看度量值metrics , 其实也就是路径成本cost , 成本越小 , 越容易被选中 。
路由器能选的路线有很多 , 但按道理 , 最优的只有"一条" , 所以到这里为止 , 我们都可以认为 , 对于同一个目的地 , ping和TCP走的路径是相同的 。
但是 。
如果连路径成本都一样呢?也就是说有多条最优路径呢 。
那就都用 。
这也就是所谓的等价多路径 , ECMP(Equal Cost MultiPath) 。
我们可以通过traceroute看下链路是否存在等价多路径的情况 。
文章插图
可以看到 , 中间某几行 , 有好几个IP , 也就是说这一跳里同时可以选好几个目的机器 , 说明这段路径支持ECMP 。
ECMP有什么用
利用等价多路径 , 我们可以增加链路带宽 。
举个例子 。
文章插图
没有ECMP时只能选择某一条路径
从A点到B点 , 如果这两条路径成本不同 , 带宽都是1千兆 。那数据包肯定就选成本低的那条路了 , 如果这条路出故障了 , 就走下面那条路 。但不管怎么样 , 同一时间 , 只用到了一条路径 。另外一条闲置就有些浪费了 , 有没有办法可以利用起来呢?
推荐阅读
- |中年人在职场,要有“随时离开”的能力
- 智能手表|249元起 荣耀亲选Earbuds X3真无线耳机、儿童手表发布
- AirPods|你可能是盗版耳机受害者!真假AirPods在iPhone上一试便知
- 苹果|苹果最便宜智能手表 新款Apple Watch SE明天开卖:1999元
- 养鱼的利润与成本?养鱼的水怎样才能养好水质
- 抖音小店能做起来吗
- 抖音好友拉黑会怎么样及抖音功能介绍
- 什么是地震预警?手机如何实现地震预警功能?专家解读
- 抖音个人号能开抖音小店吗
- 微信怎么开通一物一码平台