dpvs学习笔记: 1 初探

提起负载均衡设备,程序员基本都打过交道。硬件的比如 F5、netscaler, 以前在赶集网就用 netscaler, 后来过保也没续... 软件的有 lvs、haproxy,当然了七层的 nginx 也算。关于转发模式也知道一些 dr、nat、tunnel 等等,轮循的算法有 rr、wrr、wlc 等等。但是内部原理除了网络同学,大部分同学只是简单的使用,借着这次调研 dpdk 机会,读读源码,一勺烩了。

背景

现代互联网流量越来越大,网卡吞吐能力也越来越强,从最早的 1gb, 到现在 10gb 是标配,以后可能 100gb, 所以负载均衡设备的线性扩展也遇到了瓶劲。谷歌前几年发布了关于 LB 的论文 Maglev, 估计是受启发,各大公司相继造 LB 轮子,爱奇异和小米同时用 dpdk + lvs 技术开发了自己的负载均衡软件,要是小米先开源,这名和利早就是小米同学的了... 虽然这些技术都是开源并且己知,很成熟的,能站在了巨人的肩膀上,将技术组合起来并开源也很历害,感谢爱奇异的大牛们。

lvs 的问题

IT 行业技术变化真快,刚毕业时 lvs 还是负载均衡界的小甜甜,才过了几年就成了牛夫人。中小公司 lvs 足够好用,但是内核比较低,尤其 fullnat 模式应用非常广泛。那 lvs 问题是什么呢?

主要是内核太慢,网络栈代码写的也不好,各种历史问题,很多 if 语句,这个很影响分支预测的。而lvs 的数据需要经过内核网络栈,再拷贝到用户空间,性能自然上不去。谷歌的 Maglev 完全是绕过了内核,从网卡收数据直接送到 LB. 这就是所谓的内核旁路 kernel bypass 技术,这个技术现在比较成熟,dpdk, open onload, netmap 等等。当年谷歌可是硬撸的,理念和技术水平领先一个时代。

什么是 dpvs

那再回头说什么是 dpvs 呢?dpdk + lvs,可以理解为经过内核旁路的 lvs ++. 对于原来熟悉 lvs 的人不会陌生。看官网得知,转发模式完全来自 lvs,就连代码部份函数名都是一样的。

dpvs架构

上图是官网的一张图,右侧都是 dpvs 列出的优化点。那这些优化点难不难呢?难,但是,dpdk 都做好了。dpdk 程序最大的特点就是每个逻辑核都有自己的数据,有一个封装好的宏 RTE_PER_LCORE,即然都本地化了,那自然也没有锁开销。看源码得知,mbuf 分配,定时器这些都是本地化的。

dpvs 优点

lvs 相关的模式,转发算法目前没看到区别。性能优化都是 dpdk 层面的,减少 cpu cache miss, 减少 false sharing,NUMA 友好,绑定 cpu,其实想想这些不都是软件优化共性嘛。

  1. 用户态内核旁路,少去内核到用户空间的拷贝
  2. 网卡队列与 cpu 的绑定
  3. flow director 增加返程数据亲和性,往返都由同一个 cpu 处理
  4. cpu 数据本地化,无锁
  5. 实现轻量级 tcp stack,专用的性能自然好

dpvs 缺点

  1. 缺点还是有的,由于他是 lvs 衍生出来的,所以 lvs 各个模式的缺点他都有。
  2. 相比 Maglev, 目前 dpvs 更适配 intel 网卡,看官网也支持其它厂商网卡。这其实算是 dpdk 的限制,毕竟 intel 的框架。
  3. 由于网卡被 dpvs 专用,可能还需要专配一个网卡用于运维,或是开 kni 也行。
  4. 不支持 ipv6, 现在有强推的趋势,想对标 Maglev, 还是越早支持越好。

小结

先写这些,之后再从源码角度分析 dpvs 业务处理流程,和各种优化的细节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容