2345技术员联盟

传统交换机支持OpenFlow的变身大法

  • 来源:未知 原创
  • 时间:2018-06-30
  • 阅读:
  • 本文标签:

     OpenFlow 定義的交換機包括報文多元組的匹配,進行查找和轉發,交換機可以對各種類型報文任意bit進行匹配,即進行查找。任何交換的基本原理都是查找、轉發。而查找是核心。當前各大網絡設備廠商紛紛推出自己支持OpenFlow的交換機,而這些交換機是如何支持OpenFlow復雜的報文查找呢?硬件搭臺,軟件唱戲,任何軟件的功能基石都是硬件,軟件沒有硬件的支持都是空中樓閣。目前SDN交換機主要有兩類,采用傳統商用芯片和專門開發支持OpenFlow的ASIC,其中最方便快捷推出的就是采用傳統商用芯片的SDN交換機。傳統芯片裏面除了二層表,三層表,還有一個叫ACL表的查找模塊,該模塊采用TCAM結構,基本可以實現報文任意bit的匹配,也就可以用來進行OpenFlow對現有字段的匹配,甚至可以進行未來需要變化的新增種類報文的匹配。


    為什麽TCAM這麽牛,什麽原理呢?TCAM是Ternary Content Addressable Memory的縮寫,中文:三重內容可尋址內存。memory是根據地址來訪問存儲的內容,而TCAM恰好相反,它是根據內容去找到地址。memory中每個bit都只能表示兩個值:0或1,而TCAM每個bit可表示三個值:0,1和X,X表示don't care,這個X其實是靠一個對應的mask bit來控制的,實際上TCAM每個bit物理上是2個bit。


    根據內容去找到地址怎麽理解呢?平常的memory是根據地址來訪問存儲的內容,好比說酒店裏301房間住的客人叫張三,我們想知道301住著誰,就查下301房間的登記的人員,一看叫張三。而根據內容去找到地址剛好反過來,有人到酒店說,我們找一個叫張三的,酒店前臺就挨個查看酒店每個房間登記的客人名單,最後查出張三在301,這個過程可比查301住的誰要復雜,因為要一個房間一個房間的確認客人叫什麽。有人問,那這個有啥復雜的,挨個看不就行了。可是我們現在時間比較急,想盡快知道張三在哪,所以酒店就通過消防廣播對所有房間同時進行呼叫,說請張三聽見就答應一聲,酒店裏所有人都聽見了,除了張三其他人都沒有答復,只有張三回復了下前臺說,我住301,然後前臺的人就知道了張三住301,這就是TCAM的查找原理。回到memory存儲的數據上,假設存儲器的4個地址存著四個數據,如下


     CPU訪問時,輸出地址0,就得到55這個數據。輸出地址2就得到77這個數據,這就是正常的存儲器訪問。我們如果需要知道77存在哪裏地址,CPU只能是先發地址0,讀出55,發現不是我們需要的,再發地址1,讀出數據是66,發現還不是我們需要的,再發地址2,讀出數據是77,這就是我們需要的數據77,CPU一共進行了3次讀取操作。如果我們需要知道88存在哪個地址,CPU就必須讀4次才能知道地址是3。如果是10萬個地址呢?而TCAM的操作是這樣的,收到需要匹配的數據和所有地址存儲的數據同時(註意,是同時)進行比較,哪個地址存儲的數據匹配上了就輸出其地址,沒有匹配的就不輸出。輸出地址就是下一步動作的索引。


    查找某個數據在哪個地址,用TCAM的辦法一次就搞定了,而不論有多少個地址。那麽代價呢?CPU逐個查找的方式雖然慢,但是只需要重復讀出來、比較的動作,只需要能對一個數據進行對比即可。TCAM的方式是有100個數據,則需要支持100個數據同時比較,如果有10000個數據,則需要支持10000個數據同時比較,耗費的資源也就按比例線性增加。TCAM的三重內容指的是除了上面說到的數據匹配,還有和數據一樣多的一個mask控制數據,以便對不需要匹配的bit進行過濾,也就是匹配的數據無論多少,再翻一倍……回到我們采用TCAM方式來實現OpenFlow,假設按照OpenFlow要求,我們需要對數據包的前100bit進行任意匹配,那麽我們就需要每個地址存儲100bit的數據以便進行匹配,而我們需要進行10000種不同的包類型進行匹配,那麽就需要10000個地址來存儲,每個地址100bit,也就是我們需要能夠同時對100*10000=1000000bit進行比較,找出對應的地址,加上三重內容,同時比較的數據就變成了2000000bit。這就變成了一個非常龐大的比較芯片。


    當我們查出某個數據存在的地址後,這個地址就可以作為一個索引,也就是另外一個標準memory的地址,該地址裏面就存在這個包要做什麽操作,例如轉發到某個端口,或者修改某個特征,然後再轉發。也就是OpenFlow規定的action,這個其實非常簡單,復雜的就是前面說的所有地址空間的數據同時進行匹配。完成一次匹配需要大量的比較資源,傳統芯片這部分匹配模塊就不能做的太大容量,一般也就支持4K流表,也就是對4K種不同類型的輸入數據進行匹配。對於一個支持成千上萬用戶的傳統交換機來說,變成支持OpenFlow的SDN交換機後,居然只能支持4K流表,簡直就是淪為玩具一般,似乎就不太實用了。專門進行OpenFlow流表的新興ASIC呢?大部分似乎也是基於TCAM這種方式,同樣由於上面說的TCAM的原因,依然流表數量有限。流表數量不足,是否說傳統交換機就不能支持OpenFlow了?然而並不是的,例如泰信通SDN控制器的一體化轉發設計,不再被芯片的TCAM限制,在使用傳統芯片架構的交換機的情況下突破4K的TCAM限制,實現控制轉發分離的一體化轉發模式,真正兼容傳統,煥發SDN的光彩。如需了解更詳細的方案介紹,歡迎您與泰信通聯系!


本文来自电脑技术网www.it892.com),转载本文请注明来源.
本文链接:http://www.it892.com/content/Network/switch/2018/0630/104959.html

推荐阅读
无觅相关文章插件,快速提升流量