TCAM流表项调度算法
- 格式:pdf
- 大小:478.73 KB
- 文档页数:3
TCAM路由器产品专用硬件查找技术随着Internet业务量呈指数级增长,IP网带宽需求的强劲增长,目前宽带网络的骨干传输速率已普遍提升到10Gbps,基于软件转发技术的传统路由器已经无法满足当前宽带网络的线速转发要求。
另一方面,为了解决IPv4地址资源匮乏的问题,在寻址方案的设计中必须引入诸如CIDR(无分类域间路由)及VLSM(变长子网掩码)等技术,由此引发的新的路由模式需要由新的包转发策略来实现。
IPv6的出现使得这种需求更为迫切,因为IPv6本身地址宽度的增长使得最长前缀匹配的问题变得更为突出。
为了充分解决"最长前缀匹配"问题,同时保证高端路由器对线路转发速率的要求,路由器产品的设计中采用了专用的硬件查找技术TCAM方案,以硬件化的路由表查找和分组转发技术实现对各类数据包的快速分类和路由,同时支持ACL和MPLS的查找。
一、 IP数据包转发对路由器的需求从网络OSI的七层模型来看,路由器工作在第三层,即网络层。
它利用网络层定义的"逻辑"上的网络地址即IP地址来区别不同的网络,实现网络的互联和隔离。
为IP数据包选择路由及转发包是路由器的基本任务。
为了完成对一个IP包的转发,路由器必须检测IP包包头中的目标地址,以此确定下一跳路由器的地址,然后将包发送到下一跳。
下一跳的路由存储在路由表中,而路由表的创建是通过路由协议来完成的,如边界网关协议BGP。
衡量路由器IP包转发的能力有两个重要的标准:可持续的最大包转发速率和路由表的大小。
另外如最大持续和突发路由表更新速率、路由表更新时延以及路由表的可用性也都是不可忽视的。
更新时延的重要性表现在路由表是否及时反映了网络的拓扑变化,在路由表更新之前,数据包会被送到非最优的通道上去。
这样会造成包传输时间的增加及丢包,这就是所谓的路由抖动现象,使得正在进行路由更新的路由器被其它路由器错误地标记为不可达,导致的结果是受到此路由器影响的域从网络中脱离。
TC方案是什么意思引言TC(Traffic Control)指的是流量控制,是一种管理网络流量的技术方案。
在计算机网络中,流量控制是一项重要的任务,用于确保网络资源的合理分配和优化网络性能。
TC方案可以根据不同的需求对流量进行分类、调度和限制,从而实现网络服务质量的管理和优化。
本文将介绍TC方案的基本概念、工作原理以及在实际应用中的意义和使用场景。
TC方案的基本概念流量控制流量控制是指通过对网络流量进行控制,使其不超过网络设备或链路的处理能力。
通过流量控制,可以避免网络拥塞、提高网络的带宽利用率,确保重要的流量得到优先处理,从而提高网络的性能和用户体验。
调度算法调度算法是TC方案中的核心技术之一,用于决定不同流量的优先级和处理策略。
常用的调度算法包括先进先出(FIFO)、最短剩余时间优先(SJF)、最短作业优先(SJS)等。
通过合理选择和配置调度算法,可以实现对不同类型流量的灵活调度和优化。
限制速率限制速率是指通过设置速率上限,限制特定流量的发送速度。
通过限制速率,可以避免某些流量占用过多的带宽资源,确保其他流量能够得到合理的网络资源分配。
限制速率是TC方案中常用的一种流量控制手段。
TC方案的工作原理TC方案主要通过使用Linux内核的Traffic Control (tc)模块来实现。
tc模块是Linux内核自带的一个流量控制工具,提供了一系列的命令和选项,用于配置网络流量的分类、调度和限制。
TC方案的工作原理可以简单描述如下:1.分类流量:根据定义的规则和条件,对网络流量进行分类。
可以根据IP地址、端口号、服务类型等进行分类。
2.调度流量:使用合适的调度算法,对不同类别的流量进行优先级调度,决定其处理顺序和策略。
3.限制速率:根据需要,对特定类别的流量设置速率上限,限制其发送速度。
可以根据需求进行灵活配置。
TC方案的意义和使用场景改善网络性能通过合理使用TC方案,可以改善网络的性能和稳定性。
进程调度算法总结表格
以下是几种常见的进程调度算法及其特点的总结表格:
算法名称 | 特点
----------|--------------------
先来先服务 | 依据进程到达的顺序进行调度,无法区分进程的优先级
短作业优先 | 优先调度执行时间最短的进程,有利于短作业快速完成,但可能导致长作业长时间等待
高响应比优先 | 综合考虑等待时间和服务时间,具有较好的响应效果,但可能导致长作业长时间等待
时间片轮转 | 分配固定的时间片给每个进程,强制进程按时切换,避免长作业占用CPU时间过久,但可能导致短作业被频繁中断
最高优先级优先 | 每次选择优先级最高的进程执行,可能造成低优先级进程永远得不到执行的机会,存在饥饿情况
最短剩余时间优先 | 在短作业优先的基础上,动态调整进程的优先级,有利于长作业和短作业的公平竞争,但需要实时监测进程的执行情况
最不利用法优先 | 优先调度利用率最低的进程,避免资源长时间闲置,但可能导致长作业长时间等待
多级反馈队列 | 将进程按优先级分成多个队列,每个队列具有不同的时间片大小,优先级最高的队列执行时间最短,具有较好的综合性能,但调度算法较为复杂
以上是一些常见的进程调度算法及其特点的总结,具体选择哪种调度算法要根据实际情况来决定。
一调度概述▊调度的基本概念▊调度的基本流程▊调度周期介绍动态调度即快速调度机制。
▊调度执行通过下行PDCCH的DCI信息来执行,每个调度周期,UE都要监听PDCCH以获取上下行调度信息。
二下行调度算法介绍▊下行调度器下行调度主要负责为UE分配物理下行共享信道PDSCH上的资源,并选择合适的MCS用于系统消息和用户数据的传输。
▊下行调度的输入1〕R10规定了8种UE能力级别,每个级别规定了每个TTI能够传输的最大bit 数及层数。
2〕CSI是基于瞬时的下行信道质量估计的。
3〕RI用来指示PDSCH的有效的数据层数。
用来告诉eNB,UE现在可以支持的CW数。
也就是说RI=1,1CW,RI>1,2 CW.4〕PMI用来指示码本集合的index。
由于LTE应用了多天线的MIMO技术。
在PDSCH物理层的基带处理中,有一个预编码技术。
它为ENB提供建议使用的预编码矩阵。
5〕CQI用来反映下行PDSCH的信道质量。
用0~15来表示PDSCH的信道质量。
0表示信号质量最差,15表示信道质量最好。
说明: 搜索UE在PUCCH/PUSCH上发送CQI给eNB。
eNB得到了这个CQI值,就质量当前PDSCH无线信道条件好不好。
这样就可以有根据的来调度PDSCH。
6〕下行发射功率是小区所有用户共享的。
▊下行调度的基本功能和输出▊下行每TTI调度流程优先级:半静态调度、控制面消息和IMS信令>重传数据>初传数据▊控制消息调度▊下行调度资源的获取▊HARQ重传调度▊下行初传调度▊下行初传调度流程▊调度用户选择算法MAX C/I 、RR、PF是基本特性,EPF是可选特性。
MAX C/I算法可以最大化系统吞吐量,但不能保证小区各用户之间的公平性。
RR算法能保证各用户之间的公平性,但不能最大化系统的吞吐量。
PF是MAX C/I和RR算法的折中,但无法保证用户的业务感受。
EPF是增强PF算法,包括业务调度优先级的计算和业务速率的保证。
一、S7500E配置类问题1、S7500E主控、单板介绍主控:Salience VI(LSQM1SRPB0) 最基本的引擎,支持IPv4、IPv6,可以为SA单板提供IPV4和IPV6三层集中代理,在7503E、7506E、7506E-V上单主控每槽位提供24GE(双向48GE)转发能力,配置双主控负载分担方式实现在每个槽位48GE(双向96GE)接口的跨板线速转发能力。
但对7510E单主控每槽位提供12GE(双向24GE)转发能力,配置双主控负载分担方式实现在每个槽位24GE(双向48GE)接口的跨板线速转发能力。
Salience VI-Plus(LSQM1SRPD0) 交换容量是Salience VI引擎的二倍,在7510E上单主控每槽位提供24GE(双向48GE)转发能力,配置双主控负载分担方式可实现每个槽位48GE(双向96GE)接口的跨板线速转发能力,但配置在7503E,7506E,7506E-V时和Salience VI引擎转发能力一致,其它软件特性和Salience VI引擎一样。
Salience VI-Lite(LSQM1MPUB0) 在Salience VI引擎基础上去掉了为SA板卡代理的功能,其它性能一样,主要面向商务条件苛刻的项目,在使用该引擎的条件下,SA单板必须与SC单板同时配置销售,才能使SA单板正常工作。
严禁只配置SA系列单板。
Salience VI-10GE(LSQM1SRP2XB0) 在Salience VI引擎基础上增加2个万兆端口,可线速转发,软件特性和SC板卡一致;其它特性和Salience VI引擎一样。
Salience VI-GE(LSQM1SRP12GB0) 在Salience VI引擎基础上增加12个GE端口,可线速转发,引擎GE端口软件特性和SC板卡一致;其它特性和Salience VI引擎一样。
Salience VI-Turbo(LSQM1SRP1CB0) 增强型引擎,支持IPv4、IPv6,可以为SA、SC单板提供IPV4、IPV6和MPLS集中代理,在7503E、7506E、7506E-V上单主控每槽位提供24GE(双向48GE)转发能力,配置双主控负载分担方式实现在每个槽位48GE(双向96GE)接口的跨板线速转发能力。
Linux下TC(trafficcontrol)以及netem的使⽤⼀:综述:linux系统中的流量控制器(TC)主要是在输出端⼝处建⽴⼀个队列进⾏流量控制。
TC是⼀个可以根据数据包的任何⼀个部分的特征对其进⾏分类的⼯具,并且可以为各类数据提供不同带宽,从⽽控制他们的传输速度。
TC是iproute2的⼀部分,集成在2.2.及以上版本的内核中,还可以与linux内核⾥的各种架构(如Netfilter netem)协同⼯作。
⼆:TC的组件TC主要由队列规定(qdisc),类(class)和过滤器(filter)这3个组件组成,绘图中⼀般⽤圆形表⽰队列规定,⽤矩形表⽰类:1:qdisc:TC的核⼼组件,也被称为队列,是管理⽹卡输⼊,输出数据的⼀个算法,⽤于确定数据包的发送⽅式。
队列规定可分为两类:(1)不分类的qdisc:内部不包含可配置的⼦类,对进⼊队列的数据包不进⾏区分对待,⽽只是对数据包进⾏重新编排,延迟发送或者丢弃,主要有:pfifo-fast.TBF.SFQ等(2)分类队列规定:内部可包含⼀个或多个⼦类,使⽤过滤器对数据包进⾏分类,然后交给相应的⼦类处理,分类队列规定有CBQ,HTB等2:类:就是数据的类别,各种数据通过过滤器进⾏分类,最后被放⼊类的队列规定⾥⾯进⾏排队。
如果⼀个类没有⼦类,那么这个类被称为叶⼦类,否则就被成为内部类。
1:1和1:12是内部类,其他均为叶⼦类,叶⼦类有⼀个负责为这个类发送数据的队列规定,⽽且这个qdisc可以是分类的,如1:10有⼀个分类的队列规定。
TC中通常把类的队列规定称为叶⼦qdisc(只有叶⼦类才有队列规定)3:过滤器就是⼀些规则,根据这些规则对数据包进⾏分类,过滤器可以属于队列规定,也可以属于内部类,若需要在叶⼦类上再实现分类,那就必须将过滤器与叶⼦类的分类队列规定关联起来,⽽不能与叶⼦类相关联。
最常⽤的是U32过滤器,由⼀个过滤器和⼀个动作组成,选择器⽤来对数据包进⾏匹配,⼀旦匹配成功就执⾏该动作。
tcam 实现原理TCAM(Ternary Content Addressable Memory)是一种特殊类型的存储器,它在数据检索方面具有独特的优势。
本文将介绍TCAM的实现原理以及其在网络路由、防火墙等领域的应用。
我们来了解一下TCAM的基本原理。
TCAM由一个存储单元阵列和相关的控制逻辑组成。
每个存储单元由一个比特位和一个比特位掩码组成,用于存储数据和掩码信息。
当进行数据检索时,TCAM会将待检索的数据与存储单元中的数据进行比较,并输出匹配结果。
TCAM的实现原理主要涉及到三个方面:存储单元的组织方式、比较逻辑和匹配算法。
首先是存储单元的组织方式。
TCAM的存储单元通常采用多行多列的方式进行组织,每个存储单元都有一个地址用于唯一标识。
存储单元阵列的行数决定了TCAM的容量,而列数则与数据的位数相关。
存储单元中的比特位和比特位掩码分别用于存储数据和掩码信息,掩码用于指定数据中需要进行匹配的位。
其次是比较逻辑。
TCAM中的比较逻辑用于将待检索的数据与存储单元中的数据进行比较。
当两个比特位相等时,比较结果为1;当其中一个比特位为X(表示该位可以是0或1)时,比较结果也为1;否则,比较结果为0。
比较逻辑通常采用并行比较的方式,以提高检索速度。
最后是匹配算法。
TCAM的匹配算法主要用于确定是否存在匹配项,并输出匹配结果。
常见的匹配算法有最长前缀匹配、完全匹配和多模匹配等。
最长前缀匹配用于路由表查找,根据目的地址选择最长前缀匹配项;完全匹配用于防火墙等应用,只有当待检索的数据与存储单元中的数据完全匹配时,才输出匹配结果;多模匹配用于入侵检测系统等应用,可以同时匹配多个规则。
TCAM作为一种高速的存储器,具有广泛的应用。
在网络路由方面,TCAM可以用于快速查找最佳路由路径,提高路由器的转发速度和精确度。
在防火墙方面,TCAM可以用于快速匹配规则,实现高效的数据包过滤和访问控制。
此外,TCAM还可以用于入侵检测系统、负载均衡等领域。
tcam和hash acl实现方式标题:TCAM和Hash ACL实现方式引言:网络安全是当前互联网发展过程中重要的方面之一,为了保护网络的安全性,网络管理员需要采取一系列的措施来防止未经授权的访问和恶意攻击。
其中,ACL(Access Control List)是一种常用的网络安全技术,用于限制网络流量的访问。
本文将介绍两种实现ACL的方式,即TCAM和Hash ACL。
一、TCAM实现方式1. TCAM(Ternary Content Addressable Memory)是一种高速缓存技术,适用于快速查找和匹配网络流量。
TCAM的实现方式如下:a. TCAM使用哈希函数将网络流量的特征(如源IP地址、目标IP 地址、端口号等)映射为一个唯一的索引值。
b. 网络管理员可以根据安全策略编写ACL规则,将特定的流量特征与操作(如允许、拒绝)关联起来。
c. 当网络流量经过TCAM时,TCAM会使用哈希函数计算流量特征的索引值,并在TCAM的存储器中查找匹配的ACL规则。
d. 如果找到匹配的ACL规则,TCAM会根据该规则的操作进行相应的处理,如允许或拒绝流量。
e. 如果没有找到匹配的ACL规则,TCAM会根据默认策略进行处理,如允许或拒绝流量。
2. TCAM实现方式的优势:a. 高速:TCAM的并行搜索能力使其能够在非常短的时间内处理大量的网络流量。
b. 灵活:通过编写ACL规则,网络管理员可以根据实际需求对网络流量进行精细的控制。
c. 可扩展:TCAM的存储容量可以根据需要进行扩展,以适应网络规模的增长。
d. 安全:TCAM可以提供高效的流量过滤功能,有效防止未经授权的访问和恶意攻击。
二、Hash ACL实现方式1. Hash ACL是一种基于哈希表的ACL实现方式,其原理如下:a. 网络管理员将ACL规则存储在一个特定的哈希表中,每个规则包含一个或多个流量特征和相应的操作。
b. 当网络流量到达时,哈希表会使用哈希函数计算流量特征的哈希值,并在哈希表中查找匹配的ACL规则。
linux下流量控制工具TC详细说明及应用实例目录一、TC的安装 (1)二、TC原理介绍 (1)三、TC规则 (2)3.1、流量控制方式 (2)3.2、流量控制处理对象 (2)3.3、操作原理 (3)3.4、命名规则 (4)3.5、单位 (4)四、TC命令 (5)五、具体操作 (5)5.1、基本实现步骤 (6)5.2、环境模拟实例 (6)5.2.1. 建立队列 (6)5.2.2. 建立分类 (6)5.2.3. 建立过滤器 (7)5.2.4.建立路由 (7)5.2.5. 监视 (8)5.2.6. 维护 (10)六、dms小组应用场景一个实例 (11)参考资料 (12)一、TC的安装TC是linux自带的模块,一般情况下不需要另行安装,可以用man tc查看tc相关命令细节,tc 要求内核2.4.18以上。
注意,64位机器上,先执行下面命令:ln -s /usr/lib64/tc/ /usr/lib/tc二、TC原理介绍Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,它利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量的控制。
TC模块实现流量控制功能使用的队列规定分为两类,一类是无类队列规定,另一类是分类队列规定。
无类队列规定相对简单,而分类队列规定则引出了分类和过滤器等概念,使其流量控制功能增强。
无类队列规定是对进入网络设备(网卡) 的数据流不加区分统一对待的队列规定。
使用无类队列规定形成的队列能够接受数据包以及重新编排、延迟或丢弃数据包。
这类队列规定形成的队列可以对整个网络设备( 网卡) 的流量进行整形,但不能细分各种情况…。
常用的无类队列规定主要有pfifo _fast (先进现出) 、TBF ( 令牌桶过滤器) 、SFQ(随机公平队列) 、ID (前向随机丢包)等等。
这类队列规定使用的流量整形手段主要是排序、限速和丢包。
CAM是Content Addressable Memory的缩写,即“内容寻址存储器”的意思,它是在传统的存储技术的基础上实现的联想记忆存储器,关于CAM的基本操作有三种:1).写操作:输入地址和数据,将数据写到指定的地址上,写入速度与RAM 相同;2).读操作:输入地址,返回该地址上的数据,读取速度与RAM相同;3).查找操作:输入待查数据,返回该数据被存储的地址。
这也是CAM的最主要用途,它能够从巨大的数据库中进行快速查找,并且返回最佳的匹配地址,最快查找速度能达到每秒一亿次以上。
TCAM是Ternary Content Addressable Memory的缩写,即“三态内容寻址存储器”的意思,它是从CAM的基础上发展而来的。
一般的CAM存储器中每个bit位的状态只有两个,“0”或“1”,而TCAM中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’t care”状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找,而CAM没有第三种状态,所以只能进行精确匹配查找。
TCAM器件的生产厂商主要有Cypress、IDT和Netlogic三家。
这三家分别将TCAM器件称作Network Search Engine(NSE)、Network Search Accelerator(NSA)和Knowledge-based Processor(KBP)。
TCAM器件在通信领域种有非常广泛的应用,主要有:1).ATM Switching设备中的VCI/VPI转发和ATM-to-MPLS orATM-to-TCP-Flow地址映射表项的存储和查找;2).Ethernet Switching设备中的二层MAC地址、ARP/RARP解析和三层IP 路由表项的存储和查找;3).Emerging Protocols and functions方面的MPLS label表项的存储和查找;4).Packet Classification业务中的Enforce security、Enforce departmental policies和QOS检测表项的存储和查找;5).安全防护设备中的FIB/LBT、MFIB及ACL表项存储和查找。
如何进行超级计算任务的批量处理与调度超级计算任务是指那些需要极高计算能力和处理速度的任务,例如大规模数据分析、模拟实验等。
在处理这些任务时,批量处理和调度成为关键的环节,因为它涉及到任务的执行顺序、资源的分配以及结果的收集等方面。
本文将介绍如何进行超级计算任务的批量处理与调度,以帮助您高效地完成这类任务。
首先,为了实现批量处理超级计算任务,我们需要明确任务的组织结构和调度方法。
一个好的组织结构应能够有效管理和调度任务,并能提供良好的灵活性和可扩展性。
在这方面,常用的方法有任务队列和任务流。
任务队列是一种简单而有效的组织结构,它将任务按照先后顺序排列,并提供了一些基本的操作接口,如添加任务、删除任务、暂停任务等。
通过任务队列,我们可以轻松地管理和调度任务,并且可以实现任务的并行执行,提高计算效率。
任务流是一种更加灵活和复杂的组织结构,它允许用户根据实际需求创建和管理任务之间的依赖关系。
任务流可以将多个任务组织成一个整体,并通过定义任务间的依赖关系来控制任务的执行顺序。
通过任务流,我们可以更进一步地优化任务的调度和执行,实现最佳的计算效果。
除了组织结构,我们还需要考虑任务的调度方法。
任务调度是指根据一定的策略和规则,将任务分配给不同的计算资源,并控制其执行顺序和并发度。
在超级计算任务中,常用的调度方法有简单轮询、最短作业优先和遗传算法等。
简单轮询是一种常见且简单的调度方法,它按照任务的提交顺序依次分配计算资源,并保持均衡的资源利用率。
虽然简单轮询调度方法简单易行,但当任务量较大、计算资源有限时,可能会导致较长的等待时间和不均衡的负载。
最短作业优先调度方法则根据任务的执行时间预测,选择执行时间最短的任务优先分配计算资源。
这种方法可以有效减少任务的等待时间和提高资源的利用率,但对于长时间的任务可能会导致其他短周期任务的等待时间增加。
遗传算法是一种基于自然选择和进化原理的优化方法,通过模拟生物进化过程来寻找最优解。
这是一篇关于MSTC 网及调度算法小探的提纲,欢迎浏览借鉴!1 引言工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行,工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在中预先定义好的工作流逻辑推进工作流实例的执行。
工作流引擎是整个工作流管理系统的基础,其功能直接决定了工作流管理系统的应用范围和对变化的适应能力。
工作流引擎的核心是工作流过程模型和流程的调度算法,工作流过程模型是对业务流程的抽象表示,而调度算法则是流程执行的控制规则,两者共同实现了业务流程的自动执行。
工作流过程模型方面,有向图模型最早被用来建立工作流模型,如流程图、状态图等、活动网络图、EPCM 模型(Event-driven Process Chain,事件过程链模型)等。
H.A. Reijers等学者将Event-driven Process Chains 扩展提出Aggregate EPC (aEPC)模型,用一个统一的模型来描述一系列相似的业务流程。
Petri 网技术也是工作流建模的常用方法之一,如Van derAalst 在Petri 网的基础上提出了工作流网WF-net,并进一步研究提出了一种新的工作流建模语言YAWL,Kees Van Hee 等学者基于工作流网提出了一个过程模型和数据模型的融合方法。
Jan Hidders 等学者基于Petri 网和嵌套关系演算理论提出了一个新的数据流语言。
2 MSTC 网的定义和相关概念2.1 MSTC 网定义 1(MSTC 网,Multi-step Task Collaborative Nets)一个四元组N =(R,T;W,D)是一个MSTC 网的充分必要条件是:(1)R ≠φ;(2)T ≠φ;(3)R ∩T =φ;(4)W ? R×T ;(5)D ? T × R ;(6)dom(W)∪cod(W) = R ∪T 。
1、TCAM 表项管理算法
1.1 顺序移动法
所有关键字表项按照它们的前缀长度组成一个个表项集合块,并且从TCAM 的低地址开始顺序排列,所有的空闲空间存放在TCAM 的高地址。
图2 采用的就是这种方式。
如果我们需要在TCAM 中加入长度为20 的地址前缀,该地址前缀应该保存在表项P1 和P2 之间。
为了能够在P1和P2 之间腾出一个空闲空间,那么最简单的方法就是将P2 到P5 这四个表项依次向下移动一个位置,这种方式的效率很低,最差情况下的算法复杂度为O(N),其中N 为目前TCAM 中保存的表项数目。
1.2 预留表项空间的顺序移动法
为了尽量避免表项插入造成其它表项大规模的移动,可以为每个长度的前缀集合预留一些空闲的表项,如图4 所示。
当需要加入新的前缀表项时,如果对应前缀长度的前缀集合中包含空闲表项,那么就不需要进行表项移动操作;如果不存在空闲表项,那么需要从相邻的前缀集合块中借用空闲表项,路由更新带来的表项移动次数大大降低了。
这种方法能够提高路由更新的平均效率,但是在最差情况下,路由更新的算法复杂度仍然为O(N)。
1.3 选择移动法
TCAM 要求所有的路由按照前缀长度降序排列,令Pj 代表的是前缀长度为j 的所有路由集合,如果j>k,那么所有Pj中的路由表项都应该保存在Pk中的路由表项之前。
TCAM 只要求前缀长度集合块之间的顺序关系,对于每个前缀长度集合块内部各个路由前缀之间的顺序关系没有严格规定。
选择移动法就利用了这一思想,算法实现如图5 所示。
当需要在TCAM中加入长度为k(8≤k≤32)的路由前缀时,首先从长度8 的前缀块开始,将前缀块的第一项移动到最后一项(即TCAM的空闲表项区域),这样在长度为8 的前缀块处就有了一个空闲表项;然后将长度为9 前缀块中的第一项移动到这一个空闲表项处,使得长度为9 前缀块中出现了空闲表项;以此类推,直到新加入表项所在的前缀块为止,那时就只需要将该新表项加入到分配处的空闲表项处就
可以了。
显然,这种算法的复杂度为O(W),其中W 是路由前缀的长度。
使用
选择移动法,在图2 的例子中,只需要移动P5、P4、P2 三个表项就可以在P1 与P2 之间腾出空间并且仍然保持TCAM 前缀长度有序。
还可以对选择移动法进行改进来提高算法的效率,如图6 所示,我们将TCAM 的空闲前缀块从TCAM 的底部移动到TCAM 的中间,其它算法的思想维持不变,显然此时算法的复杂度进一步降低为O(W/2)。
与顺序移动法相比,选择移动法大大减少了更新过程的表项移动次数,因而提高了算法的运行效率。
1.4 预留表项空间的选择移动法
可以将预留表项空间的思想运用到选择移动法当中,预留表项空间的选择移动法是TCAM 更新平均性能最好的管理算法。
1.5 表项管理算法的实现
为了维护整个TernaryCAM 的路由前缀结构,我们设计了一个struct tcamBlock 数据结构来表示每一个路由前缀块的状态信息,其中start 变量指示该路由前缀块在TCAM 中的起始位置,end 变量指示路由前缀块在TCAM 中的终止位置,number 表示路由前缀块中真正有效的路由前缀表项数。
这三个表量之间的关系为number≤end-start+1,其中等号成立当且仅当该路由前缀块中不存在无效路由前缀表项。
由于选择移动法的性能远远优于顺序移动法,所以我们设计实现了选择移动法(包括改进算法)和预留表项的选择移动法。
不管采用哪一种实现方案,TCAM 更新过程的操作都可以归纳为路由前缀块上移或者路由前缀块下移这两种基本的路由移动方法。