dpvs部署
admin
2023-03-11 08:41:14
0

安装dpdk

官方URL https://github.com/iqiyi/dpvs

dpdk-17.05.2可以兼容dpvs
wget https://fast.dpdk.org/rel/dpdk-17.05.2.tar.xz
tar vxf dpdk-17.05.2.tar.xz

下载dpvs
git clone https://github.com/iqiyi/dpvs.git

给dpdk打补丁,加入kni驱动
cd
cp patch/dpdk-stable-17.05.2/*.patch dpdk-stable-17.05.2/
cd dpdk-stable-17.05.2/
patch -p 1 < 0001-PATCH-kni-use-netlink-event-for-multicast-driver-par.patch

另一个补丁,uoa模块
patch -p1 < 0002-net-support-variable-IP-header-len-for-checksum-API.patch

编译dpdk并安装
cd dpdk-stable-17.05.2/
make config T=x86_64-native-linuxapp-gcc
make
export RTE_SDK=$PWD

启动hugepage
服务器是numa系统(centos)
echo 8192 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 8192 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

注:这个操作是临时的,如果服务器有别的应用再跑,可能已经占用hugepage了,后面给出另外的方法

安装uio驱动,并绑定网卡
modprobe uio
cd dpdk-stable-17.05.2
insmod build/kmod/igb_uio.ko
insmod build/kmod/rte_kni.ko

查看网卡状态 ./usertools/dpdk-devbind.py --status

Network devices using kernel driver

===================================

0000:01:00.0 'I350 Gigabit Network Connection 1521' if=eth0 drv=igb unused=

0000:01:00.1 'I350 Gigabit Network Connection 1521' if=eth2 drv=igb unused=

0000:01:00.2 'I350 Gigabit Network Connection 1521' if=eth3 drv=igb unused=

0000:01:00.3 'I350 Gigabit Network Connection 1521' if=eth4 drv=igb unused=

绑定eth3
./usertools/dpdk-devbind.py -b igb_uio 0000:01:00.2

注:这里绑定的网卡,最好是没有使用的,因为网卡需要down 掉才能绑

编译dpvs
cd dpdk-stable-17.05.2/
export RTE_SDK=$PWD
cd
make

make install

注:安装的时候 可能有依赖包报错,提示哪个,yum安装就可以了

编译后的文件
ls bin/
dpip dpvs ipvsadm keepalived

启动dpvs
cp conf/dpvs.conf.single-nic.sample /etc/dpvs.conf
cd /bin
./dpvs &

查看是否启动正常
./dpip link show
1: dpdk0: socket 0 mtu 1500 rx-queue 8 tx-queue 8
UP 10000 Mbps full-duplex fixed-nego promisc-off
addr A0:36:9F:9D:61:F4 OF_RX_IP_CSUM OF_TX_IP_CSUM OF_TX_TCP_CSUM OF_TX_UDP_CSUM

以DR模式举例

官方URL https://github.com/iqiyi/dpvs/blob/master/doc/tutorial.md ,各种lvs模式配置

给dpvs添加lan ip 37,这个步骤必须在添加vip之前

./dpip addr add 192.168.1.37/24 dev dpdk0

给dpvs添加vip 57

./dpip addr add 192.168.1.57/32 dev dpdk0

设置算法为rr,vip为57

./ipvsadm -A -t 192.168.1.57:80 -s rr

添加后端机器11

./ipvsadm -a -t 192.168.1.57:80 -r 192.168.1.11 -g

在11机器执行
ip addr add 192.168.1.11/32 dev lo
sysctl -w net.ipv4.conf.lo.arp_ignore=1

dpvs在启动的时候,有时候 会报错,罪魁祸首是内存碎片,app无法申请到足够多的连续大块内存,只能申请到很多小块内存。以至于内存块数目超过了系统设置的256个。

解决方式 就是申请大页内存应该在系统启动时,或系统启动后尽快申请,避免内存被割裂

https://www.cnblogs.com/cobbliu/p/6603391.html

为了省事 可以加入到kernel参数 /etc/boot/grub2.cfg

default_hugepagesz=1G hugepagesz=1G hugepages=8G

引用别人的结论:
结论:DPDK 再快也是收包到送给应用层的时间短,而不是“转发”快。收到包后,各类检查跟查表(一般都是并发环境,加锁啊什么的,无锁?……哈哈)处理的时间,基本上都是要远远超过 DPDK 的自身开销的。

想要快过 Linux,要明白为什么 Linux 网络协议栈会“慢”,这个慢是相比 DPDK 的处理而言的,对大部分应用而言,上层的业务延迟已经没多大必要在网络方面下功夫。总之,能否降低路有延迟,要看应用环境(买得起那么多物理机么?有相应的稳定可靠人才支撑么?),然后再做 profiling,看瓶颈在哪里。不要想当然的 DPDK。

举例来说吧,做 UDP 的 DNS,就可以用 DPDK,绕过 Linux 协议栈提升 QPS. 如果做路由,我觉得拼不过硬件,我是不赞同这种做法的。为了低延迟,没有包的时候,DPDK 都要让 CPU 满载跑着,这时如果想提升吞吐量,延迟也会跟着上去。如果系统里边是多个干活程序一起跑的,老板穷或者不舍得买好机器,开发运维技能没跟着上去,DPDK 也会被用残的。

硬件差不多,网络 IO+内存类的程序,Linux 跑万兆是没问题的。

如果做包转发,相比 x86 linux 肯定会大大提升性能,其实大部分瓶颈不在 dpdk 处理的网络这块

相关内容

热门资讯

终于懂了“传送屋.有没有挂?”... 家人们!今天小编来为大家解答传送屋透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很多...
今日重磅消息“喜扣打筒子.有挂... 网上科普关于“喜扣打筒子有没有挂”话题很是火热,小编也是针对喜扣打筒子作*弊开挂的方法以及开挂对应的...
玩家最新攻略“小闲川南棋牌.怎... 有 亲,根据资深记者爆料小闲川南棋牌是可以开挂的,确实有挂(咨询软件无需...
终于了解“老友内蒙古麻将.有挂... 家人们!今天小编来为大家解答老友内蒙古麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
终于了解“想游中心五.辅助开挂... 您好:想游中心五这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
【第一资讯】“胡乐邯郸麻将.辅... 有 亲,根据资深记者爆料胡乐邯郸麻将是可以开挂的,确实有挂(咨询软件无需...
玩家分享攻略“天天微友棋牌.开... 您好:天天微友棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
重磅消息“小茶馆.辅助器?”太... 重磅消息“小茶馆.辅助器?”太坑了果然有挂您好,小茶馆这个游戏其实有挂的,确实是有挂的,需要了解加客...
【第一消息】“经典联盟牛牛.有... 您好:经典联盟牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
难得 !2026年元宵节恰逢月... 封面新闻记者 张峥 实习生 吴怡玲 2026年的元宵节,注定不一般。花灯配上月全食。 圆月 王俊峰...