摘要:
OpenFlow是一種快速發(fā)展的新型交換機模型绎签,該模型支持對網(wǎng)絡(luò)過程的外部策略的控制缆毁。
在Openflow平臺中岛蚤,多表和多項目的組匹配是挑戰(zhàn)邑狸。
于是提出了Openflow交換機的三層實現(xiàn)模型, 研究了基于TCAM的Openflow多表切換技術(shù)涤妒,包括Openflow中的多表過程模型和TCAM性能模型单雾,最后在上述模型下分析了基于TCAM的Openflow轉(zhuǎn)發(fā)性能。
背景/問題:
Openflow被提出后得到了快速的發(fā)展,IBM和HP都生產(chǎn)了Openflow交換機硅堆。
但是屿储,這些交換機是基于傳統(tǒng)的交換機芯片來實現(xiàn)的。盡管它支持Openflow協(xié)議渐逃,但很難在數(shù)據(jù)轉(zhuǎn)發(fā)平面中支持15個字段匹配够掠。
在OpenFlow交換機的實現(xiàn)中,如何始終支持基于多項目組的流匹配一直是一個挑戰(zhàn)茄菊。
解決辦法:
提出了一個三層的Openflow交換機實現(xiàn)模型疯潭,基于TCAM的多表轉(zhuǎn)發(fā),并且提出了Openflow多表描述和TCAM查找功能的性能分析面殖。
以Netlogic的Ayama20000 TCAM為例來分析Openflow交換機的性能竖哩。
實現(xiàn)細(xì)節(jié):
在1.1版規(guī)范發(fā)布之后,Openflow與以前相比增加了多表脊僚、端口組相叁、可伸縮匹配和其他新功能,但是可以實現(xiàn)新規(guī)范的交換機模型數(shù)量較少辽幌。
結(jié)構(gòu):
根據(jù)新規(guī)范的特點增淹,我們設(shè)計了基于硬件層,核心層乌企,用戶層的三層結(jié)構(gòu)來實現(xiàn)虑润。
- 硬件層使用三進(jìn)制內(nèi)容可尋址存儲器和相關(guān)的SRAM來實現(xiàn)快速查找ACL和路由表,通過FPGA芯片在硬件收發(fā)中實現(xiàn)加速邏輯功能逛犹,同時在硬件接收器模塊中進(jìn)行數(shù)據(jù)包分析端辱,根據(jù)OpenFlow的規(guī)則查找硬件或軟件梁剔。
-
核心層設(shè)置了五個模塊虽画,包括規(guī)則管理過程,OpenFlow規(guī)則表荣病,OpenFlow規(guī)則映射表码撰,轉(zhuǎn)發(fā)線程管理,統(tǒng)計計數(shù)器个盆。
-- 規(guī)則管理過程主要通過API和用戶層完成控制器交互脖岛,OpenFlow控制器需要將操作表對流到硬件層,并且該層OpenFlow規(guī)則表update命令發(fā)送更改以實現(xiàn)對表的操作颊亮。
-- OpenFlow規(guī)則表使用Hash算法實現(xiàn)了快速的十五組查詢表而沒有通配符柴梆。
-- OpenFlow規(guī)則映射表用于備份數(shù)據(jù)流表以及實現(xiàn)某些擴(kuò)展,如超時更新等终惑。
-- 管理線程主要用于轉(zhuǎn)發(fā)三層通道中傳遞的數(shù)據(jù)流绍在。
-- 統(tǒng)計計數(shù)器是針對每個流,流表和端口等實現(xiàn)OpenFlow規(guī)范,在此層設(shè)置計數(shù)器是由于考慮到大量的存儲空間和資源消耗等偿渡。 -
用戶層是OpenFlow控制器臼寄,用戶可以通過控制器更改交換機配置。
三層模型不僅可以實現(xiàn)十五個字段來完成當(dāng)前的匹配溜宽,還可以支持當(dāng)前使用的網(wǎng)絡(luò)數(shù)據(jù)包的正常規(guī)則吉拳。通過核心層配置通配符OpenFlow字段查找表、其他功能的MetaData定義适揉,可以實現(xiàn)非常好的交互留攒。我們還可以將Aging與核心層映射表的規(guī)則相結(jié)合,在TCAM上配置硬件層嫉嘀,以達(dá)到更好的OpenFlow硬超時和空閑超時標(biāo)準(zhǔn)稼跳。
( - 空閑超時(idle timeout),流表項的idle_timeout字段非0吃沪。在空閑超時這段時間內(nèi)票彪,如果沒有任何數(shù)據(jù)報匹配到該流表項,則交換機會主動將該流表項從流表中移除熟妓。即流表項從交換機設(shè)備移除的相對時間。
-
硬超時(hard timeout),流表項的hard_timeout字段非0呻顽。當(dāng)該流表項的存在時間超過了預(yù)設(shè)置的硬超時,流表項就會被交換機從流表中移除英染。即流表項從交換機移除的絕對時間狭握。
)
過程:
如果從硬件接收到數(shù)據(jù)包哎垦,則進(jìn)行查找今妄,然后分析表以實現(xiàn)匹配(查找表以實現(xiàn)通配符,并進(jìn)行多表查找),如果規(guī)則與轉(zhuǎn)發(fā)問題的硬件匹配,則發(fā)送到轉(zhuǎn)發(fā)管理以更新計數(shù)器。
通過核心層線程對OpenFlow規(guī)則表的層管理轉(zhuǎn)發(fā)表2中的規(guī)則進(jìn)行匹配(沒有通配符哈希表來查找表)格侯,如果規(guī)則匹配,則從硬件轉(zhuǎn)發(fā)過程中發(fā)出,并將其發(fā)送到轉(zhuǎn)發(fā)管理以更新計數(shù)器愤兵。
如果全部失敗屹堰,則OpenFlow規(guī)則表通過轉(zhuǎn)發(fā)管理線程珊肃,利用用戶層的Openflow控制器實現(xiàn)請求管理评矩。
控制器通過API將規(guī)則拖曳表寫入OF內(nèi)核的規(guī)則管理中,然后寫入TCAM以實現(xiàn)TCAM拖曳斥杜,并直接寫入OF映射表(表2)通過規(guī)則管理完成對控制器的請求和完成虱颗。
在用戶層上,設(shè)置Openflow的規(guī)則數(shù)據(jù)庫以備份和修改配置蔗喂。
補充:
下表定義了與TCAM字符描述關(guān)聯(lián)的參數(shù):
下表描述了OpenFlow多表的用法:假設(shè)OpenFlow交換機具有<RN1忘渔,RN2?RNn>表,每個表具有屬性<RLi缰儿,RNi畦粮,RMi>的三個子集,RLi表示長度規(guī)則乖阵,RNi表示長度規(guī)則 數(shù)字宣赔,RMi表示規(guī)則是否包含掩碼匹配,1表示包括瞪浸,反之為0
時間關(guān)系:
TCAM性能分析:
硬件的查找過程儒将,通過推導(dǎo)TCAM的性能可以獲得不同表的轉(zhuǎn)發(fā)率和資源占用總數(shù)。 具有映射到TCAM的TCAM对蒲,每個的長度為RL1钩蚊,RL2?RLn贡翘, 時鐘周期為T,則可以通過公式得出每秒的速率:
我們可以將表格的長度RLi乘以其編號RNn以獲得內(nèi)部TCAM占用資源率的總數(shù):
每個TCAM都有不同類型的總線帶寬砰逻,如果我們要充分利用TCAM鸣驱,則其總線不會空閑,因此我們需要計算TCAM的延遲時間蝠咆,然后根據(jù)延遲設(shè)計合理的PE丐巫。
為了解決這個問題,我們設(shè)計了一個通用的TCAM模型勺美。 首先递胧,獲得一般的系統(tǒng)延遲。 其次赡茸,我們可以通過TCAM獲得該消息的整個處理時間:
其次缎脾,我們可以在所需的整個TCAM處理時間中獲取消息:
設(shè)置一個周期:a,然后得到以下公式: