如何利用 OpenFlow 打造一個「無廣播」的網路環境
有沒有試過在實驗室網路或是公司網路內打開 wireshark 來收收看封包?就算自己什麼網路行為都沒做,還是會發現收到一大堆不是自己該收到的封包。為什麼?因為網路上充斥太多的廣播訊息了!什麼是廣播封包?首先,我們先將目光集中在同一個 subnet 中(一般來說,目前的網路設備通常不會讓廣播封包傳到 subnet 的外面),廣播封包就是一種讓同一個 subnet 裏面所有的成員都要收到的封包。常見的封包有 IP 位置為 255.255.255.255 或是 192.168.1.255 這一類的封包以及 MAC 位置為 FF:FF:FF:FF:FF:FF 的訊框。
一般來說,廣播封包的存在有兩個意義:
現在來想想 OpenFlow 的架構,OpenFlow 是一個邏輯上集中式的網路架構,並且在這網路上有個神一般的角色:OpenFlow Controller。那麼,還需要廣播信息的存在嗎?我不知道要溝通的對象在哪裡?沒關係,Controller 應該知道;招告天下,不用,告訴 Controller 就好了。當然要改變 Host 的行為是不可能的事情,但我們可以透過 OpenFlow Entry 的設定來透過非廣播的方式來處理廣播封包。
在額外多討論一件事情。當網路上不存在廣播封包時,請問一個 Loop-Free 的網路是否還是必須的?換句話說,我們還需要 Spanning Tree Protocol 嗎?歡迎大家提出自己的意見(有人會留言嗎?)
相關的研究將會被發表在 Globecom 2014: Give Me a Broadcast-Free Network
一般來說,廣播封包的存在有兩個意義:
- 我不知道我想溝通的對象在哪裡,所以我只好大聲的呼喊希望那個對象會來回應我。
造成這種情況的主因是因為當初網路在設計時是採用分散式的架構。因為分散,所以沒有人知道整個網路的狀況。既然不知道,就只好所有人都去問一遍,這個行為就是廣播。常見的例子是 ARP 以及 DHCP DISCOVER 等。 - 所有人注意,下面是關於我的資訊 ...
這種情況通常是要招告天下關於我的資訊,所以本來就會廣播給所有人知道。常見的例子是 NetBios 以及 IPv6 Neighbor Discovery 等。
現在來想想 OpenFlow 的架構,OpenFlow 是一個邏輯上集中式的網路架構,並且在這網路上有個神一般的角色:OpenFlow Controller。那麼,還需要廣播信息的存在嗎?我不知道要溝通的對象在哪裡?沒關係,Controller 應該知道;招告天下,不用,告訴 Controller 就好了。當然要改變 Host 的行為是不可能的事情,但我們可以透過 OpenFlow Entry 的設定來透過非廣播的方式來處理廣播封包。
在額外多討論一件事情。當網路上不存在廣播封包時,請問一個 Loop-Free 的網路是否還是必須的?換句話說,我們還需要 Spanning Tree Protocol 嗎?歡迎大家提出自己的意見(有人會留言嗎?)
相關的研究將會被發表在 Globecom 2014: Give Me a Broadcast-Free Network
留言
張貼留言