lvs在大规模网络环境下的应用pukong

31
吴佳明 _ 普空 阿巴巴 关注络技术 LVS 在规模络环境中的应

Upload: michael-zhang

Post on 05-Dec-2014

1.254 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Lvs在大规模网络环境下的应用pukong

吴佳明_普空 阿⾥里巴巴 关注⺴⽹网络技术

LVS在⼤大规模⺴⽹网络环境中的应⽤用

Page 2: Lvs在大规模网络环境下的应用pukong

LVS历史

LVS是⼀一个开源的软件,由毕业于国防科技⼤大学的章⽂文嵩博⼠士于1998年5月创⽴立,可以实现LINUX平台下的负载均衡。 LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。

Page 3: Lvs在大规模网络环境下的应用pukong

主要内容

1. LVS-问题 2. LVS功能-fullnat 3. LVS功能-synproxy 4. LVS性能-cluster 5. LVS性能-IPVS改进 6. LVS性能-系统改进 7. LVS-todo list

Page 4: Lvs在大规模网络环境下的应用pukong

LVS在互联⺴⽹网应⽤用中的位置

Page 5: Lvs在大规模网络环境下的应用pukong

LVS⺴⽹网络拓扑

淘宝CDN LVS DR⺴⽹网络拓扑

Page 6: Lvs在大规模网络环境下的应用pukong

问题

•  LVS部署⽅方式存在不⾜足 – 各转发模式,⺴⽹网络拓扑复杂,运维成本⾼高

•  和商⽤用LB设备相⽐比 – 缺少TCP标志位DDOS攻击防御

•  性能不⾜足 – 10G+ bps的HTTP流量 – 1000w+ pps的synflood攻击

Page 7: Lvs在大规模网络环境下的应用pukong

DR模式-不⾜足

•  不⾜足

IN:更改⺫⽬目的MAC OUT:NULL

1.  LVS-RS间必须在同⼀一个VLAN 2.  RS上绑定VIP,⻛风险⼤大;

Page 8: Lvs在大规模网络环境下的应用pukong

NAT模式-不⾜足

•  不⾜足

IN(2):DNAT OUT(4):SNAT

1. RS/ROUTER配置策略路由

Page 9: Lvs在大规模网络环境下的应用pukong

TUNNEL-不⾜足

•  不⾜足

IN:增加1个IP头 OUT:NULL

1.  RS配置复杂(IPIP模块等) 2.  RS上绑定VIP,⻛风险⼤大;

Page 10: Lvs在大规模网络环境下的应用pukong

解决⽅方法 •  LVS各转发模式运维成本⾼高

– FULLNAT:⼀一种新的转发模式,实现LVS-RealServer间跨vlan通讯,并且in/out流都经过LVS;

•  缺少攻击防御模块 – SYNPROXY:synflood攻击防御模块 – 其它TCP FLAG DDOS攻击防御策略

•  性能不⾜足 – 硬件/软件/部署⽅方式 多个层⾯面的优化

Page 11: Lvs在大规模网络环境下的应用pukong

FULLNAT •  FULLNAT是⼀一种新的转发模式

– 主要思想 引⼊入local address(内⺴⽹网ip地址),cip-vip转换为lip->rip,⽽而 lip和rip均为IDC内⺴⽹网ip,可以跨vlan通讯;

– keepalived配置⽅方式: virtual_server 125.76.224.240 { lb_kind FNAT/DR/NAT/TUNNEL

local_address { 192.168.1.1 }

Page 12: Lvs在大规模网络环境下的应用pukong

FULLNAT

Page 13: Lvs在大规模网络环境下的应用pukong

FULLNAT •  NAT实现原理

Page 14: Lvs在大规模网络环境下的应用pukong

FULLNAT •  FULLNAT实现原理

Page 15: Lvs在大规模网络环境下的应用pukong

FULLNAT

NETFILTER HOOK点,同iptables 为什么是这2个HOOK点?

•  NAT-HOOK点

Page 16: Lvs在大规模网络环境下的应用pukong

FULLNAT

区分 IN/OUT 流

•  FULLNAT-HOOK点

Page 17: Lvs在大规模网络环境下的应用pukong

FULLNAT

⽤用client address作为hash key

•  NAT-session表

Page 18: Lvs在大规模网络环境下的应用pukong

FULLNAT

双向hash,⽤用五元组作为hash key

•  FULLNAT-session表

Page 19: Lvs在大规模网络环境下的应用pukong

FULLNAT

TOA: address of tcp option

•  FULLNAT-获取client address(TOA)

Page 20: Lvs在大规模网络环境下的应用pukong

SYNPROXY •  SYNPROXY⽤用于防御synflood攻击

– 主要思想 参照linux tcp协议栈中syncookies的思想,LVS-构造特殊seq的synack包,验证ack包中ack_seq是否合法-实现了TCP三次握⼿手代理;

– 配置⽅方式

virtual_server 125.76.224.240 { syn_proxy

Page 21: Lvs在大规模网络环境下的应用pukong

SYNPROXY

Page 22: Lvs在大规模网络环境下的应用pukong

性能-多核多队列

•  单队列⺴⽹网卡 – 只有⼀一个rx_buffer和⼀一个tx_buffer;

Page 23: Lvs在大规模网络环境下的应用pukong

性能-多核多队列

•  多队列⺴⽹网卡 – N个rx_buffer和N个tx_buffer, N=CPU核个数

Page 24: Lvs在大规模网络环境下的应用pukong

性能-CLUSTER

Page 25: Lvs在大规模网络环境下的应用pukong

性能-软件优化

•  LVS优化 – 增⼤大session hash table – 增⼤大session hash bucket lock个数 – Route opt. – Statistic Lockless

Page 26: Lvs在大规模网络环境下的应用pukong

性能-软件优化

•  软件优化效果

basic opt. HTTP(%) 0 25 New Conn(%) 0 33.3

0 5

10 15 20 25 30 35

Route&Lockless opt.

Page 27: Lvs在大规模网络环境下的应用pukong

性能-硬件优化

•  硬件优化 – Intel ® E5-2600处理器(DDIO) – Synproxy cookies算法(AVX指令集) – BIOS设置优化

Page 28: Lvs在大规模网络环境下的应用pukong

Intel ® E5-2600处理器(DDIO)介绍

Without DDIO With DDIO

QPI

DIMMs

Cache

Core Core

Core Core

Core Core

Core Core

QPI

Cache

Core Core

Core Core

Core Core

Core Core

CPU 0 CPU 1

PCIe PCIe

PCIe

QPI DIMMs

Cache

Core Core

Core Core

Core Core

Core Core

QPI

Cache

Core Core

Core Core

Core Core

Core Core

CPU 0 CPU 1

PCIe PCIe

PCIe

Eliminates Memory Accesses

•  Intel E5 处理器平台 + Intel82599⺴⽹网卡 •  通过减少内存访问来提升系统IO性能

Page 29: Lvs在大规模网络环境下的应用pukong

性能-硬件优化

•  硬件优化效果 – 性能提升87.5%

westmere sandybridge sandybridge with AVX

数据包量(w) 400 550 750 百分⽐比(%) 0 37.5 87.5

0 100 200 300 400 500 600 700 800

SYNFlood

Page 30: Lvs在大规模网络环境下的应用pukong

Todo List

•  性能:lockless •  功能:7层;攻击防御;

•  开源:http://kb.linuxvirtualserver.org/wiki/IPVS_FULLNAT_and_SYNPROXY

Page 31: Lvs在大规模网络环境下的应用pukong

谢 谢 Q&A

新浪微博:吴佳明_普空