NDN網絡學習筆記(一)——NDN基礎

NDN(Named Data Networking)是用來取代當前TCP/IP架構的新的互聯網架構,在2010年被提出。

NDN 的網絡架構如下右圖,它繼承了 IP 架構的沙漏型瘦腰結構:
NDN繼承了IP瘦腰模型

TCP/IP架構存在的問題

TCP/IP互聯網只提供一個通訊管道,只負責維護管道,不關心傳輸的內容。內容的管理和獲取是有應用和服務管理的。

存在哪些問題呢:

  1. 效率低。管道是單源單路徑的,容易造成擁塞,比如同一個視頻,要從單個服務器發送無數次。
  2. 可擴展性差。不斷打補丁,網絡設計管理越來越複雜。IP地址也不夠用了。
  3. 安全性弱。重視管道保護,但不能保證數據本身的可靠性。比如建立一個信任連接後,對方發的惡意代碼也會照收無誤。

NDN架構基本思想

當前網絡的功能(建立管道)和目的(獲取數據)不匹配。NDN網絡企圖用數據內容取代管道的核心地位。
數據爲核心
核心思想是:

  1. 用戶程序只提供數據的名字,無需目的地址;
  2. 數據可以來自任何節點;(不用都從服務器拿數據,可以從就近的緩存獲取)
  3. 每個數據包必須有數字簽名;(保證安全可靠)

優勢有:

  1. 高效。(多源多路徑,組播發送,有緩存)
  2. 適合現代場景如移動互聯網、物聯網、災害救援、時延容忍網絡(DTN)等。(無需建立管道連接)
  3. 安全。(數據有簽名,需要時可加密;應用程序開發時就考慮數據安全,而非事後彌補)

NDN數據包

數據包格式

IP數據包:核心字段是地址。
IP數據包
NDN數據包:分爲興趣包和數據包兩種類型,不包含地址,核心是名字。
NDN數據包

數據包命名

名字由程序應用生產,對網絡層透明。它包括:

  1. 數據包大小。(廢話)
  2. 多層級。(就像文件夾分層一樣,方便匹配前綴)
  3. 簽名。(和名字、祕鑰緊密關聯,保證安全可靠)

下面是一個NDN數據包命名的例子:
NDN數據包名稱舉例:一個視頻數據名

NDN路由機制

命名驅動

  1. 服務端註冊名字。數據發佈者需要註冊一個名字前綴(name prefix),比如YouTube註冊了一個YouTube/……

  2. 路由器根據名字建表。路由器能計算出到達每個名字前綴的路徑,建立起路由表。

  3. 用戶端拿名字請求數據。數據消費者發送興趣包來請求數據,路由器根據名字和路由表匹配轉發。

路由緩存

每個節點都可以緩存數據,可以被反覆請求使用。

用戶的請求的數據包是沒有收貨地址的,那快遞回來後給誰呢?是這麼解決的:每個路由器都維護一個興趣包緩存表(PIT, Pending Interest Table),就像是淘寶訂單,誰請求過什麼數據都記錄在案!路由器能根據興趣包緩存表,將數據反向傳輸給請求者。

路由轉發

先看反面典型,IP數據包路由轉發。缺點有:

  1. 單向的。(請求可能有去無回)
  2. 路由器是無狀態的。(太笨)
  3. 不會緩存任何數據。(太慢)
    IP路由機制

再看NDN興趣包和數據包的轉發。優勢是:

  1. 雙向的。(有請求才有數據,二者一一對應)
  2. 有狀態的。(路由器記錄多種狀態,信息量大)
  3. 有緩存。

下面是興趣包和數據包各自的路由機制。

興趣包結構如下,查詢步驟是:
CS:是否已經有緩存了;
PIT:是否已經有其他人請求過了,那就不用再重複發請求了,只需記錄一下,在包回來時給所有請求都分一份就行;
FIB:查詢哪條路徑能滿足請求,把興趣包轉發下去。
興趣包路由
數據包結構如下,查詢步驟是:
PIT:若有該數據的請求,發給所有請求列表;若無則直接丟棄。
CS:留一份緩存後,繼續轉發。
數據包路由

雜想

NDN可能取代IP嗎?

新型網絡體系提出多年,爲啥現在仍是老一套呢?不禁想到了鍵盤佈局的例子,當初鍵盤佈局被特意打亂來減低機器打字的效率,防止太快機器出故障,結果這種“亂序”佈局竟然流傳至今,原因就是人們習慣了。

那麼會不會因爲習慣的力量,而同樣使人們放棄更先進的NDN,繼續使用IP呢?

這倒不會。因爲網絡結構作爲底層實現,是不影響人們正常使用的。不論用NDN還是IP,用戶使用習慣絲毫不受影響。NDN由於更靈活、高效、安全,能帶來更好的用戶體驗,還是很有希望取得革命性發展的,就像汽車取代馬車一樣。

現在的IP網絡實在太老舊,在飛速發展的時代面前顯得越來越力不從心。相信不久的將來,新一代網絡體系必將嶄露頭角。

參考資料:

張北川:命名數據網絡(NDN)

視頻簡單介紹-命名數據網絡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章