IP层转发分组的过程

IP层转发分组的过程

一、基于终点的转发

​ 分组在转法时是基于分组首部中的目的地址的,因此称为基于终点的转发。

​ 当路由器收到一个待转发分组,从转发表中得到下一跳路由器的IP后,不是将这个地址填入分组首部,而是交给链路层的网络接口软件,此软件负责把下一跳路由器的IP地址转换为MAC地址(ARP),然后将此MAC地址放在链路层的MAC帧首部,然后利用此MAC地址传送到下一跳路由器的链路层,然后再取出数据部分交给网络层。

​ 由于采用CIDR记法,转发表中给出的都是网络前缀。因此转发分组的过程,也就是查找转发表进行逐行寻找匹配前缀的过程。

二、最长前缀匹配

​ 假如一个分组到达一个路由器,与转发表中两个网络前缀都匹配成功,那么这时应该转发到哪个网络?

​ 首先为什么会与两个都匹配成功?假如转发表中有A、B两个前缀匹配,它们是由一个更大的地址块(假设为C)划分而来,C划分了四个子网,其中A包含了一个,B包含了三个,为了压缩转发表的空间,减少查找转发表的时间,B采用了路由聚合,这时转发表中就只有两项A、B。由于该分组和这两项进行AND运算时,并不知道B是由哪几个子网聚合而成,这样就造成了都匹配成功的现象。(那么过去分类地址就不会出现这种情况)

​ 为了解决这个为题,在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配前缀。这就叫最长前缀匹配(longest prefix match)。

​ 网络前缀越长,其地址块就越具体,因而路由就越具体。为了更加迅速的查找转发表,可以按照前缀的长短,把最长的排在第一行(无主机路由时),然后顺序排列。这样在查找转发表时,只要匹配到了就不用往下继续寻找了。

两种特殊路由:

1、主机路由:假设某特定主机IP地址为a.b.c.d,那么在转发表中对应的主机路由就是a.b.c.d/32,即子网掩码为32个1,也就是只有IP地址为a.b.c.d才能匹配成功。这种路由可使网络人员更加方便的控制网络和测试网络,当需要考虑某种安全因素时也可以使用这种特定主机路由。在对网络的连接或转发表进行排错时,指明到某一台主机的特殊路由就十分有用。这种路由在转发表中都放在最前面。

2、默认路由:用特殊前缀0.0.0.0/0来表示默认路由,即子网掩码为32个0。也就是不管分组的最终目的网络在哪里,都由指定的下一跳路由R来处理。

三、使用二叉线索查找转发表

​ 对于CIDR编址的转发表,最简单的查找算法就是循环查找了,从最长的前缀开始查找。这种算法的缺点是很明显的,那就是查找次数太多,最坏的情况就是没有这个路由。

​ 为了更有效的查找,通常是把CIDR的转发表存放在一种层次的数据结构,然后自上而下的按层次查找,最常用的就是二叉线索

​ 这就结构深度最多32层,对于每一个节点,其左节点是0,右节点是1。这样从上到下,各个路径就代表转发表中存放的各个地址。

​ 为了简化二叉线索的结构,可以先找出对应于每一个IP地址的唯一前缀,这样就能用这些唯一前缀来构造二叉线索。在进行查找时,只要能与唯一前缀匹配就行。

​ 每一个叶节点代表唯一前缀,每个页节点还需包含所对应的网络前缀和子网掩码。当搜索到一个页节点时,就需要将目的地址与子网掩码进行AND运算,看看是否和网络前缀匹配。

​ 为了提高二叉线索的查找速度,广泛使用了压缩技术。例如有几个地址前n位相同,在比较时从n+1位开始比较(即压缩了n位),这样就可以减少查找的时间。压缩也就意味着需要更多的运算,但是对于每一次查找转发表时都可以提高查找速度,这显然是值得的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值