一个报文的路由器之旅_【NE探秘】一个报文的路由器之旅

本文详细介绍了路由器处理需上送CPU的协议报文的流程。这些报文包括特定协议(如ARP、RARP等)、下一跳为127.0.0.1的报文、全网广播及UNR路由。路由器在解析报文后,不进行查表转发,而是直接上送CPU,并且这些报文不会进行CAR限速和流分类处理,而是通过CP-CAR控制上送速率,以保护CPU免受过大负载影响。
摘要由CSDN通过智能技术生成

路由器收到的需上送CPU处理的报文,其处理流程和业务报文是几乎相同的,如下图所示。

不同点在于:

差异(1):报文解析识别出的协议报文不再查表转发

在转发引擎PFE(NP或ASIC芯片)上做报文解析时,如果从二层帧头的协议字段就可以直接判断出是需要上送本机CPU处理的协议报文(如ARP、RARP、IS-IS、LLDP、LACP、PPP控制报文等等),或者目的地址为特定的保留组播IP地址(标准中定义,组播地址224.0.0.1~224.0.0.255供路由协议使用)的协议报文,上行不需要查表转发。

前面帖子介绍过,报文通过上行查表转发后,获得报文的目的接口板和出接口信息,以便交换网板能根据目的单板信息把数据交换到对应下行单板,而下行单板根据出接口信息发送报文。那么这些通过报文解析就能识别出来的协议报文,上行不查表转发,其目的接口板和出接口信息填什么呢?答案是填成与入接口板相同的板号,出接口为CPU。

?

差异(2):下一跳地址为127.0.0.1的报文需上送CPU

在路由器上,如下几类路由的下一跳地址为127.0.0.1,匹配这类路由的报文需要上送CPU处理:

1)接口主机路由和直连子网广播每一个配置有IP地址且链路层和IP层协议状态为UP的直连接口,都会生成三条路由,例如下图:

上图中:

- 第1条是网段路由,表示该路由器的GE1/0/0与10.2.5.0网段直连,到该网段的报文需要从GE1/0/0发出去,因此出接口为GE1/0/0;

- 第2条是主机路由,目的地址10.2.5.5是GE1/0/0的IP地址。当路由器收目的地址是自己某个接口的IP地址时,认为这是发送给自己的报文,必须上送自己的应用协议栈。在华为路由器上,这类路由的转发表出接口都是环回接口InLoopBack0,表示该类报文要上送CPU处理。

- 第3条是10.2.5.0/24子网段的广播地址,IP协议规定所有的本网段的三层接口都需要接收该地址的报文,所以广播路由的出接口也为环回接口InLoopBack0,路由器收到该报文,认为是发送给自己的消息,就上送处理。

另外,路由器上有一类特殊的逻辑接口LoopBack接口和VT(Virtual-Template)接口,通常配置为32位掩码的IP地址,对应会生成一条主机路由,如下图:

这类接口的主机路由,其下一跳也是127.0.0.1,转发表中出接口也是InLoopBack0,表示收到这类报文时需上送CPU处理。2)全网广播IP地址为255.255.255.255/32为全网广播,通常在配置主机的启动信息时使用,此时,主机可能还不知道它所在网网络的网络掩码,甚至连它的IP地址也不知道,例如到主机从DHCP或BOOTP服务器获取IP地址时,发送IP地址为255.255.255.255/32的DHCP Request消息报文。这种报文仅允许出现在本地网络中,所以路由器不转发这种报文,收到时上送CPU处理。

3)UNR路由当路由器作为BRAS(Broadband Remote Access Server,宽带远程接入服务器)/BNG(Broadband Network Gateway,宽带网络业务网关)时,用户通过PPPoE拨号接入BRAS/BNG,起初用户并没有IP地址,需要BRAS/BNG(或向RADIUS服务器申请)给用户分配地址。假设分配给用户的地址为10.111.111.1/32,那么BRAS/BNG应该生成10.111.111.1/32的路由,收到网络返回给用户的报文时,这个报文应该匹配到这条路由,并上送CPU处理,以便计费等处理,因此这条的下一跳也应为127.0.0.1。

这种路由比较特殊,不是路由协议学习到的,也不是直连的,也不是静态配置的,而是叫UNR(User Network Route)路由。

另外,为了让网络返回报文给用户,BRAS/BNG需要将这条路由发布出去,使得网络其他设备有到用户的路由,然而,BRAS/BNG可能接入大量用户,如果将每条路由都发布,那需要发布大量路由,不可取。为了避免发布大量路由,BRAS/BNG会根据地址池生成一条UNR路由,其下一跳也是127.0.0.1,出接口为Null0。

?

差异(3):协议报文不再做CAR限速上送CPU的报文在不做上、下行的CAR限速,这是为了避免当流量突发时协议报文因CAR限速被丢弃。

?

差异(4):协议报文不再流分类等处理由于下行就要送往CPU,流分类和标记已经没有作用,跟流分类相关的流策略等功能也是无用的,所有下行不再做跟流分类相关的操作。

差异(5):协议报文上送CPU时要经过CP-CAR处理为了防止大流量报文上送导致CPU过于繁忙,被确认为需要继续上送到CPU的报文,将进行CP-CAR的过滤,之后再上送。CP-CAR全称是Control Plane CAR(Committed Access Rate),是用来限制转发引擎向接口板CPU发送报文的速度,具体做法跟基于流的CAR机制(详细请参见“一个报文的路由器之旅 ?(4) QoS基础”)类似。CP-CAR根据协议的类型,报文的VLAN或者所属的用户,分成很多个管道,每一个管道使用令牌桶进行速率限制,当上送的流量宽值超过设置的速率时,上送的报文将被会随机丢弃,避免CPU过载。

?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个报文路由器之旅可以简单地理解为报文在网络中经过多个路由器的传递过程。当一个主机向另一个主机发送数据时,数据会被分成多个数据包,并通过网络传输到目标主机。 首先,源主机将数据包发送到与其相连的第一个路由器路由器根据数据包中的目标IP地址检查路由表,确定下一个路由器的位置。这个过程被称为路由器的转发决策。 接下来,第一个路由器将数据包传递给下一个路由器。这个过程会一直重复,直到数据包到达目标主机。每个路由器都会根据目标IP地址更新数据包的目的地,并将数据包传输到正确的下一个路由器,直到最后到达目标主机。 在路由器之间传输数据包时,路由器会根据网络拓扑和路由协议,选择最佳路径进行转发。路由器之间会通过协商和交换路由信息来更新和维护路由表,以确保数据包能够按照最佳路径传递。这些路由协议包括BGP、OSPF等。 除了路由器之间的转发决策,路由器还会执行其他功能,如数据包的分片与拼装、流量控制、拥塞控制等。这些功能的执行保证了数据包能够按照要求的方式在网络中传递,同时确保了网络的高效性和可靠性。 最后,当数据包到达目标主机时,主机接收数据包并将其重新组装成完整的数据。这样,经过多个路由器的旅程结束,数据包成功地从源主机传输到了目标主机。 总而言之,报文路由器之旅一个复杂的过程,涉及到多个路由器之间的转发决策、路由表更新、功能执行等。在这个过程中,通过路由协议和各种功能的支持,数据包能够高效、可靠地传输到目标主机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值