深入理解Linux网络技术内幕 第30章 路由-概念

路由与路由表

决定一个入口报文送给本地主机还是转发所需要的信息,以及转发时正确转发所需要的的信息,都存储转发信息库中FIB(Forwarding Information Base),也简称为路由表。路由表是由许多路由的集合,一条路由是一组参数,这些参数存储了到一个给定目的地转发流量的所有信息。一条路由所需要的最少参数集合:

  • 目的网络
  • 出口设备:与路由匹配项从该设备发送出去。
  • 下一跳网关:当目的网络和本地主机不是直接相连时,需要其他路由器转发。下一跳网关就是指该路由器的地址。

路由的基本元素

对称路由和非对称路由:即来路由和回去路由是否一致来区分二者。

Metric是在一条路由上配置的一个可选参数,这些metric可被TCP用作内部变量的初值,也可以被TCP协议改变。如Path MTU,窗口,往返时间rtt,拥塞窗口等。

可路由地址与不可路由地址:IP规范中将特定范围内地址规定为不可路由地址,这些地址只能保留在局域网内使用。可路由地址必须是全球唯一的,不可路由地址不可以被提供因特网服务。如果不可路由地址主机需要和外部主机通信,路由器必须使用网络地址转换(NAT)隐藏本地不可路由子网。不可路由地址如下:
在这里插入图片描述

Scope

路由和IP地址都可以指定一个Scope,用来告诉内核这些IP地址在什么情况下有意义、可被使用。在Linux中路由的Scope表示到目的网络的距离。
常用Scope:

  • 主机(Host):该地址只用于主机内通信,其Scope就是主机。例如回环地址127
  • 链路(Link):当一个地址只在局域网内使用时,该地址的Scope就是链路。例如子网的广播地址。
  • 全域(Universe):当一个地址可以在任何地方使用时,其Scope为全域。这时大多数地址的默认Scope。

Scope用于路由时表示的意思是

  • 主机(Host):这一条路由表示的目的地是本地主机时,其Scope就是主机。
  • 链路(Link):这一条路由表示的目的地是本地网络时,其Scope就是链路。
  • 全域(Universe):这一条路由表示的地址超过一个下一跳时,其Scope为全域。
    广播地址和回环地址又内核自动设定合适的Scope。

默认网关

当没有其他到达目的地的确定路由时使用的路由。

定向广播

广播报文时一个发往子网广播地址的简单报文。子网广播通常位于同一个子网中的主机发起。广播报文目的地是子网内所有的主机。
定向广播目的地是远端子网的广播地址。

主机地址与辅助地址

同一个NIC可以配置多个IP地址,某地址为主地址,某些为辅助地址。

路由表

路由表时路由子系统的核心,由路由数据库组成。

特殊路由

收到报文后需要决定将这个报文提交给本地协议栈还是转发,Linux使用一个独立的HASH表,表中只存本地地址,这张路由表中存储所有的监听地址,包括本地配置地址,也包括子网广播地址。
默认情况下linux使用两张路由表:

  • 一张存储本地地址,从该表查找成功表明报文传递给自己。
  • 一张表用于所有其他的路由。

路由类型与动作

Linux允许用户自定义报文匹配路由时的动作,默认动作为转发:

  • 黑洞(Black hole)悄悄丢弃
  • 不可到达 报文被丢弃产生ICMP主机不可达消息
  • 禁止 报文被丢弃,生成ICMP报文被过滤
  • 放弃 报文与该策略匹配,路由器放弃查找当前路由表,继续查找下一张表。

路由缓存

LInux将路由缓存分成两部分

  • 与协议相关的缓存
  • 与协议无关的缓存,通常被称为DST
    Linux系统可以创建多个独立的路由表支持策略路由,但是只有一个路由缓存。

路由表与路由缓存

路由表使用子网连续地址存储,而缓存项与单个IP地址关联。

路由缓存垃圾回收

垃圾回收负责清理路由子系统不再使用的数据结构,被使用的数据结构也可以被删除,如为了存储更为重要的信息需要立即释放内存。回收操作不会导致数据丢失,只会导致缓存查找不命中。
垃圾回收机制:

  • 同步回收 路由子系统认为需要释放内存时可以立即清理。如添加新的路由项,而缓存已经达到阈值或者邻居子系统需要内存。
  • 异步回收 使用一个定时器周期性的触发清理操作。

路由查找

路由缓存查找使用hash算法寻找完全匹配项。
在路由表中查找基于最长前缀匹配算法(LPM)算法。到达一个目的地址存在多条路由,在有多条路由匹配情况下,路由算法使用LPM算法选择最佳路由,即子网最小或者子网掩码最长的路由。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值