6g下載網
當前位置: 主頁 > 軟件教程 > 云計算 >

Datapath流表查詢源碼分析

時間: 2017-01-17 14:43 來源: 本站整理

分享到:

今天小編整理一篇Datapath流表查詢源碼分析的文章和大家分享,希望能給大家提供幫助。

Datapath流表查詢源碼分析

數據結構關系圖

Datapath流表查詢源碼分析

函數調用關系圖

Datapath流表查詢源碼分析

① ovs_vport_receive() ,vport端口接收數據包。

②ovs_flow_key_extract(),提取數據包中的信息,封裝key值。

③ ovs_dp_process_packet(),處理數據包。

④ ovs_flow_tbl_lookup_stats()查詢并匹配流表。

⑤ ovs_execute_actions()執行處理動作。

Ovs中的流規則匹配是采用的TSS包分類算法,并在此算法的基礎上進行了優化,匹配的步驟如下:

①提取數據包中的關鍵字段封裝在struct sw_flow_key key結構中,對此key值計算hash值skb_hash;

②skb_hash傳入ovs_flow_tbl_lookup_stats函數,在此函數內部將skb_hash和key->recirc_id作為jhash_1word的參數再次進行哈希,得到hash_key,利用此hash_key找到哈希桶,匹配哈希格子后得到mask_index。

③將此mask_index傳入flow_lookup函數得到mask掩碼值。

④將此mask掩碼作為參數傳入masked_flow_lookup函數。將masked_key和key值進行與運算得到masked_key。

⑤將此masked_key作為參數調用flow_hash再次計算hash得到哈希值。

⑥將第五步中得到的hash值作為參數傳入find_bucket得到hash沖突鏈的頭指針。

⑦遍歷沖突鏈比較鏈表節點中的mask掩碼值、hash值、masked_key,如果都匹配則匹配此節點,并得到流規則獲取流規則中的action信息,調用ovs_execute_actions執行處理動作。

Datapath流表查詢源碼分析的文章和大家分享結束,感謝閱讀!

(責任編輯:大衛)

分享到:

------分隔線----------------------------
? 35选7福利彩票