本申請涉及計算機信息處理領域,具體而言,涉及一種正則表達式規則中預篩字符串生成方法及裝置。
背景技術:
1、匯聚分流設備是一種特定場景下使用的網絡設備,其通常以旁路模式接入網絡中,從互聯網骨干網絡的交換機/路由器分光或鏡像輸出的互聯網報文送至該設備,由該設備根據指定的規則進行初步的分析處理并轉發至指定的后端業務系統進一步分析。匯聚分流設備通常部署在運營商骨干網及以上級別的網絡中,單設備接收的流量通常在100gbps以上,目前可達10tbps的級別,并且在可預見的將來會急速增長。因此匯聚分流設備的分流規則模塊需以極低的時延實現超大流量的報文匹配和處理(修改、轉發、復制、丟棄、統計等等)。而普通交換機主要靠交換芯片acl實現對報文匹配和處理,雖然處理性能也能達到線速級別,但acl規則數量受限于交換芯片的品牌和款型,目前高端交換芯片也僅達到10k條的級別;而大流量環境下的后端業務系統對匯聚分流設備的分流規則的數量要求是10萬條起步、高達上億條,交換芯片遠遠無法滿足。因此,匯聚分流設備往往采用在板卡上裝載可編程芯片(如fpga、np等)以實現分流規則模塊,可編程芯片能夠根據需求定制開發所支持的功能,可以將其擁有的資源用于實現大容量分流規則模塊,規則數量可以達到上億的級別,同時能夠保證線速轉發,但某些復雜功能(如報文復制、報文去重等)也會影響到可編程芯片的處理性能。
2、正則表達式是一種廣泛使用的計算機文本模式,用于描述具有特定特征或規律的文本。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串,通常被用來檢索、替換那些符合某個模式(規則)的文本。正則表達式的語法規則具有通用性,可由各種計算機編程語言引用。例如,正則表達式“[a-za-z0-9]+”表示匹配字符串中至少1個大寫英文字母、小寫英文字母或數字0~9,“^abc(def|ghi)jkl”表示匹配一個以abc開頭、接下來是def或ghi、隨后是jkl的字符串(jkl后有什么字符不關心)。
3、在匯聚分流設備的某些使用場景中,需要按正則表達式匹配網絡流量中的報文數據,提取包含符合特定格式的字符串的報文進行進一步分析處理。
4、在所述背景技術部分公開的上述信息僅用于加強對本申請的背景的理解,因此它可以包括不構成對本領域普通技術人員已知的現有技術的信息。
技術實現思路
1、有鑒于此,本申請提供一種正則表達式規則中預篩字符串生成方法及裝置,能夠解決現有技術中預篩字符串相同時性能下降的問題,顯著提高了正則表達式匹配的效率,適用于高流量環境下的匯聚分流設備。
2、本申請的其他特性和優點將通過下面的詳細描述變得顯然,或部分地通過本申請的實踐而習得。
3、根據本申請的一方面,提出一種正則表達式規則中預篩字符串生成方法,該方法包括:為正則表達式規則生成對應的非確定有限狀態自動機;基于非確定有限狀態自動機確定所述正則表達式規則的候選字符串;統計每個所述候選字符串在全局鏈表數組中出現的次數;基于每條正則表達式規則中最小出現次數的候選字符串確定所述正則表達式規則對應的預篩字符串。
4、在本申請的一種示例性實施例中,還包括:將所述預篩字符串其對應的正則表達式相關聯,并下發到匯聚分流設備;所述匯聚分流設備,基于所述預篩字符串對報文進行匹配分發。
5、在本申請的一種示例性實施例中,將所述預篩字符串其對應的正則表達式相關聯,包括:通過所述預篩字符、所述正則表達式的標識、關鍵路徑標識生成全包浮動特征碼規則;將所述全包浮動特征碼規則和所述正則表達式相關聯。
6、在本申請的一種示例性實施例中,為正則表達式規則生成對應的非確定有限狀態自動機,包括:獲取正則表達式規則;對所述正則表達式規則中的每條規則進行合法性檢驗;在合法性檢驗通過后,生成所述正則表達式規則的非確定有限狀態自動機。
7、在本申請的一種示例性實施例中,基于非確定有限狀態自動機確定所述正則表達式規則的候選字符串,包括:遍歷每個所述正則表達式規則的非確定有限狀態自動機;提取每個所述正則表達式規則對應的候選字符串;將所述候選字符串儲存在全局鏈表數組中。
8、在本申請的一種示例性實施例中,統計每個所述候選字符串在全局鏈表數組中出現的次數,包括:將每個候選字符串的出現次數的初始值設置為1;對所有的候選字符串進行兩兩比較;根據比較結果統計每個所述候選字符串在全局鏈表數組中出現的次數。
9、在本申請的一種示例性實施例中,對所有的候選字符串進行兩兩比較,包括:對候選字符串的長度進行比較;對長度不同的候選字符,確定短的候選字符是否被較長者包含,是則短的候選字符出現次數增加;對長度一致的候選字符串的字符串拼寫進行比較。
10、在本申請的一種示例性實施例中,對所有的候選字符串進行兩兩比較,包括:將超過預設長度的候選字符串進行截短;采用隨機或者遍歷的方式,對截短之后的候選字符串進行比較。
11、在本申請的一種示例性實施例中,基于每條正則表達式規則中最小出現次數的候選字符串確定所述正則表達式規則對應的預篩字符串,包括:統計每個正則表達式規則中每個關鍵路徑上所有候選字符串出現次數;將每個正則表達式規則中每個關鍵路徑上最小出現次數的字符串最為所述關鍵路徑上的預篩字符串。
12、根據本申請的一方面,提出一種正則表達式規則中預篩字符串生成裝置,該裝置包括:轉換模塊,用于為正則表達式規則生成對應的非確定有限狀態自動機;候選模塊,用于基于非確定有限狀態自動機確定所述正則表達式規則的候選字符串;統計模塊,用于統計每個所述候選字符串在全局鏈表數組中出現的次數;字符模塊,用于基于每條正則表達式規則中最小出現次數的候選字符串確定所述正則表達式規則對應的預篩字符串。
13、根據本申請的一方面,提出一種電子設備,該電子設備包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序;當一個或多個程序被一個或多個處理器執行,使得一個或多個處理器實現如上文的方法。
14、根據本申請的一方面,提出一種計算機可讀介質,其上存儲有計算機程序,該程序被處理器執行時實現如上文中的方法。
15、根據本申請的正則表達式規則中預篩字符串生成方法及裝置,通過為正則表達式規則生成對應的非確定有限狀態自動機;基于非確定有限狀態自動機確定所述正則表達式規則的候選字符串;統計每個所述候選字符串在全局鏈表數組中出現的次數;基于每條正則表達式規則中最小出現次數的候選字符串確定所述正則表達式規則對應的預篩字符串的方式,能夠解決現有技術中預篩字符串相同時性能下降的問題,顯著提高了正則表達式匹配的效率,適用于高流量環境下的匯聚分流設備。
16、應當理解的是,以上的一般描述和后文的細節描述僅是示例性的,并不能限制本申請。
1.一種正則表達式規則中預篩字符串生成方法,其特征在于,包括:
2.如權利要求1所述的方法,其特征在于,還包括:
3.如權利要求2所述的方法,其特征在于,將所述預篩字符串其對應的正則表達式相關聯,包括:
4.如權利要求1所述的方法,其特征在于,為正則表達式規則生成對應的非確定有限狀態自動機,包括:
5.如權利要求1所述的方法,其特征在于,基于非確定有限狀態自動機確定所述正則表達式規則的候選字符串,包括:
6.如權利要求1所述的方法,其特征在于,統計每個所述候選字符串在全局鏈表數組中出現的次數,包括:
7.如權利要求6所述的方法,其特征在于,對所有的候選字符串進行兩兩比較,包括:
8.如權利要求6所述的方法,其特征在于,對所有的候選字符串進行兩兩比較,包括:
9.如權利要求1所述的方法,其特征在于,基于每條正則表達式規則中最小出現次數的候選字符串確定所述正則表達式規則對應的預篩字符串,包括:
10.一種正則表達式規則中預篩字符串生成裝置,其特征在于,包括: