淘先锋技术网

首页 1 2 3 4 5 6 7

VPP LoadBalancer 号称是对google maglev的复刻版,所以忍不住要试用一下。

CentOS 7.2上面安装非常快速,因为vppcentos提供了repo源和打包好的vpp程序。

 

#添加repo

cat > /etc/yum.repos.d/vpp.repo <<END

[fdio-release]

name=fd.io release branch latest merge

baseurl=https://nexus.fd.io/content/repositories/fd.io.centos7/

enabled=1

gpgcheck=0

END

 

安装vpp

yum install vpp vpp-plugins dpdk dpdk-tools

 

# LoadBalancer拓扑


VPP-Server: 192.168.2.2/24

VPP-VIP: 192.168.1.2

Real-Server-A: 192.168.2.3/24

Real-Server-B: 192.168.2.4/24

 

配置vpp

$ dpdk_nic_bind -s

$ modprobe uio_pci_generic

这里根据网卡的pci来设置

$ dpdk_nic_bind -b uio_pci_generic 0000:0b:00.0

$ sysctl -w vm.nr_hugepages=2048

$ vim /etc/vpp/startup.conf

dpdk {

    uio-driver uio_pci_generic

    dev 0000:0b:00.0

    socket-mem 1024

}

 

启动vpp

$ service vpp start

 

配置网卡地址

$ vppctl

$ show int

$ set int state GigabitEthernetb/0/0 up

$ set int ip address GigabitEthernetb/0/0 192.168.2.2/24

$ show int address

$ show hardware

$ show ip arp

$ show ip fib

 

 

配置LoadBalancer

$ vppctl

$ lb conf ip4-src-address 192.168.2.2 timeout 3

$ lb vip 192.168.1.2/32 encap gre4 new_len 1024

$ lb as 192.168.1.2/32 192.168.2.3 192.168.2.4

$ show lb vip verbose

 

 

配置其中一台Real Server

$ ip tunnel add tun0 mode gre local 192.168.2.3 remote 192.168.2.2 ttl 255

$ ifconfig tun0 192.168.2.2/32 up

$ echo 1 > /proc/sys/net/ipv4/conf/tun0/arp_ignore

$ echo 2 > /proc/sys/net/ipv4/conf/tun0/arp_announce

$ echo 0 > /proc/sys/net/ipv4/conf/tun0/rp_filter

$ echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

 

 

 

结论

  • 小包的转发性能确实因为用了dpdk达到了不少的提升,基本上是线性转发。

  • 默认用的RR轮询策略,还没有地方可以配置转发策略。

  • 目前还没有health monitor所以即使移除RealServer也依然会向那个地址转发。

  • 要上生产,还需要解决以上问题。