軟體定義網路與 NFV

軟體定義網路(software-defined networking, SDN)

/ SDN spelled out: S-D-N /

想像一間老派的公司,每位文書都各自依照自己抽屜裡那本厚厚的規則手冊來決定怎麼轉送信件。文書之間互相通氣以維持大致一致,但沒有人掌握全貌;要更改全公司的政策,得走到每張桌子前,一本一本手改規則手冊。傳統由交換器與路由器組成的網路就是這樣運作的:每台設備跑自己的路由軟體、做自己的決定。軟體定義網路(SDN)的想法,就是把「做決定」這件事從設備裡抽出來,放進一個能看見整個網路、並指揮每台設備該怎麼做的可程式化大腦。

具體來說,SDN 把過去焊死在每台設備內的兩個部分拆開。控制平面(control plane)是決定流量該如何處理的邏輯(某條流走哪條路、要擋什麼、如何分攤負載);資料平面(data plane)則是只負責照指示轉送封包的快速機構。SDN 把控制平面從每台交換器中抽出,集中到一個控制器(controller)——一套跑在普通伺服器上的軟體——它擁有全網視角,並透過一個標準介面(南向介面,通常是 OpenFlow)把轉送規則下推給如今變得單純的交換器。交換器變成快速、單純的比對動作引擎;智慧住在軟體裡。

為什麼重要:一旦網路由一個具備全域視角的中央程式驅動,你就能靠寫軟體來改變行為,而不必登入數百台設備;你也能在控制器之上跑最佳化、安全、流量工程等應用。誠實的取捨是:集中控制製造出潛在的瓶頸與單點故障——控制器若無法連到或過載,你就有麻煩——所以真實系統會用複製、分散的控制器,做到「邏輯上集中、實體上分散」。SDN 是一種組織網路的方式,不是某個單一產品;OpenFlow 只是它的一個熱門介面,不等於全部。

某網路維運者希望在上班時間讓所有影片流量改走較便宜的備援連結。在傳統網路中,他得一台一台重新設定數十台路由器。有了 SDN,他在控制應用裡寫一小段政策;控制器算出新的轉送規則,一次推送給每台交換器。到了傍晚六點規則到期,流量便切回——全程由軟體驅動,不必逐台登入。

改變網路行為,靠編輯一支程式,而不是去動每一台設備。

SDN 並不表示真的有一台電腦在跑所有東西。它的控制是邏輯上集中(一致的全域視角),但通常實體上分散在多個複製的控制器上,正是為了讓這個大腦不成為單點故障。

又称
SDN軟體定義網路SDN 架構