A. 軟體定義網路的思想
因此我們需要做以下幾件事:
1. 在底層和開放編程環境之間要有一個清晰的分割;
2. 設計一個簡單的硬體底層,能夠包括和簡化當前的底層;
3. 極少的使用事先形成的有關底層如何被編程的想法;
4. 強隔離。
在設計硬體底層方面,我們要用最少的基於流的數據通路來緩存決策,也即實現一個基於流的底層。我們需要對流進行靈活的定義,如單播、組播、導航點、負載均衡,並且支持不同類型的流的聚類;我們需要控制流,把流作為編程的實體:能對它路由、私有化、移動……我們還要吸取包交換的益處,因為它切實可行,能全局部署,而且很有效率——當然是在它很簡單的時候。
綜合上述考慮,我們定義了一個名為「流空間」的底層,它有以下屬性:
1. 後向兼容。當前的分層結構是它的一個特例,而且端點不需要修改;
2. 容易在硬體上部署,比如在每個交換機上部署TCAM流表;
3. 流之間能清晰分離,具有簡單的幾何結構,能證明哪個流能或者不能通訊。
作為底層,它有以下屬性:
第一,基於流;第二,對每個流只有少量的動作,如轉發給埠;轉發給控制器; 重寫頭,在流空間之間路由;根據最小/最大速率分隔帶寬等;第三,外部的針對流表的開放API。