利用VPP转发数据包实验

1.引言

完成实验前先要了解VPP和DPDK的相关知识点:

1.1 VPP

VPP (Vector Packet Processing, 矢量化报文处理) 是一个可扩展, 高性能的数据包处理框架, 可用于快速构建交换/路由功能. VPP 最初是由 Cisco 开发的商用技术(2002年), 并申请了专利, 开源后(2016)成为 Linux 基金会的开源项目 FD.io (Fast Data I/O) 的核心部分.
VPP 提供了大量的功能特性, 完整列表见: https://fd.io/vppproject/vppfeatures/.

1.2 DPDK

DPDK1
DPDK2
DPDK3
DPDK(Data Plane Development kit):应用程序运行在操作系统的用户空间,利用自身提供的数据平面库来收发包处理,绕过了linux操作系统内核协议栈对数据包处理的过程,以提升报文数据包的处理速度。
在这里插入图片描述
dpdk-decbind.py文件描述

实验设计示意图

如图所示本实验设计的场景为从服务器1里利用tcpreplay命令发送pcap,然后在服务器2中利用vpp将服务器2网卡eth0接收到的数据包转发给服务器2中创建的虚拟网口host-vpp1out

在这里插入图片描述

虚拟网卡

  1. 在服务器2中创建虚拟网卡,并启动虚拟网卡
 ip link add name vpp1out type veth peer name vpp1host
 #ip link delete vpp1host type veth #删除虚拟网卡
 ip link set dev vpp1host up
 ip link set dev vpp1out up
 ip addr show vpp1host #查看虚拟网口转态
  1. 在服务器2中运行vpp,在vpp中添加物理网卡,并设置网卡数据接收模式
set interface promiscuous on eth0  #开启eth0网口数据接收的混杂模式
set interface state eth0 up #开启物理网卡
create host-interface name vpp1out #添加虚拟网卡
set int state host-vpp1out up
test l2patch rx eth0 tx host-vpp1out#设置vpp中二层转发路线 eth0->host-vpp1out

3.在服务器1中发送数据包
本实验中服务器2中eth0对应的pci_id号为0000:02:00.0
服务器1和服务器2物理上是由网线连接的,为了使服务器1转发的数据包可以被服务器2的网卡eth0接收到,首先要使用DPDK中的dpdk-devbind.py文件查看设备与驱动的绑定关系:

./dpdk-devbind.py -s 

然后将服务器1中pci_id为0000:02:00.0对应的虚拟网卡名为ens1f0与DPDK-compatible driver绑定

./dpdk-devbind -b ixgbe 0000:02:00.0

数据包发送命令

tcpreplay -i ens1f0 -l 0 -M 10 udp.pcap
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值