LIFO或FIFO:測量數(shù)據(jù)中心以太網(wǎng)時延方法探討
時延是數(shù)據(jù)中心以太網(wǎng)的一個關鍵性能指標。這是因為在高頻率金融交易(HFT)、高性能計算(HPC)和類似的性能敏感型環(huán)境中,超低時延10GbE交換功能是處理巨大網(wǎng)絡流量的關鍵,這常常意味著每天上百萬次的交易。電子交易中價格和交易數(shù)據(jù)速率的不斷攀升以及保持競爭力的需求推動著金融市場股東們投資最新技術,以便支持螺旋式上升的帶寬要求,并降低數(shù)據(jù)流時延。
因此,現(xiàn)在時延測量已經(jīng)成為數(shù)據(jù)中心以太網(wǎng)交換機供應商測試報告的一個重要部分。在評估這些系統(tǒng)所用的交換IC時,設計師需要明白時延測量方法有好多種,采用不正確的方法可能是一種錯誤,因為有些方法并不能測出真實性能。
近來在測試中使用的其中一些測量方法使得LAN交換芯片供應商聲稱具有超低時延。這是怎么做到的呢?使用末位進、首位出(LIFO)方法,存儲轉(zhuǎn)發(fā)交換機確實可以報告亞微秒的時延。然而,這不符合RFC1242,該文檔建議優(yōu)先采用首位進到首位出(FIFO)方法:“理想情況下所有設備的測量都應從幀前導位之后的第一個實際位開始。”這種方法能夠更精確地測量數(shù)據(jù)包穿透交換機時遇到的任何存儲或處理時間。
交換機架構(gòu)和時延
2006年推出的第一臺低時延10GbE交換機使用直通工作模式取得了十分優(yōu)異的時延性能,這種模式下交換機可以在幀被完整接收之前就開始發(fā)送。而存儲轉(zhuǎn)發(fā)交換機不能取得低時延,這是因為數(shù)據(jù)包在從出口發(fā)送出去之前必須完全存儲在內(nèi)存中。但并不是所有直通交換機都有相同的時延性能,因為它們采用的交換架構(gòu)有很大的區(qū)別。
存儲器存取帶寬一直是交換芯片架構(gòu)師心頭的痛。在使用傳統(tǒng)的交叉開關矩陣和內(nèi)存設計時,將沒有足夠的片上帶寬允許每個輸入端口同時寫入相同的輸出隊列。為了解決這種阻塞問題,芯片架構(gòu)可以在每個交換輸入端使用虛擬輸出隊列,即所謂的組合式輸入/輸出隊列(CIQQ)架構(gòu)(圖1)。
圖1 組合式輸入/輸出隊列(CIQQ)架構(gòu)
虛擬輸出隊列可以在每個輸入端口為每個交換輸出端口(出口)提供一個隊列。如果某個特定的出口隊列臨時受阻,那么與之對應的入口隊列將實行流控,而以其它出口為目的地的數(shù)據(jù)包可以避過這個受阻隊列,將數(shù)據(jù)發(fā)送給其它無阻塞的出口。然而,對于一個N端口交換機而言,這意味著N*N輸入隊列和關聯(lián)調(diào)度器,從而增加了很大的復雜性。同時還會增加數(shù)據(jù)包時延,因為每個數(shù)據(jù)包通過交換機時必須排隊兩次。鑒于VOQ和關聯(lián)調(diào)度器的復雜性,許多交換機設計通過一定程度的內(nèi)部阻塞來降低復雜性,這將進一步增加時延。
新的共享式內(nèi)存交換技術第一次通過SRAM IP實現(xiàn)性能提升,使交換機能夠支持具有特別低時延、完全無阻塞輸出排隊、共享的內(nèi)存架構(gòu),見圖2。通過使用專有的高帶寬內(nèi)存結(jié)構(gòu),交換架構(gòu)可以做得更簡單,進而消除入口VoQ的復雜性和所需的額外內(nèi)存。另外,組播數(shù)據(jù)包只需存儲一次,從而進一步降低了對片上內(nèi)存的要求。由于只有一次內(nèi)存入隊/出隊和非常低的內(nèi)部阻塞,因此這種技術可以提供最低的時延。
圖2 具有特別低時延的輸出排隊、共享內(nèi)存架構(gòu)
時延測量方法
測量通過交換機的時延有多種方法:首位進到末位出(FILO)、末位進到首位出(LIFO)、首位進到首位出(FIFO)和末位進到末位出(LILO)。每種方法的時延測量都是在交換機入口和出口進行的。
這種方法測量的是交換機的時延加上數(shù)據(jù)包從出口發(fā)送出來的時間。雖然這種方法對于服務器群集中的應用到應用時延等的測量足夠了,但不是一種非常好的交換機時延測量方法。為了更好地表明這個觀點,可以想像一個電氣連接器。FILO方法意味著連接器具有與數(shù)據(jù)包大小相關的時延,但事實上連接器具有零時延。
大數(shù)據(jù)包會給這些測量結(jié)果增加較大的時延,使得提取實際交換機時延變得更加困難。最后,考慮兩個串聯(lián)的直通交換機。當使用FILO方法時,通過兩個交換機的時延不能通過累加單個交換機的測量時延計算得到。鑒于這些因素,這種方法并不是測量交換機時延的正確方法。
LIFO方法在20世紀80年代晚期和90年代早期用于測量傳輸單元大小固定的電信網(wǎng)絡中的時延。一些測試報告仍參考1991年發(fā)表的RFC 1242,這個時間比直通交換技術的發(fā)明早很多。對于只提供存儲和轉(zhuǎn)發(fā)交換機的供應商來說,這種測量方法可以使結(jié)果看起來更好,因為這種方法不考慮數(shù)據(jù)包在轉(zhuǎn)發(fā)之前被完整存儲在交換機中的時間。從圖3可以看出,直通交換機的時延不能用這種方法精確測量。
圖3 使用FIFO和LIFO方法的測量結(jié)果
這兩種方法從效果上看是相同的,是正確測量通過直通交換機的時延的唯一方法。為了說明這些方法的工作原理以及與LIFO測試的區(qū)別,讓我們對最近使用Fulcrum“Monaco”10GE交換機做的現(xiàn)場測試結(jié)果做一下評估。
FIFO與LIFO實際測試結(jié)果
Monaco參考平臺例子包含有一個交換芯片,在1U外形尺寸內(nèi)提供24個SFP+端口。這個平臺中的時延包含了通過交換機的時延和通過SFP+ PHY的時延。這張圖顯示了交換機工作在直通模式時使用FIFO和LIFO方法的時延測量結(jié)果。
從圖中可以看到,F(xiàn)IFO結(jié)果表明了交換機的實際直通時延,而LIFO數(shù)值是人工減去了完整接收一個幀所需的時間。對10GbE鏈路來說,這兩種測量方法之間的關系可以用以下等式描述:
LIFO時延=FIFO時延-(幀長度+20)*0.8nS
由于LIFO測量方法可能導致像Monaco這樣的直通交換機出現(xiàn)負時延,因此測試儀器將這種情況報告為“零”時延。這意味著在較大數(shù)據(jù)包情況下比較直通交換機將是無意義的,因為它們都顯示為零時延。
結(jié)論
在為數(shù)據(jù)中心選擇網(wǎng)絡設備時時延是一個關鍵參數(shù)。網(wǎng)絡設計師可能使用測試報告比較不同供應商的交換機,但必須仔細檢查這些報告,因為測試時延有多種方法,而只有比較使用相同的方法測量競爭性芯片得到的時延才有意義。直通交換機可以為數(shù)據(jù)中心提供最低時延的網(wǎng)絡解決方案。本文明確了測量直通交換機時延的唯一正確方法是首位進至首位出(FIFO)方法。