學號:310505030   姓名:陳偉銍

Project on GitHub: https://github.com/LaZoark/NDN-esp8266

研究動機

NDN (Named Data Network) 是一種網絡架構,旨在通過以階層式(hierarchical)和自我認證(self-certifying)的方式來組織資訊,進而提高網路的可擴展性、安全性和效率。因此我認為NDN可以在幾個方面為物聯網(IoT)帶來好處。

  1. 可擴展性:NDN只轉發(forward)被請求的資料,而不是主動向所有設備廣播所有資料,從而得以更有效地利用網路資源。有助減輕當今網路上的巨大流量,使其能容納更多物聯網設備。
  2. 高效傳輸:NDN使用命名方案(naming scheme),讓生產者(producers)到消費者(consumers)的溝通即便在多變的網路拓撲結構下始終高效又安全。這對大多需頻繁移動的終端應用非常友善,例如車聯網或工業物聯網。
  3. 安全性:NDN所使用的安全模型是建立在基於資料本身而非裝置,讓攻擊者難以通過冒充身分來竊取敏感資訊。
  4. **靈活性:**NDN允許創建廣泛的物聯網應用,因為它相容於各種通訊協定,包括HTTP、MQTT和CoAP等。
  5. **低延時:**NDN使用in-network caching,大幅降低資料傳輸的延遲時間,因為資料能夠從附近的cache中獲得,而不必總是向源頭發出請求。

In-network caching is a technique that aims to optimize data transmission in computer networks. The idea is to store frequently accessed data closer to the user, reducing the need for long distance data transmission, which can be both slow and expensive. This technique can greatly reduce latency, as users can access the data they need much more quickly. Additionally, in-network caching can help conserve bandwidth, as it reduces the amount of data that needs to be transmitted over long distances. Overall, in-network caching can help improve the performance and efficiency of computer networks, making them more reliable and cost-effective.

In the context of Named Data Networking (NDN), in-network caching is a key feature that allows data to be stored and retrieved from multiple nodes in the network, rather than just from the original source. This further reduces the need for long distance data transmission and improves latency, as data can be retrieved from nearby caches rather than always having to request it from the source. NDN's use of in-network caching is just one of the many ways in which it aims to improve the efficiency and security of computer networks.

研究方法

本專案使用四個esp8266開發板(NodeMCUv2)建構命名資料網路(NDN),並基於Ping的機制來示範producer與consumer之間封包與資料的溝通。

為方便展示,本專案中Server同時扮演producer與NDN-Router的角色。

通過server端的按鈕可以決定是否回應client發送過來的請求,若按下按鈕則預期成功發送回client端,同時client端的LED也會亮起來約100ms,以示一次完整個溝通。

除了LAN底下的NDN,本專案的clients也有與UCLA的router保持連線,每4秒會向其發出一次請求,請求成功則會亮板上內側的藍色LED。

實驗環境

網路測試與調適工具:MacOS

單元測試:Python (尚未整理,僅自行測試,故未附上)

開發環境:C/C++ 使用PlatformIO進行開發

實驗結果