Palette: Distributing Tables in Software-Defined Networks筆記

前言

解釋

  • table:表,規則的集合
  • small table、subtable:子表、小表,被分割後的表
  • large table:原始表,待分割的表
  • largest table:大表,規則數最多的表
  • table size:表中規則的數量,表的大小
  • bits:位,匹配符或數據包頭中的字符位

一句話總結

將原始規則表分割成均等的C個子表,(其中圖中最短路徑的長度是C的上界)然後使用彩虹路徑方法將子表放入交換機中,保證每條路徑上都要有所有的子表

  • decompose:如何分割使子表均等,且子表規則數最少→子表數最多,還要考略分割的質量(子表的大小是問題的關鍵)
  • distribute:不同的拓撲圖路徑,如何考慮C,如何放入

一、Decomposition Rules

How to decompose a large table that contains all rules into a predetermined number of smaller tables.

將原始表分割成規定數量的子表。其中子表的大小應該近似均等。

  • 定義每一個子表都代表一種顏色(color)
  • 分割要滿足兩點:
    • Order-oblivious訪問子表可以無序性(?);
    • Semantically-invariant子表不會改變原始表的語義
  • 有些規則不能分配,即表中的一些規則必須在指定的switch中(如r.p是講packet發到指定的switch端口),是不安全的
  • 默認這裏表中的規則都是安全的,可以被分配的
  • 兩種類型的規則:
    • 默認規則(default rule):所有位都是*(通配符),優先級最低,用於如果沒有匹配到其他規則,默認轉發到下一跳switch,執行默認動作。分解時忽視默認規則。
    • 非默認規則(non-default rules):普通的規則

如何具體分割表?

——>兩個分割方法:

  • Pivot Bit Decomposition(PBD):基於軸點的分割
  • Cut-Based Decomposition(CBD):基於切割的分解

PBD

迭代地,每次通過合適的軸點將表分割成兩個子表。直到①達到指定的c個子表,或者②子表的規則數沒有減少(即並沒有比分割前的表少)結束迭代。

  • 注意這裏一次迭代會分割成兩個子表。兩個規則中最多的那個子表是最大子表。

——>什麼是軸點(pivot)?

  • 指的是那些規則的位(bit)上是*的位點(e.g.如規則1*0,第二個位是軸點,規則可以被分解成100和110。)
  • 注意一個規則上可以有多個軸點,即可以被分解成多個規則(e.g.一個規則有P個軸點,則可以被分解成2P 中新規則。表同理。)
  • 可知不同的一些軸點,可能會得到不同的子表。所有子表的結果由待分表軸點共同決定

——>如何選擇合適的軸點(bit)以滿足我們的目標?

目標:Our goal is to greedily minimize the maximum table size among all the small tables.

目標:最小化每個switch中最大子表的規則數量,來最大化子表(colors)的總量。

  • 每次都選擇最大的表開始分解
  • 分解軸點的選擇:首先依次遍歷該表中的所有bit[i,0-6]位(i代表第幾列,軸點),其實就是依次橫向預分解得到估計的最大子表(即兩個表中規則數最多的那個做代表),最後從所有最大子表中選擇規則數最少的那個作爲最少最大子表→得到相應的軸點i→得到相應的可分解規則R。以實現目標——子表規則數最少(理解:最大子表的規則數都是最少的了,還有神馬子表不是呢)
  • 每次迭代根據PBD分割的兩個子表的規則數會大致相等
  • 軸點(pivot)公式:
    這裏寫圖片描述
  • 若得到的最少最大子表規則沒有減少,則拒絕該表的分割,跳到下一個表

——>例子1:
這裏寫圖片描述

  • 各bit[i,0-6]上的最大子表規則數分別爲:6、5、6、6 、6、 6
  • Rule ϕ2 has * in bit 1,and therefore it is duplicated to rule ϕ′ 2 = 001***0 and ϕ′′ 2 = 011***0.
  • first sub-table:ϕ1 , ϕ′ 2 , ϕ6 and ϕ7
  • second sub-table: ϕ′′ 2 , ϕ3 , ϕ4 , ϕ5 and ϕ7

——> 證明

  • 引理一:如果一個packet(h)在原始表中可以匹配一個非默認規則時→那麼在PBD中,h也可以匹配的非默認規則只在一個子表中,其他所有子表匹配非默認規則(證明略,沒看懂)
  • 引理二:如果一個packet(h)在原始表中匹配的是默認規則時→那麼在PBD中,h可以匹配所有子表的默認規則

  • 定理一:PBD可以保持原始表的語義,不管子表的被訪問順序

——>缺陷

  • 表規則數c不是2的整數倍數,會導致子表的規則數不均等了(?)
    解決:取最大整數p,使p滿足p2 < c。一個子表取p2 ,另一個子表取c - p2
  • 可能會出現最大子表規則數不理想,是理論上的c倍(定理二
    證明:假設有一個原始表(N個規則)如下:
    01111
    10111
    11011
    11101
    11110
    按照1到c-1bits分割成c個子表
    結果:c-1個一個規則的子表,剩下一個最大子表規則數爲N-c+1(理想情況下:子表規則數N/c)
    倍數約爲:(N-c+1)/(N/c)≈ c,N足夠大

CBD

根據**直接依賴圖**分割規則 ![這裏寫圖片描述](https://img-blog.csdn.net/20170312112937978?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ4MDU4MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ——>這裏的依賴關係如何定義的? 首先邊代表規則的依賴關係
  • 高→低
  • u → v
  • 這裏的依賴關係用|Cu,v |表示

規則依賴公式|Cu,v | = {i | bvi = * and bui ≠ * } 其中 bui denote the i-th bit of node u.

(理解:規則依賴即規則的重疊部分,這裏C指的是低級規則對高級規則包含的通配符個數。依賴成本指的是若分割後需要添加的新節點(規則)的個數,注意與規則緩存中依賴成本是被依賴的規則數相區別。其實依賴本質上是一致的,只是量化的方式不一樣:規則緩存是一起放入依賴規則;規則放置是將依賴規則放入多個交換機,需要分割)

各邊上的權重(weight)代表分割這條邊的成本:w(u, v)= |Cu,v |−1

——>分割的原理

通過消除兩規則之間的依賴關係來分割邊

for each bit i in Cu,v , we can write a rule that is identical to v, except the i-th bit that is replaced by 1 − bui .

我們將重寫|Cu,v |個新的規則(節點):第i位爲1 − bui這些規則是用來分割規則v的,因此與規則u不依賴了。總之添加了w個規則,並且這些新規則的成本也降低了。

定理三: Using the above-mentioned edge breaking and node expansion operations, CBD can exactly emulate PBD.

CBD方法事PBD方法的擴展。

在PBD中,沒有packet可以都匹配兩個子表中的不同規則。CBD也同理。

——>如何分割呢?

目標:

步驟:迭代地進行,每次迭代的步驟

  • 我首先 使用METIS 劃分(partition)出大小均爲c的子圖(子表),要使邊的權重最小化
  • 根據劃分的質量(是否超過參數權重w0 )來選擇:若超過。則expand one of the rules, and then go to the next iteration(?);若沒有超過,則結束分割所有的依賴邊(cut-edges,分割原理如上)
  • (?這部分沒有看懂,需要了解METIS算法)

二、RAINBOW PATH PROBLEM

how to spread the subtables in the network?
——>怎樣將分割的子表放到網絡中?

second subproblem is to ensure that each packet traverses all the types of small tables (i.e. all colors), so that the resulting setting would be semantically equivalent to a single lookup in the large table.
——>要使每個packet可以遍歷到所有的子表(colors)

each path must contain all c colors.
——>就相當於每個路徑(path)都必須要有所有的c個子表(colors)

定義一:the (G, P, c) RAINBOW PATH PROBLEM
將上述問題歸納成彩虹路徑問題,即是否存在一個方案γ:使每條路徑都能放入所有的子表。

  • G:一個給定的網絡拓撲圖 G =(V, E)
  • P:流的路徑集(path)P = {p1 , … , pf }。其中 S(pi ) 代表路徑中的switch,L(pi )代表路徑中的鏈路
  • c:分割後子表(colors)的數量

目標:我們的目標是最大化子表的數量(上一章已經介紹:通過最小化子表的大小來最大化子表數量)

——>怎麼判斷方案γ是否存在?

結合定義一和目標,子表(colors)的數量最多不能超過最短那條路徑(path)的容量。

如何具體判斷?我們將問題劃分爲下一節的幾點具體分析

The Rainbow Path Coloring

  • The Rainbow Path Coloring in Trees 我們將網絡拓撲看作一顆無環樹(數據中心)
    • single-source tree 單源樹:所有路徑都是從同一個節點出發
    • general tree 一般情況的樹
  • The Rainbow Path Coloring in General Graphs
  • An Optimal Solver
  • MULTICOLORED SWITCHES

下面具體分析各種情況下的方案γ(以下的分析是基於自己的理解得到的,如有錯誤之處請指正)

這裏寫圖片描述

  • (x,y)是set P上的最短路徑
  • s是最短路徑的容量大小

1.single-source tree

單源樹:所有路徑都是從同一個節點x出發

可得定理五

  • a valid color assignment γ with s+1 colors
  • 最短路徑P是通過對網絡拓撲圖BFS(廣度優先遍歷)得到的,時間複雜度O (m + n)
  • 證明略,參考上圖a

2.general tree

一般情況下的樹。path的起始點x不再確定,→即(x,y)不一定在樹的一條分支上,→(x,y)可能有一部分有其他的path 共用

可得定理六

  • a valid color assignment with ⌈ s/2 + 1⌉ colors
  • 時間複雜度O (m + n)
  • 證明(簡單理解,見上圖b):
    • 首先 d(y′, x) = d(x, y) + d(y, y′) ,因爲樹是無環的
    • ⌈ s/2 + 1⌉是怎麼得到的?p1, p2 將p分爲兩個path,假設p1的長度大於p2,可得 |S(p1)| ≥ ⌈ s/2 + 1⌉。即p只能在其中一部分放最多 ⌈ s/2 + 1⌉個規則

3.The Rainbow Path Coloring in General

一般情況下,網絡拓撲是複雜的

思路: At each iteration, which corresponds to a new color, GREEDY continuously picks uncolored nodes one by one, until each path contains at least one of the picked nodes in this iteration.

在每次迭代中,我們總選擇那些①佔有最多路徑的(理解爲最重要的交匯點,貪心思想)②所在路徑還有未被顏色c染色節點v(switch),用顏色c進行染色(即將子表放入switch中),直到每條路徑都染上了顏色c,然後進行下一次迭代。若發現某條路徑上節點都已被染色完,即顏色c染不上了,則終止迭代,方案失敗。

  • 注,第一次迭代總會成功的

我們將算法分爲兩類:

  • 1-GREEDY 每次只能選一個節點,滿足上面①②要求
    • 定理七:時間複雜度O (n2 *f)= f · ((n − 1) + (n − 2) + … + 1)
    • n是圖中的節點數(switch),f是路徑數 。
  • q-GREEDY 每次可以選q個節點,其中至少要有一個節點滿足①要求(②是默認滿足的)
    • 定理八:時間複雜度O ( nq+1 · f)

——>僞代碼
這裏寫圖片描述

  • 3-16 第一個while循環是迭代操作,每次迭代使所有路徑都要染上顏色c,否則迭代失敗
  • 6-16 第二個while循環是在迭代中,找到滿足條件①②的節點,進行染色。然後接着找下一個節點。時間t=((n − 1) + (n − 2) + … + 1)

——>例子2
這裏寫圖片描述
當q=1時,γ(V1,V2,V4)=1

(1)V=V1,V2,V4,V3;P'=P=P1,P2,P3;V'=∅;
   ①Vº=V1
    Pº=P1,P2
    V=V/Vº=V2,V4,V3;V'=V1;P'=P3
   ②Vº=V2
    Pº=P1,P3
    V=V/Vº=V4,V3;V'=V1,V2;P'=∅
(2)V=V4,V3;P'=P=P1,P2,P3;V'=∅;
   ①Vº=V4
    Pº=P2,P3
    V=V/Vº=V3;V'=V1,V2,V4;P'=P1
   ②在V中找不到路徑集P'上的節點——>Vº=∅→迭代失敗

當q=2時,γ(V1,V2,V3,V4)=2

(1)V=V1,V2,V4,V3;P'=P=P1,P2,P3;V'=∅;
   ①Vº=V2,V3 //V3不是最大的
    Pº=P1,P2,P3
    V=V/Vº=V1,V4;V'=V2,V3;P'=∅
(2)V=V1,V4;P'=P=P1,P2,P3;V'=∅;
   ①Vº=V1,V4
    Pº=P1,P2,P3
    V=V/Vº=∅;V'=V1,V2,V3,V4;P'=∅

4.An Optimal Solver

動態規劃的思想

5.MULTICOLORED SWITCHES

在一個switch中可以分配多個 colors

有三點好處:

  • 有利於大容量的switch
  • 增加分配子表的靈活度
    • ratio=switch中的子表/總的子表數
  • 適用於短的路徑非常短,長路徑非常長的情況。
    • 如果用 (G, P, c) 彩虹路徑的方法,爲了適應最短路徑→只能有較少數量的子表→導致子表非常大→不能充分利用長路徑的容量

定義二:(G, P, c, d)RAINBOW PATH PROBLEM

  • 其中d表示每個switch裏能放最多d個colors

例子3
這裏寫圖片描述

  • 若是單節點的彩虹路徑,每個節點只能放一個相同顏色的color
  • 若是多節點的彩虹路徑,則c=2。γ(V1) = {1, 2} ; γ(V2) ={2, 3} ; γ(V3) = {3, 1}。

引用:

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