包转发与负载均衡解析 原创:wildlee
三层设备对于报文的转发可分为进程转发、快速转发、CEF转发,其报文转发速度由慢到快。报文转发速度的变革经历了由软件式到硬件式的过渡。使用ASIC硬件处理速度要高于软件处理速度,为了使网络设备具有更高的处理性能,可以将软件实现的功能进行硬件式功能设计实现。
进程转发
从系统角度讲一个程序实体被执行叫做进程,一个处于活跃状态可以实现某种功能的程序。进程实现具体的功能依赖于对CPU、缓存、内存资源占用等。路由转发进程对进入路由接口报文进行处理并根据路由表进行查表路由,该进程的对每个报文的处理与路由都将消耗系统资源。当有大量的报文需要被处理与路由,软件式的报文转发大大加大了对系统资源的消耗与报文在转发上的延时。分组的处理包括修改其TTL值、计算效验和、重写MAC、CAC等。
快速转发
快速转发是一种界于软件与硬件相结合的包转发方式,又叫做缓存转发。快速交换将具有相同目标IP地址的首个报文做进程转发,然后创建基于该目标IP地址硬件缓存表,后续同一目标IP地址报文无需在进行路由查表转发,直接进行硬件式处理与转发操作。路由缓存表中为每个IP地址条目都指定了一个出站接口、下一跳,以及第二层需要重写的字段信息。每个被缓存的目标IP地址条目都有生存时间,如果在特定时间没有收到该目标主机地址的IP分组报文,那么该目标主机地址缓存条目将被删除。快速转发弊端是当收到大量不同目标IP地址的报文,将对大量没有目标主机缓存条目的报文执行进程转发操作,从而降低转发性能并占用大量系统资源。
CEF转发
CEF转发是一种基于拓扑硬件式的报文转发机制。CEF拓扑数据库有转发信息库FIB表和邻接表构成。FIB表是路由表的映射,根据路由表生成,但不存在路由表中的递归路由;而邻接表根据ARP表生成,邻接表提供第二层地址重写信息等。CEF不支持具有IP选项的报文做转发。
进程转发负载均衡
进程转发只能做基于包的负载均衡。
对于等价多路径的负载均衡,进程转发以包为单位,在多条路径之间进行轮循转发,实现负载均衡。
对于非等价多路径负载均衡,进程转发以包为单位,并根据不等价路径的流量分享数进行转发,实现负载均衡。
快速交换负载均衡
快速交换只能做基于目标IP地址的负载均衡。
对于等价多路径的负载,快速交换以具有相同目标IP地址的包为单位,对包进行基于目标IP地址的轮循转发,具有相同目标IP地址的报文分组都被转发到同一条路径,实现负载均衡。
对于非等价多路径负载均衡,快速交换以具有相同目标IP地址的包为单位,对包进行基于目标IP地址的转发,并根据不等价路径的流量分享数进行转发,实现负载均衡。
CEF转发负载均衡
CEF负载均衡可以对流量进行基于包的负载均衡或基于目标IP地址的负载均衡。CEF根据一张负载均衡表实现负载均衡。该负载均衡表存在16个哈希桶[Bucket],当到达某个网络有多条路径可达,那么该路径上的多个邻接地址[下一跳IP]将被与这16个哈希桶相映射,多个桶可以指向同一个邻接。用于负载均衡的16个哈希桶将被均等或不均等的分布到等价或非等价的路径上。分配到的桶越多代表此路径越优,可用来传输更多的流量。
CEF基于包的负载均衡
在等价多路径中做负载均衡中,多条等价路径将平均分配这16个桶,要注意的是桶数一定要相等。如果有两条等价路径,则每条路径上有8个桶,如果有三条等价路径,则每条路径上有5个桶,余下1个桶被禁用。这16个桶被编号0到15,从0桶开始被轮循分布到多条等价路径之上。
在非等价多路径负载均衡中,这16个桶的在多路径上的分配近视于多路径之间的流量共享数比值,16个桶将被全部分配。桶在多路径的分布上与等价路径分布一样,从0桶开始分配,拥有桶数少的路径桶数分布完以后,拥有桶数多的路径将连续性分布其它的桶。
CEF基于目标IP 地址负载均衡
对于所有需要路由的分组CEF都要对该分组的源与目标ip地址进行哈希计算,然后分别投入到16个桶中。这里要注意的是目标地址相同而源地址不同就能得出不同的哈希值,从而报文分组被投入其它的桶,所以说CEF是基于目标地址负载均衡有些勉强。经过长期对CEF基于目标IP地址负载观察,没有发现什么规则,但是对于等价路径负载不同目标IP地址报文总是被均衡分布,非等价中不同目标IP地址报文总是被按流量共享数比值分布。
负载均衡配置
Wildlee#show ip cef source-address destination-address
基于目的的负载均衡中检验特定的流量使用的是哪一个出站接口
Wildlee#ip cef distributed
在路由器上启用分布式的CEF
Wildlee#show adjacency detail
查看CEF邻接表
以上结果均为本人实验轻测!!!
转载请注明:爱开源 » 包转发与负载均衡解析