二、进程交换/快速交换/CEF区别

1 交换/路由的区别和联系

  • 路由
  • 名词:信息从源IP到目的IP的一条最优路径
  • 动词:信息从本设备的一个接口根据FIB表转发到另一个接口的过程
  • 交换
  • 动词:根据三层到二层的地址映射,从本设备的出接口将信息转发到下一个设备的进接口的过程
  • 名词:从设备的一个接口转发到设备的另一个接口的过程(我们下面介绍的就是这种交换方式

我们常说的“一次路由多次交换”,其中的路由指“名词”的路由,实际上一个“名词”的路由里面不只包含了多次“交换”,也包含了多次的“动词”的路由;

  • 路由器的路由过程通常包括以下几个步骤:
    从下面的步骤也能看出,“路由”这个过程是不需要进行二层的封装的,是路由到对应接口之后才可能会进行二层的封装
    在这里插入图片描述
    在这里插入图片描述

2 三种交换方式

  • Process switching
  • 所有的包都需要通过CPU来检测转发
  • 路由表驱动的交换

在这种模式下,一条数据流(flow)中的第一个包(packet)将被置入系统缓存(system buffer).其目的地址将会拿到路由表中去查询比对,路由器的处理器(CPU or Processer)同时将进行CRC校验,检查包是否正确.然后数据包的二层MAC地址将会被重写,替换为下一跳接口的MAC地址,这样的过程将会继续,对这条数据流(flow)中的第2个、第3个数据包.…….相同的操作,包括查询路由表、重写MAC地址,CRC校验等。这种方式无疑是延迟最大的,因为它要利用system buffer 以及 processor去处理每个收到的包.但是我们仍然有机会使用这种交换方式,比如在进行基于每个包的负载分担时,或是debug ip packet 时。

  • Fast switching
  • 快速交换只是按需建立
  • 第一个报文不得不进行进程交换
  • 第一个报文交换完成后,建立缓存条目,后续报文就可以进行快速交换

快速交换要优于process switching,它采用了route cache(路由缓存)来存储关于某条数据流(flow)的特定信息,当然会包括诸如目的MAC地址,目的接口等内容.这时我们只需要对一条数据流(flow)中的第一个包做processswitching,并把信息存入cache,所有后续数据包,可以不必再中断system processor去执行查询等操作,直接从cache中提取目的接口,目的MAC地址等,这样大大加速了包转发速度。


在这里插入图片描述

  • ①将IGP的表项计算后加入RIB表中
  • ②在出现访问10.0.0.0/8网段流量时,开始进行递归查找直到下一跳的IP为直连为止,将对应信息填入switching Cache中
  • ③并且通过ARP请求下一跳IP对应MAC存入ARP 表中
  • ④将ARP表中获取MAC存入Switching Cache的DestinatMAC处
  • ⑤后续设备在封装二层时,根据IP就可以直接在switchingCache中找到相应的IP前缀,然后直接将Layer 2 Header的内容加到二层头部;
  • CEF
  • Topology driven switching

思科CEF 是最为高效的一种三层协议。CEF 采用了基于硬件的平台,它不仅仅是将数据都存入system buffer,而是将整个路由表、拓扑表,以及所有的下一跳地址、MAC地址全部进行"预存".只要路由表、拓扑表中存在的条目,无论是否有数据请求发往其目的地址,都会提前预读取,预设置缓存.这样,当有新的数据请求发送时,就不需要 CPU去查询目的接口,目的MAC地址等等信息,而是直接从缓存中读取,从而使转发速度得以大大提高.


在这里插入图片描述

  • ①将IGP的表项计算后加入RIB表中
  • ②根据IGP表马上进行递归查找算出最终出接口和下一跳IP并且放入FIB表中
  • ③根据FIB表中下一跳IP进行ARP请求获取MAC(如果没有下一跳IP,则直接使用目的IP做为请求IP)
  • ④将获取的MAC填入Adjacency Table的Destinat MAC中
  • ⑤流量转发直接查询FIB表然后再查Adjacency表封装二层

3 三个层面

  • 控制层面
  • 概念:控制层面为数据层面转发数据提供了各种必要的信息,是各种协议工作的层面。
  • 作用:为数据层面提供计算出的相应的素材,同时管理设备也是使用控制层面(管理层面的话高端设备会加)
  • 主要占用资源:CPU
  • 相关表项:RIB(路由表)、LIB(标签表)、OSPF邻居表、OSPF的LSDB、BGP的数据库…
  • 转发层面
  • 概念:网络设备中,对数据的各种具体的处理、转发过程都属于数据层面的范畴。
  • 作用:控制层面构建了路由表等数据发送的必要信息,数据层面根据这些信息来发送数据。
  • 主要占用资源:专用硬件资源(ASIC芯片)
  • 相关表项:FIB(CEF转发表)、LFIB(标签转发表)、Adjacency Table、switching Cache、MAC…
  • 数据层面
  • 概念:数据层面是转发层面的父级
  • 作用:除了负责转发层的将数据转发到一个接口,还负责数据的其他处理操作(上下标签,添加IP头部等等)
  • 主要占用资源:专用硬件资源(ASIC芯片)
  • 相关表项:涉及真实数据的处理操作都可以算是数据平面的操作
  • 总结
    联系交换的三种方式和三个层面可以得出以下总结
交换方式占用主要资源及表项交换速度
Process Switching全CPU(RIB、ARP)
Fast Switching半CPU(RIB)、半ASIC(switching Cache)较快
CEF全ASIC(FIB、Adjacency Table)

为什么使用ASIC芯片就可以更快速转发呢?我们看下面

4 CPU\GPU\ASIC\FPGA芯片区别

  • 各芯片之间的差别

在这里插入图片描述

  • CPU 算力较弱,并行处理能力较弱(串行处理能力强),强在灵活性,可以进行多种协议的计算
  • GPU 算力较强,并行处理能力较强,本身管理控制能力弱需要借助CPU调度管理,灵活性还行
  • ASIC 算力最强,并行处理能力强,根据用户需求定制灵活性差,很贵
  • FPGA 算力很强,并行处理能力强,可编程半定制电路灵活性较好,稍贵
  • 对于交换的影响
  • 像控制层,表项是在CPU中的,可以进行多种网络协议的计算,但是转发速度较慢;
  • 像转发层(数据层)的表项是缓存在ASIC芯片(网络设备中叫PHY)中的,由于是定制化专门用于转发的,所以转发速度很快;

4 FIB表

  • 在默认启用FIB表的情况下,报文转发查看FIB表而不是RIB表;
  • 命令:show ip cef detail
  • FIB表会提前计算出路由的最终出接口并存储在表中
    在这里插入图片描述
  • FIB表会存储已经成功访问的IP的具体表项方便转发
    在这里插入图片描述
  • FIB还能实现MPLS的打上标签和弹出标签的动作(所以MPLS离不开FIB)
    在这里插入图片描述

5 Adjacency Table表

  • 封装二层直接查看Adjacency Table来进行封装
  • 查看命令:show adjacency detail
  • Adjacency Table 包含了二层头部的所有信息
  • HDLC链路
    在这里插入图片描述
    在这里插入图片描述

  • EthernetII链路
    在这里插入图片描述
    在这里插入图片描述

  • 具体参数

在这里插入图片描述

  • Protocol
    上层协议,用于确定二层所使用的Type(如IP就是0x0800,MPLS就是0x8847,VLAN就是0x8100)
  • Interface
    出接口
  • Address
    下一跳IP地址(也有可能直接是目的IP地址)
  • 长串
    二层封装的完整信息
  • ARP
    这里是获取的方式

6 具体封装过程分析(以ICMP包举例)

注意:即使配置的静态路由只有下一跳IP没有配置出接口,最终在FIB表中也会存在出接口,因为下一跳IP必须可达才可以进入路由表,而FIB表就可以根据迭代查找找到最终的出接口;
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辽胜于无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值