http://www.redsheeran.top/?p=76
Dragonfly Topology是由John Kim等人於2008年提出的一種網絡拓撲結構(Technology-Driven, Highly-Scalable Dragonfly Topology),被廣泛地應用在高性能計算網結構上。
一份比較詳細的參考ppt:From Hypercubes to Dragonflies a short history of interconnect
拓撲結構
Dragonfly的結構有三個層級:路由器(Router)、組(Group)、系統(system),它的拓撲結構一般由以下這些參數描述:
| 參數 | 描述 | 參數 | 描述 |
|---|---|---|---|
| N | 網絡中的終端(主機)數 | p | 每個路由器連接的終端數 |
| a | 每個組的路由器數 | k | 路由器的接口數 |
| k' | 每一組的有效接口數 | h | 每個路由器用於與其他組連接的頻道個數 |
| g | 系統內組個數 | q | 輸出端口隊列長度 |
| qvc | Queue depth of an individual output VC(並不知道怎么翻譯) | H | 跳數 |
| Outi | 路由i號輸出端口 |

如上圖所示,最底層的每個路由器與p個終端鏈接,並擁有a-1個與組內路由器通信的本地頻道(Local Channel),以及h個與其他組路由連接的全局頻道(Global Channel),由此可以計算出每個路由器的接口數k=p+h+a-1。在組(Group)的層面上,每組連接着ap個終端,並擁有ah條全局頻道的連接(ah connections to global channels),可以將一個組抽象為擁有k'=a(p+h)個端口的虛擬路由器(virtual router),由於其擁有非常高的路由數因此在系統層面的網絡上可以擁有很短的全局網絡直徑(global diameter)。
在最大規模( N=ap(ah+1) )的Dragonfly網絡中沒對組之間只能由一條連接,而在更小的網絡中可以存在更多的連接。
a、p、h是描述一個Dragonfly網絡主要的三個參數,它們可以取任意值,不過要是鏈路分在均衡這三項參數需要滿足a=2p=2h,因為一個包在傳輸過程中會經過兩條本地頻道和一個全局頻道,這樣的比率可以維持平衡。網絡保持平衡的條件:a與2p均大於等於2h。下圖為一個a=4,p=h=2的網絡:

在Dragonfly拓撲中組內路由的連接方式可以根據實際需求進行調節,下圖是一個各項參數與上圖相同的Dragonfly拓撲,不過為了讓鄰居路由器之間帶寬更大改變了組內路由器之間的連接方式。組內的路由方式可以是任意的,如在Dragonfly+拓撲中組內使用胖樹的結構。

路由算法
Dragonfly的路由算法主要有兩類,最小路由算法與由Valiant提出的可以在系統層面上應用的算法。此外作者在論文中還提出了UGAL(Universal Globally-Adaptive Load-balanced)算法。

Minimal算法
將包直接發送到目的路由所在的組

Valiant的算法
先隨機選一個組發送過去,如果不是目的路由所在的組則再由該組接收到的路由將其按最短路徑發送給目的路由

UGAL算法
UGAL對每一個包在MIN與VAL算法之間選擇,根據隊列長度與跳數估算網絡延時並選擇最低延遲的道路,UGAL有本地與組內兩種實現,UGAL-L使用當前路由節點的隊列信息,而UGAL-G使用組內所有隊列信息實現,可以在全局頻道上負載均衡。
