带你深入学习交换机FFP技术
扫描二维码
随时随地手机看文章
交换机FFP(Fast Filter Processor)技术提供了先进的多层交换、报文分类及线速处理功能,能够基于协议或字节对报文进行线速解析、分类,报文解析深度达80或128字节,广泛用于各类基于流的报文分类、过滤及镜像等应用,如:QOS(Quality of Service)、ACL(AccessControl Lists)、DSCP(DifferenTIatedServices Codepoint)等。
原理介绍
一般来说,FFP硬件引擎都是由图1所表示部件组成:
其主要作用是在数据流通过网络设备时进行分类过滤,并对从指定接口输入或者输出的数据流进行检查,根据匹配条件(CondiTIons)允许其通过(Permit)、丢弃(Deny)或者采取其他动作策略,由此来达到限制网络中某些通信数据类型、限制网络的使用者或使用设备的目的。我们通过FFP的这种特性实现各种ACL技术,从而满足各种不同应用的需要。
下面,分别对各个部件的作用及工作原理进行介绍:
字段解析器
用于从各种来源的数据流中获取各种指定字段,即匹配域,例如:报文的源MAC地址、目的MAC地址、源IP等字段,在进行报文解析之前,需要预先设置字段,用以对报文进行识别、分类,之后开始对报文进行解析,将解析出来的匹配域字段封装成KEY送到查找匹配引擎中。
其中,各种来源的数据流包括报文流、各种硬件检测信息(如:报文的类型、输入的物理端口、是否在地址表中HIT等信息)。
查找匹配引擎
查找匹配引擎由一定数量的TCAM表项组成,我们将TCAM表项称为匹配规则,在进行匹配之前,需要预先申明匹配条件,设置好匹配规则中的内容,匹配规则针对数据流的源地址、目标地址、上层协议等字段。匹配规则一般有两部分组成:匹配内容和掩码,匹配过程就是将输入的KEY和掩码进行相与,再将相与的结果和匹配内容进行比较,如果比较结果相同,则匹配成功,例如:配置一个ACE,如下:
permit 192.168.1.0 0.0.0.255,
则这条表项的匹配内容为192.168.1.0,掩码为255.255.255.0。这时候,将输入报文的源IP(通过字段解析器解析)与掩码进行相与,如果结果等于192.168.1.0,则报文可以通过,即192.168.1.0/24网段的报文可以通过。
设置好匹配规则之后,将接收到的KEY与匹配规则一一进行比较,检查报文是否与某一条匹配规则相匹配,返回该匹配规则(HIT表项)所在的偏移。
动作策略引擎
动作策略引擎由一定数量的策略表项组成,策略表项和匹配规则一一对应,当查找匹配引擎中的某条匹配规则匹配上后,返回该匹配规则的偏移,根据这个偏移值,就可以找到匹配规则对应的策略表项,执行策略表项中预先设置好的动作。同样的,我们需要先申明满足某个规则匹配后的对应行为。
动作策略引擎支持的动作包括:转发、丢弃、重定向、镜像、送CPU、改变报文优先级等等,不同产品支持的动作存在较大差异。
度量、统计引擎
动作策略表项被HIT上后,会触发度量、统计引擎工作,动作策略表项中指定要使用的meter表项、counter表项的索引,meter表项、counter表项的各种属性也是在报文解析过滤前预先设置完成。
一般情况下,将查找匹配引擎、动作策略引擎、度量统计引擎合在一起称为一个slice,有些产品支持多个slice,有些产品则全局共享一个slice。
一般情况下,查找匹配引擎、动作策略引擎和度量统计引擎中的表项是一一对应,将一条匹配规则、策略表项及其对应的统计度量表项合在一起称为一条表项。
动作仲裁引擎
动作仲裁引擎收集所有匹配表项产生的动作策略信息,包括动作策略及meter结果,对于不冲突的动作全部被执行,对于冲突动作,则依照优先级进行仲裁,高优先级动作被执行。