帶你深入學(xué)習(xí)交換機(jī)FFP技術(shù)
交換機(jī)FFP(Fast Filter Processor)技術(shù)提供了先進(jìn)的多層交換、報(bào)文分類及線速處理功能,能夠基于協(xié)議或字節(jié)對報(bào)文進(jìn)行線速解析、分類,報(bào)文解析深度達(dá)80或128字節(jié),廣泛用于各類基于流的報(bào)文分類、過濾及鏡像等應(yīng)用,如:QOS(Quality of Service)、ACL(AccessControl Lists)、DSCP(DifferenTIatedServices Codepoint)等。
原理介紹
一般來說,F(xiàn)FP硬件引擎都是由圖1所表示部件組成:
其主要作用是在數(shù)據(jù)流通過網(wǎng)絡(luò)設(shè)備時(shí)進(jìn)行分類過濾,并對從指定接口輸入或者輸出的數(shù)據(jù)流進(jìn)行檢查,根據(jù)匹配條件(CondiTIons)允許其通過(Permit)、丟棄(Deny)或者采取其他動作策略,由此來達(dá)到限制網(wǎng)絡(luò)中某些通信數(shù)據(jù)類型、限制網(wǎng)絡(luò)的使用者或使用設(shè)備的目的。我們通過FFP的這種特性實(shí)現(xiàn)各種ACL技術(shù),從而滿足各種不同應(yīng)用的需要。
下面,分別對各個(gè)部件的作用及工作原理進(jìn)行介紹:
字段解析器
用于從各種來源的數(shù)據(jù)流中獲取各種指定字段,即匹配域,例如:報(bào)文的源MAC地址、目的MAC地址、源IP等字段,在進(jìn)行報(bào)文解析之前,需要預(yù)先設(shè)置字段,用以對報(bào)文進(jìn)行識別、分類,之后開始對報(bào)文進(jìn)行解析,將解析出來的匹配域字段封裝成KEY送到查找匹配引擎中。
其中,各種來源的數(shù)據(jù)流包括報(bào)文流、各種硬件檢測信息(如:報(bào)文的類型、輸入的物理端口、是否在地址表中HIT等信息)。
查找匹配引擎
查找匹配引擎由一定數(shù)量的TCAM表項(xiàng)組成,我們將TCAM表項(xiàng)稱為匹配規(guī)則,在進(jìn)行匹配之前,需要預(yù)先申明匹配條件,設(shè)置好匹配規(guī)則中的內(nèi)容,匹配規(guī)則針對數(shù)據(jù)流的源地址、目標(biāo)地址、上層協(xié)議等字段。匹配規(guī)則一般有兩部分組成:匹配內(nèi)容和掩碼,匹配過程就是將輸入的KEY和掩碼進(jìn)行相與,再將相與的結(jié)果和匹配內(nèi)容進(jìn)行比較,如果比較結(jié)果相同,則匹配成功,例如:配置一個(gè)ACE,如下:
permit 192.168.1.0 0.0.0.255,
則這條表項(xiàng)的匹配內(nèi)容為192.168.1.0,掩碼為255.255.255.0。這時(shí)候,將輸入報(bào)文的源IP(通過字段解析器解析)與掩碼進(jìn)行相與,如果結(jié)果等于192.168.1.0,則報(bào)文可以通過,即192.168.1.0/24網(wǎng)段的報(bào)文可以通過。
設(shè)置好匹配規(guī)則之后,將接收到的KEY與匹配規(guī)則一一進(jìn)行比較,檢查報(bào)文是否與某一條匹配規(guī)則相匹配,返回該匹配規(guī)則(HIT表項(xiàng))所在的偏移。
動作策略引擎
動作策略引擎由一定數(shù)量的策略表項(xiàng)組成,策略表項(xiàng)和匹配規(guī)則一一對應(yīng),當(dāng)查找匹配引擎中的某條匹配規(guī)則匹配上后,返回該匹配規(guī)則的偏移,根據(jù)這個(gè)偏移值,就可以找到匹配規(guī)則對應(yīng)的策略表項(xiàng),執(zhí)行策略表項(xiàng)中預(yù)先設(shè)置好的動作。同樣的,我們需要先申明滿足某個(gè)規(guī)則匹配后的對應(yīng)行為。
動作策略引擎支持的動作包括:轉(zhuǎn)發(fā)、丟棄、重定向、鏡像、送CPU、改變報(bào)文優(yōu)先級等等,不同產(chǎn)品支持的動作存在較大差異。
度量、統(tǒng)計(jì)引擎
動作策略表項(xiàng)被HIT上后,會觸發(fā)度量、統(tǒng)計(jì)引擎工作,動作策略表項(xiàng)中指定要使用的meter表項(xiàng)、counter表項(xiàng)的索引,meter表項(xiàng)、counter表項(xiàng)的各種屬性也是在報(bào)文解析過濾前預(yù)先設(shè)置完成。
一般情況下,將查找匹配引擎、動作策略引擎、度量統(tǒng)計(jì)引擎合在一起稱為一個(gè)slice,有些產(chǎn)品支持多個(gè)slice,有些產(chǎn)品則全局共享一個(gè)slice。
一般情況下,查找匹配引擎、動作策略引擎和度量統(tǒng)計(jì)引擎中的表項(xiàng)是一一對應(yīng),將一條匹配規(guī)則、策略表項(xiàng)及其對應(yīng)的統(tǒng)計(jì)度量表項(xiàng)合在一起稱為一條表項(xiàng)。
動作仲裁引擎
動作仲裁引擎收集所有匹配表項(xiàng)產(chǎn)生的動作策略信息,包括動作策略及meter結(jié)果,對于不沖突的動作全部被執(zhí)行,對于沖突動作,則依照優(yōu)先級進(jìn)行仲裁,高優(yōu)先級動作被執(zhí)行。