硬科技:在了解Smart NIC和DPU前科科需要知道的軟體定義網路(下)

2020.11.24 09:10AM
照片中提到了Control Function (“App") x m、Northbound I/F、SDN,包含了圖、產品設計、產品、牌、儀表

畢竟本專欄叫做「硬科技」,如果不談點硬體相關的議題,就實在太過對不起各位科科的求知慾了。「OpenFlow南向協定交換器」和「P4語言Smart NIC」就是本期的主題。

前情提要:在了解Smart NIC和DPU前科科需要知道的軟體定義網路(上)

科科們已經了解到OpenFlow是SDN控制器與交換器之間的互動協定,具體定義了交換器在資料轉發面(Data Plane)的功能,並規範封包的種類和格式,目前最新的實用化版本是1.5.1。

支援OpenFlow的交換晶片,在邏輯上主要由2部份組成:端口(Port)和流表(Flow Table),所謂的Flow意指「在同一段時間內,經過同一段網路,並具有相同屬性(如相同的TCP port)的訊息」,每個流表項目(Flow Entry)對應網路中傳輸的一條流,也是OpenFlow中最核心的元素,可謂以簡馭繁。

照片中提到了Controller、Controller、COpenFlow Protocol,包含了開流開關、開放流、網絡交換機、軟件定義的網絡、傳輸層安全

乍看之下,OpenFlow交換晶片看似無所不能,反正所有的網路傳輸都變成一條一條的流,轉發行為如此的簡單,沒有任何狀態機,一切都是Match(匹配)→Action(行動),想怎麼動就怎麼動,通通和網路協定沒有相依性,足以應對未來的技術發展。但如此巨大的彈性,卻是需要付出高昂的代價。依據OpenFlow標準,一張流表可以使用任意的字段組合去作查表。這代表了這張流表需要使用「內容查找記憶體(CAM,Content-Addressable Memory)」實作,事情就大條了。

照片中提到了Packet、Ingress processing、Packet +,包含了開流表、開放流、網絡交換機、表、數據

不同於我們認知的隨機存取記憶體(RAM,Randon Access Memory),CAM會搜索全部的記憶體,以判斷某筆資料是否儲存在其中。如果找到了這個資料位元組,CAM將回覆由1個或者多個位址組成的列表,這些地址中都存儲著這筆資料。也只有3個輸入的TCAM(Ternary CAM)才能隨意的掩蓋掉任何想掩蓋的查找字段,電路複雜度和發熱量自然扶搖直上,相當於傳統DRAM的5倍到6倍,讓所有有志於OpenFlow交換晶片的廠商通通都抱著頭燒。

照片中提到了IP Prefix (Route)、САМ Кey/、CAM Mask,包含了數、產品設計、產品、儀表、線

更何況,OpenFlow還有「多級流表」的概念,每個層級的流表都有自己的編輯動作並彼此互動,晶片廠商真的硬幹下去,徹頭徹尾的完整支援OpenFlow,打造出「從頭到尾和任何網路協定通通無關的交換晶片」,固然得到了最高的靈活可編程能力,卻犧牲掉了簡單性,創造貴到不行的巨無霸。我們也都知道,在處理器的世界,一直有條不變的真理:超大 + 超貴 + 超熱 = 超生,網路晶片亦同。

照片中提到了OpenFlow controller、In-band、Out-of-band,包含了圖、開放流、軟件定義的網絡、Arista網絡、網絡交換機

俗語說的好,博觀而約取,厚積而薄發,網路交換晶片廠商就乾脆退而求其次,基於實際的應用需求和現有的晶片架構,定義不同的應用框架與轉發模型。因為絕大多數的應用場景,像上期提到Google的B4資料中心廣域網路,追求的是SDN架構的管理便利性,並不需要終極的可編程靈活性,所以各家廠商在此都各顯神通,透過SRAM或更便宜的DRAM,或著NPU或FPGA之類的手段,實作高容量但功能受限的OpenFlow流表,並在兼顧傳統功能的基礎上,適度的補強功能,以適應SDN的要求。

照片中提到了>=OpenFlow v1.1、OpenFlow v1.0、Decrement TTL,包含了流量表sdn、軟件定義的網絡、開放流、網絡數據包、表

像Google自行研發的OpenFlow交換機,就不是採用標準的OpenFlow流表,但界面上仍遵循OpenFlow的規範,這有力的證明1件事:要引進SDN和OpenFlow,並不需要專用的晶片。SDN的重點是「應用」,不是完整支援OpenFlow。這背後的意義,值得各位科科深思,無論從開發產品到人生面對的一切問題,都是一樣的道理。

接著就是這票Smart NIC和DPU的重頭戲:P4(Programming Protocol-independent Packet Processors)封包處理器描述語言。

問題來了,我們不是已經有OpenFlow了嗎?但OpenFlow僅限於「控制與轉發分離」,並未定義對資料和封包的處理方式。與OpenFlow互補的P4語言,可用來程式化路由器、交換器和網路卡的行為,以軟體的方式,引進新的功能與協定,而不是需要等待嶄新的硬體。P4語言的執行引擎,也成為高度可編程化的Smart NIC,比一般ASIC的NIC更加「聰明」的地方。

照片中提到了P4、P4 & OpenFlow、Apps,跟機動車輛有關,包含了p4編程、P4、軟件定義的網絡、開放流、程式語言

行為至此,想必各位科科的臉上彷彿掛著劫後餘生倖存者的表情,並附贈著跳動的眼皮和顫抖的嘴角,但從技術到商業,其實SDN是個大到足以寫書的主題,各位看到的只是冰山的一角。沒關係,大丈夫,等到日後硬科技開始介紹各大廠商的Smart NIC和NVIDIA的DPU後,你們就會知道這東西的威力在哪裡了。也許吧?科科。

1 則回應

  • 實際上大型的資料中心已經都把SDN作到smart NIC上的vSwitch,這也是思科被白牌switch打到不要不要的主因
    2020-11-24