運(yùn)營大規(guī)模、快速增長的網(wǎng)絡(luò)需要在如何規(guī)劃、部署和運(yùn)營基礎(chǔ)設(shè)施方面進(jìn)行變革,隨著LinkedIn不斷擴(kuò)張數(shù)據(jù)中心網(wǎng)絡(luò),很明確的是LinkedIn不僅需要盡快地提供和建立網(wǎng)絡(luò),還必須使用最簡單的方法。在沒有任何流量丟失或架構(gòu)更改的情況下,添加新組建、新功能或新服務(wù)是極具挑戰(zhàn)性的。
開放性:盡可能使用社區(qū)的工具獨(dú)立性:避免開發(fā)對(duì)單一廠商或廠商驅(qū)動(dòng)架構(gòu)的依賴簡單性:專注于尋找最簡單、容易和模塊化的基礎(chǔ)設(shè)施工程方法。在我們的網(wǎng)絡(luò)和協(xié)議中遵循RFC 1925第12條規(guī)則:“對(duì)設(shè)計(jì)協(xié)議而言,僅當(dāng)無法減少什么,而不是無法增加什么,才算完美。”對(duì)于上面的三個(gè)維度,我們最近添加了一個(gè)新的維度:可編程性。能夠近實(shí)時(shí)地修改數(shù)據(jù)中心架構(gòu)的行為,而無需接觸設(shè)備配置,這使得我們能夠調(diào)整架構(gòu),以最佳的方式適應(yīng)應(yīng)用和業(yè)務(wù)需求。這使得我們的網(wǎng)絡(luò)運(yùn)營和現(xiàn)場團(tuán)隊(duì)更專注于運(yùn)行網(wǎng)絡(luò),而不是管理工具和配置,從而進(jìn)一步釋放創(chuàng)新能力。可編程性帶來的好處包括能夠按需優(yōu)先處理流量分配、負(fù)載均衡或安全狀態(tài),并提高交付的敏捷性和響應(yīng)速度。
為了實(shí)現(xiàn)這些目標(biāo),我們正在分解我們的網(wǎng)絡(luò),以一種允許我們修改和管理網(wǎng)絡(luò)且無需停機(jī)的方式分離軟件和硬件,并轉(zhuǎn)向軟件驅(qū)動(dòng)的網(wǎng)絡(luò)架構(gòu)。
單SKU數(shù)據(jù)中心在我們最近發(fā)布的Altair項(xiàng)目的博客中,我們解釋了轉(zhuǎn)向單SKU數(shù)據(jù)中心的模式,特別是基于Falco開放交換平臺(tái)。我們使用一個(gè)3.2 Tbps交換機(jī)作為我們的leaf-spine拓?fù)涞牟煌瑢拥臉?gòu)建塊,讓他們?cè)谝粋€(gè)統(tǒng)一的軟件棧上運(yùn)行。
這種單SKU數(shù)據(jù)中心使我們能夠從基于大型機(jī)箱的復(fù)雜性轉(zhuǎn)移到一個(gè)簡單的單一模塊,該模塊是可重復(fù)的,在擴(kuò)展時(shí)可以增加數(shù)量。然而,構(gòu)建簡單的結(jié)構(gòu)不會(huì)完全消除復(fù)雜性,它只是將復(fù)雜性轉(zhuǎn)移到網(wǎng)絡(luò)中的其他方面。
在我們的案例中,復(fù)雜性是在幾個(gè)標(biāo)準(zhǔn)Linux發(fā)行版之間的軟件堆棧:可以在主機(jī)和路由器上運(yùn)行的便攜式控制平面,為我們提供硬件擴(kuò)展軟件的功能。硬件平臺(tái)以O(shè)pen19服務(wù)器平臺(tái)為基礎(chǔ),它通過snap-on電源和數(shù)據(jù)傳輸速度提高了我們的機(jī)架集成度,數(shù)據(jù)傳輸速度比當(dāng)前生成的硬件快2-3倍。
另一方面,特征和控制被遷移到代碼中,而不是復(fù)雜的專用硬件設(shè)備。
自定義網(wǎng)絡(luò)我們正在研究一個(gè)新的概念:我們將如何建立網(wǎng)絡(luò)。當(dāng)我們連接系統(tǒng)和網(wǎng)絡(luò)元素時(shí),我們希望網(wǎng)絡(luò)以更簡單的方式工作。
自定義網(wǎng)絡(luò)是一些列開箱即用的功能,使網(wǎng)絡(luò)元素能夠在沒有預(yù)配置或人為干預(yù)的情況下進(jìn)行動(dòng)態(tài)初始化和構(gòu)建。網(wǎng)絡(luò)元素以自動(dòng)的方式發(fā)現(xiàn)并定義其角色和功能,一旦交換機(jī)接線,它就能開始工作,不僅要求低而且零配置。
網(wǎng)絡(luò)元素的第一步是在網(wǎng)絡(luò)中找到它的位置、角色和功能。它必須找到自己在拓?fù)渲械奈恢茫员汩_始在線路上推送數(shù)據(jù)包。雖然大多數(shù)協(xié)議可以鄰接,并通過網(wǎng)絡(luò)攜帶策略,位置感知仍然是一個(gè)關(guān)鍵的功能,使我們的架構(gòu)在很大程度上能夠自配置。
傳統(tǒng)上,網(wǎng)絡(luò)依靠帶外網(wǎng)絡(luò)通過控制臺(tái)或帶外以太網(wǎng)來配置和執(zhí)行基本設(shè)置,通過DHCP和TFTP從外部獲取配置,并使用這些配置以發(fā)現(xiàn)操作者的意圖并提供某種形式的身份。配置通常由腳本提前準(zhǔn)備,這些腳本提供一些尋址并在模板中設(shè)置唯一值以使得設(shè)備開始運(yùn)行。
另一方面,自定義網(wǎng)絡(luò)一旦接線,立即開始編程流表并開始轉(zhuǎn)發(fā)。它不需要任何預(yù)配置或任何靜態(tài)映射布置。它發(fā)現(xiàn)其相鄰的鄰居在庫存系統(tǒng)中注冊(cè)它自己,更新具有所需信息的中央存儲(chǔ)庫,并從完全動(dòng)態(tài)模式遷移到注冊(cè)和確定性模式。
謀求更好的控制平面LinkedIn數(shù)據(jù)中心與其他超大規(guī)模數(shù)據(jù)中心一樣,是通過形成Clos拓?fù)涞囊幌盗悬c(diǎn)對(duì)點(diǎn)鏈路連接的服務(wù)器和中間網(wǎng)絡(luò)設(shè)備的集合。目前,我們利用自動(dòng)配置的鏈路本地地址來建立控制平面以實(shí)現(xiàn)IPv6和IPv4的路由;因此,不需要在交換機(jī)接口上準(zhǔn)備IP配置。我們希望使我們的控制平面支持自定義網(wǎng)絡(luò),一旦設(shè)備擱置就開始轉(zhuǎn)發(fā)。
這種控制平面的要求非常簡單直接:
快速、簡單的分布式控制平面沒有標(biāo)簽、鈴聲或哨聲(沒有黑客,沒有策略)自動(dòng)發(fā)現(xiàn)鄰居并構(gòu)建RIB零配置必須使用TLV,向后兼容和可擴(kuò)展性必須攜帶MPLS標(biāo)簽(每個(gè)節(jié)點(diǎn)/接口)除了上述之外,如果我們考慮物理拓?fù)浣Y(jié)構(gòu)或網(wǎng)絡(luò)如何連接,作為自定義網(wǎng)絡(luò)的意圖和期望狀態(tài),我們希望確保當(dāng)前的應(yīng)用狀態(tài)能夠被發(fā)現(xiàn),并應(yīng)用于檢測不符合預(yù)期模式的任何布線或物理配置錯(cuò)誤。
我們將在不久發(fā)布IETF草案,概述這些基本概念,以便整個(gè)社群都能夠開啟相關(guān)方面的工作。
作者簡介:Shawn Zandi是LinkedIn的主要網(wǎng)絡(luò)架構(gòu)師,他領(lǐng)導(dǎo)LinkedIn下一代數(shù)據(jù)中心和基礎(chǔ)設(shè)施架構(gòu)項(xiàng)目以及多項(xiàng)工程和研究工作組,并擁有超過50個(gè)行業(yè)認(rèn)證,如Russ White,CCIE,CCDE和思科認(rèn)證架構(gòu)師。
原文鏈接:https://www.networkcomputing.com/data-centers/linkedin’s-data-center-design-principles/448361001