網(wǎng)絡(luò)設(shè)備怎樣進(jìn)行緩存
掃描二維碼
隨時(shí)隨地手機(jī)看文章
緩存的概念并不陌生,尤其是網(wǎng)絡(luò)交換機(jī),現(xiàn)在絕大部分的交換機(jī)均采用存儲(chǔ)轉(zhuǎn)發(fā)模式。所謂存儲(chǔ)轉(zhuǎn)發(fā)模式,是交換機(jī)接收數(shù)據(jù)包,從前導(dǎo)碼開(kāi)始,一直到報(bào)文最后的CRC,這個(gè)報(bào)文接收完之后,才開(kāi)始啟動(dòng)轉(zhuǎn)發(fā)進(jìn)程,在啟動(dòng)轉(zhuǎn)發(fā)之前,這些數(shù)據(jù)包都要存儲(chǔ)到交換機(jī)緩存中,這就是存儲(chǔ)轉(zhuǎn)發(fā)模式,緩存說(shuō)白了就是存儲(chǔ)轉(zhuǎn)發(fā)報(bào)文的。一般交換機(jī)的緩存都比較小,只滿足了線速轉(zhuǎn)發(fā),當(dāng)流量超過(guò)端口最大帶寬時(shí),報(bào)文會(huì)很快將僅有的一點(diǎn)緩存迅速占滿。緩存就好比是一個(gè)水池子,有出水管和入水管,當(dāng)入水管開(kāi)的大,出水管開(kāi)的小,水池子里的水就會(huì)很快裝滿,直到溢出。如果入水管開(kāi)的小,出水管開(kāi)的大,水池子里幾乎不會(huì)存下水,但水的流速就會(huì)慢,這是一個(gè)權(quán)衡利弊的過(guò)程。對(duì)于交換機(jī)的緩存也如此,針對(duì)出入水管的調(diào)節(jié)引申出了兩大技術(shù),一個(gè)是QoS技術(shù),一個(gè)是流控技術(shù)。對(duì)出水管進(jìn)行管控的技術(shù)就是QoS技術(shù),其中包括比如WRR、隊(duì)列整形GTS、限速、WRED、最小帶寬保證等很多技術(shù),這些技術(shù)基本本質(zhì)上就是對(duì)出水管的開(kāi)關(guān)大小和優(yōu)先級(jí)進(jìn)行設(shè)置,當(dāng)然要比開(kāi)關(guān)水管要復(fù)雜得多,只是這樣的一個(gè)比喻。對(duì)入水管進(jìn)行管控的技術(shù)就是流控技術(shù),包括:Flow-control和PFC,基于端口和隊(duì)列的流控控制,對(duì)入水管的門(mén)限進(jìn)行設(shè)置,當(dāng)水量達(dá)到門(mén)限時(shí)觸發(fā)設(shè)備發(fā)送流控幀,同時(shí)當(dāng)端口收到流控幀時(shí),也可以向下一級(jí)設(shè)備傳遞。這兩大類技術(shù)包含的內(nèi)容都很多,技術(shù)也較為成熟,但實(shí)際應(yīng)用中使用的并不多,原因也是緩存比較小。比如一般的交換機(jī),緩存就幾MB,均分到各個(gè)端口也就幾百KB,有突發(fā)流量時(shí)能存下幾十個(gè)包就不錯(cuò)了,還費(fèi)力設(shè)置那么多閾值干啥,突發(fā)一來(lái)基本將緩存打滿,各種技術(shù)都成了擺設(shè),發(fā)揮不了太大作用,所以從交換機(jī)誕生之日起,緩存技術(shù)就有了,但一直不為人們所關(guān)注。
因?yàn)榫彺嫘?,交換機(jī)上的緩存一直是其比較雞肋的部分。那一定有人會(huì)問(wèn),就不能將緩存做得大些嗎?可以,其實(shí)后來(lái)有人研究出采用外擴(kuò)DRAM來(lái)擴(kuò)大緩存能力,不過(guò)這樣基本都會(huì)降低報(bào)文轉(zhuǎn)發(fā)速度,使得延遲增大,對(duì)網(wǎng)絡(luò)影響也比較大,對(duì)于一些對(duì)時(shí)延比較敏感的業(yè)務(wù)網(wǎng)絡(luò),就不能采用這種大緩存的方式,不過(guò)在一些突發(fā)流量比較多,比如搜索業(yè)務(wù)中,對(duì)時(shí)延不敏感,這種大緩存設(shè)備就可以派上用場(chǎng),避免在突發(fā)時(shí)出現(xiàn)丟包,即便延遲大一些也能接受,不過(guò)因?yàn)槎嗔艘粋€(gè)專門(mén)存儲(chǔ)數(shù)據(jù)的芯片,設(shè)備造價(jià)上要高得多,所以一般大緩存的設(shè)備價(jià)格都比較昂貴,基本是越大越貴。這里所說(shuō)的延遲大,都是指的有擁塞的情況,如果沒(méi)有擁塞,其實(shí)大小緩存都沒(méi)有區(qū)別,存儲(chǔ)轉(zhuǎn)發(fā)時(shí)延都是幾個(gè)微秒,與緩存大小無(wú)絕對(duì)關(guān)系。交換機(jī)上的轉(zhuǎn)發(fā)芯片,受制造工藝和技術(shù)所限,還無(wú)法在片內(nèi)將緩存做得很大。當(dāng)然,這些年轉(zhuǎn)發(fā)芯片的技術(shù)也在不斷進(jìn)步,不僅是轉(zhuǎn)發(fā)表項(xiàng)規(guī)格越來(lái)越大,緩存也在變大,現(xiàn)在片內(nèi)緩存達(dá)到20~30M的已經(jīng)比較常見(jiàn),這要比十年前只有1M~2M的交換機(jī)緩存要大得多。緩存變大,以前的那些技術(shù)的意義就大了,可以設(shè)置各種閾值和優(yōu)先級(jí),對(duì)緩存的使用進(jìn)行管控,這樣才能真正發(fā)揮作用。緩存大小閾值設(shè)置要適度,過(guò)大的緩存空間會(huì)影響正常通信狀態(tài)下數(shù)據(jù)包轉(zhuǎn)發(fā)速度(因?yàn)檫^(guò)大的緩沖空間需要相對(duì)多一點(diǎn)的尋址時(shí)間),并增加設(shè)備的成本。而過(guò)小的緩沖空間在發(fā)生擁塞時(shí)又容易丟包出錯(cuò)。所以,適當(dāng)?shù)木彺婵臻g加上先進(jìn)的緩存調(diào)度算法是解決緩存問(wèn)題的合理方式。
借助于RDMA技術(shù)的熱門(mén),緩存技術(shù)引起了人們的關(guān)注。眾所周知,RDMA技術(shù)是一種提升數(shù)據(jù)包處理速度的新技術(shù),一直采用專有網(wǎng)絡(luò)協(xié)議和專有網(wǎng)卡,應(yīng)用來(lái)實(shí)現(xiàn)的,造價(jià)非常貴,一般只有在高性能計(jì)算的網(wǎng)絡(luò)中才會(huì)部署,隨著以太網(wǎng)技術(shù)的成熟,RDMA的一種替代技術(shù)RoCE出現(xiàn),RoCE是一種允許通過(guò)以太網(wǎng)使用遠(yuǎn)程直接內(nèi)存訪問(wèn)(RDMA)的網(wǎng)絡(luò)協(xié)議,就是通過(guò)以太網(wǎng)來(lái)跑RDMA協(xié)議,PFC和ECN是RoCE實(shí)現(xiàn)的基礎(chǔ),而PFC是實(shí)現(xiàn)基于隊(duì)列的流控,ECN是實(shí)現(xiàn)基于WRED打標(biāo)技術(shù),兩種技術(shù)都與緩存密切相關(guān),這讓人不得不將緩存技術(shù)重拾起來(lái)。而現(xiàn)在的交換機(jī)緩存有數(shù)十MB,在技術(shù)上也足夠可以做做文章,很多人開(kāi)始深入研究交換機(jī)的緩存技術(shù)。
當(dāng)一臺(tái)交換機(jī)出廠之后,它的緩存大小就確定了,無(wú)法再改變,這就像我們買(mǎi)的手機(jī)一樣,CPU和內(nèi)存大小都無(wú)法改變。我們只能通過(guò)命令去設(shè)置出入門(mén)限,管控緩存的使用情況,將緩存盡可能公平地分給各個(gè)端口使用,同時(shí)針對(duì)突發(fā)流量、流控攻擊等異常情況,都可以應(yīng)對(duì)。緩存雖不涉及到轉(zhuǎn)發(fā)表項(xiàng),但每個(gè)數(shù)據(jù)包都要經(jīng)過(guò)緩存存儲(chǔ),所以一旦緩存出了問(wèn)題,影響是全局性的,可能導(dǎo)致整個(gè)設(shè)備的業(yè)務(wù)異常,影響很大。早期的設(shè)備緩存都不會(huì)開(kāi)放給使用者去隨意修改各種閾值,隨著RoCE網(wǎng)絡(luò)的出現(xiàn),為了更好地適應(yīng)RDMA網(wǎng)絡(luò),各家網(wǎng)絡(luò)廠商才將緩存這部分調(diào)整放開(kāi)。即便這樣,也建議遵從廠商提供的建議數(shù)值進(jìn)行設(shè)置,這些閾值背后有很多緩存的技術(shù)含義,稍有不慎就可能調(diào)整錯(cuò)誤,同時(shí)針對(duì)特殊應(yīng)用場(chǎng)景,評(píng)估后再調(diào)整。有沒(méi)有不用緩存的交換機(jī)?答案是有,就是直通轉(zhuǎn)發(fā)模式,優(yōu)點(diǎn)自然是轉(zhuǎn)發(fā)快,時(shí)延低,這種交換機(jī)在還沒(méi)有收到完整報(bào)文就開(kāi)始轉(zhuǎn)發(fā),無(wú)法檢驗(yàn)CRC,這樣錯(cuò)包也發(fā)現(xiàn)不了,實(shí)際應(yīng)用中使用會(huì)有很大限制。