http://baoz.net/l7filter/
HiPPIE 最后一次更新是2008年
IPP2P
具體的對比轉載開始
轉自: http://blog.chinaunix.net/u/311/showart_463796.html
目前 Linux 有兩種內容匹配模塊,ipp2p 和 l7-filter,兩者功能類似,具體工作原理卻大不相同
ipp2p:
ipp2p 的匹配方式是 per packet match 的原則,會匹配 iptables 規則引導過來的每一個數据包。
ipp2p 的匹配精度很高,每一種應用的匹配都是用具體代碼來實現的。l7-filter:
l7-filter 的匹配原則是只匹配每一個 connection 的前 10 個包或者前 2048 個字節(可以通過 procfs 修改)。
匹配精度比較低,匹配方式使用的是正則表達式的形式,基于內核級的正則匹配庫是 l7-filter 的創始人 Matthew Strait 通過一個開源的 regexec 庫修改而來的,但比較遺憾的是,有些具體特征用正則表達式是無法寫出來的
比如 QQLive 的規則:
0xfe 0×02 0×05 0×05 0×02
0xfe 0×06 0×00 0×00 0×06
0xfe 0×00 0×80 0×80 0×00
可以看出這樣一個規律:
data[0] = 0xfe
data[1] = data[4]
data[2] = data[3]
由于這種規律無法用正則表達出來(其中還包括 l7-filter 不能識別的 0×00),因此 l7-filter 做不到對這種東西的匹配,但 l7-filter 卻有一個優勢,就是只匹配每個 connection 的前一段數据,匹配到了就不再匹配,這樣就不用對每個數据包都過一遍了。下面對 ipp2p 和 l7-filter 做一下匹配精度、匹配速度、協議添加等方面的具體對比
名稱 ipp2p l7-filter
匹配精度 非常高 很低
匹配速度 處理每個包的速度很快 處理每個包都非常慢
即使這個連接匹配到了 一旦匹配到就不再匹配
下一個也要繼續匹配 這個連接的其他包添加協議方便度 每次修改都需要重編模塊 只需修改正則表達式即可
流量控制 不適用于流量控制 由于結合了 conntrack 的
特性所以非常適于流控當然了,由于源代碼都給我們了,所以完全可以根据 ipp2p 和 l7-filter 的特性,結合兩者的優點開發出一個新的模塊匹配精度高、效率高、添加協議方便、適合做流控的 platinum 模塊來 ^_^
留言