dpvs學(xué)習(xí)筆記: 1 初探

提起負(fù)載均衡設(shè)備像吻,程序員基本都打過交道啼器。硬件的比如 F5窥岩、netscaler, 以前在趕集網(wǎng)就用 netscaler, 后來(lái)過保也沒續(xù)... 軟件的有 lvs披诗、haproxy撬即,當(dāng)然了七層的 nginx 也算。關(guān)于轉(zhuǎn)發(fā)模式也知道一些 dr呈队、nat剥槐、tunnel 等等,輪循的算法有 rr宪摧、wrr、wlc 等等。但是內(nèi)部原理除了網(wǎng)絡(luò)同學(xué)击狮,大部分同學(xué)只是簡(jiǎn)單的使用筹陵,借著這次調(diào)研 dpdk 機(jī)會(huì),讀讀源碼孩革,一勺燴了岁歉。

背景

現(xiàn)代互聯(lián)網(wǎng)流量越來(lái)越大,網(wǎng)卡吞吐能力也越來(lái)越強(qiáng),從最早的 1gb, 到現(xiàn)在 10gb 是標(biāo)配锅移,以后可能 100gb, 所以負(fù)載均衡設(shè)備的線性擴(kuò)展也遇到了瓶勁熔掺。谷歌前幾年發(fā)布了關(guān)于 LB 的論文 Maglev, 估計(jì)是受啟發(fā),各大公司相繼造 LB 輪子非剃,愛奇異和小米同時(shí)用 dpdk + lvs 技術(shù)開發(fā)了自己的負(fù)載均衡軟件置逻,要是小米先開源,這名和利早就是小米同學(xué)的了... 雖然這些技術(shù)都是開源并且己知备绽,很成熟的券坞,能站在了巨人的肩膀上,將技術(shù)組合起來(lái)并開源也很歷害肺素,感謝愛奇異的大牛們恨锚。

lvs 的問題

IT 行業(yè)技術(shù)變化真快,剛畢業(yè)時(shí) lvs 還是負(fù)載均衡界的小甜甜倍靡,才過了幾年就成了牛夫人猴伶。中小公司 lvs 足夠好用,但是內(nèi)核比較低塌西,尤其 fullnat 模式應(yīng)用非常廣泛他挎。那 lvs 問題是什么呢?

主要是內(nèi)核太慢捡需,網(wǎng)絡(luò)棧代碼寫的也不好办桨,各種歷史問題,很多 if 語(yǔ)句站辉,這個(gè)很影響分支預(yù)測(cè)的呢撞。而lvs 的數(shù)據(jù)需要經(jīng)過內(nèi)核網(wǎng)絡(luò)棧,再拷貝到用戶空間庵寞,性能自然上不去狸相。谷歌的 Maglev 完全是繞過了內(nèi)核,從網(wǎng)卡收數(shù)據(jù)直接送到 LB. 這就是所謂的內(nèi)核旁路 kernel bypass 技術(shù)捐川,這個(gè)技術(shù)現(xiàn)在比較成熟脓鹃,dpdk, open onload, netmap 等等。當(dāng)年谷歌可是硬擼的古沥,理念和技術(shù)水平領(lǐng)先一個(gè)時(shí)代瘸右。

什么是 dpvs

那再回頭說什么是 dpvs 呢?dpdk + lvs岩齿,可以理解為經(jīng)過內(nèi)核旁路的 lvs ++. 對(duì)于原來(lái)熟悉 lvs 的人不會(huì)陌生太颤。看官網(wǎng)得知盹沈,轉(zhuǎn)發(fā)模式完全來(lái)自 lvs龄章,就連代碼部份函數(shù)名都是一樣的。

dpvs架構(gòu)

上圖是官網(wǎng)的一張圖,右側(cè)都是 dpvs 列出的優(yōu)化點(diǎn)做裙。那這些優(yōu)化點(diǎn)難不難呢岗憋?難,但是锚贱,dpdk 都做好了仔戈。dpdk 程序最大的特點(diǎn)就是每個(gè)邏輯核都有自己的數(shù)據(jù),有一個(gè)封裝好的宏 RTE_PER_LCORE拧廊,即然都本地化了监徘,那自然也沒有鎖開銷“赡耄看源碼得知凰盔,mbuf 分配,定時(shí)器這些都是本地化的倦春。

dpvs 優(yōu)點(diǎn)

lvs 相關(guān)的模式廊蜒,轉(zhuǎn)發(fā)算法目前沒看到區(qū)別。性能優(yōu)化都是 dpdk 層面的溅漾,減少 cpu cache miss, 減少 false sharing,NUMA 友好著榴,綁定 cpu添履,其實(shí)想想這些不都是軟件優(yōu)化共性嘛。

  1. 用戶態(tài)內(nèi)核旁路脑又,少去內(nèi)核到用戶空間的拷貝
  2. 網(wǎng)卡隊(duì)列與 cpu 的綁定
  3. flow director 增加返程數(shù)據(jù)親和性暮胧,往返都由同一個(gè) cpu 處理
  4. cpu 數(shù)據(jù)本地化,無(wú)鎖
  5. 實(shí)現(xiàn)輕量級(jí) tcp stack问麸,專用的性能自然好

dpvs 缺點(diǎn)

  1. 缺點(diǎn)還是有的往衷,由于他是 lvs 衍生出來(lái)的,所以 lvs 各個(gè)模式的缺點(diǎn)他都有严卖。
  2. 相比 Maglev, 目前 dpvs 更適配 intel 網(wǎng)卡席舍,看官網(wǎng)也支持其它廠商網(wǎng)卡。這其實(shí)算是 dpdk 的限制哮笆,畢竟 intel 的框架来颤。
  3. 由于網(wǎng)卡被 dpvs 專用,可能還需要專配一個(gè)網(wǎng)卡用于運(yùn)維稠肘,或是開 kni 也行福铅。
  4. 不支持 ipv6, 現(xiàn)在有強(qiáng)推的趨勢(shì),想對(duì)標(biāo) Maglev, 還是越早支持越好项阴。

小結(jié)

先寫這些滑黔,之后再?gòu)脑创a角度分析 dpvs 業(yè)務(wù)處理流程,和各種優(yōu)化的細(xì)節(jié)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末略荡,一起剝皮案震驚了整個(gè)濱河市庵佣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撞芍,老刑警劉巖秧了,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異序无,居然都是意外死亡验毡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門帝嗡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晶通,“玉大人,你說我怎么就攤上這事哟玷∈桑” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵巢寡,是天一觀的道長(zhǎng)喉脖。 經(jīng)常有香客問我,道長(zhǎng)抑月,這世上最難降的妖魔是什么树叽? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谦絮,結(jié)果婚禮上题诵,老公的妹妹穿的比我還像新娘。我一直安慰自己层皱,他們只是感情好性锭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叫胖,像睡著了一般草冈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓮增,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天疲陕,我揣著相機(jī)與錄音,去河邊找鬼钉赁。 笑死蹄殃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的你踩。 我是一名探鬼主播诅岩,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讳苦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吩谦?” 一聲冷哼從身側(cè)響起鸳谜,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎式廷,沒想到半個(gè)月后咐扭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滑废,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蝗肪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蠕趁。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薛闪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俺陋,到底是詐尸還是另有隱情豁延,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布腊状,位于F島的核電站诱咏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缴挖。R本人自食惡果不足惜胰苏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醇疼。 院中可真熱鬧,春花似錦法焰、人聲如沸秧荆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乙濒。三九已至,卻和暖如春卵蛉,著一層夾襖步出監(jiān)牢的瞬間颁股,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工傻丝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甘有,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓葡缰,卻偏偏與公主長(zhǎng)得像亏掀,于是被迫代替她去往敵國(guó)和親忱反。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容