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