1. Virtual Box + ubuntu Linux虚拟机在Mac主机上的环境搭建
    1.1 下载并安装 VirtualBox 6.0.8 for Mac 版本
    下载地址 选择OS X hosts,如下所示,下载之后的包为:VirtualBox-6.0.8-130520-OSX.dmg
    双击安装过程中,可能需要配置“系统偏好”的“安全和隐私”中允许安装。
  2. docker desktop 安装 istio docker desktop 安装dpdk_Mac


1.2 下载ubuntu的ISO镜像
ubuntu 18.04.2版本 国内镜像地址:http://mirrors.163.com/ubuntu-releases/bionic/
我选择的是server版本:ubuntu-18.04.2-live-server-amd64.iso;server版和desktop版的主要区别是desktop带X Window,而且server版支持SMP和NUMA技术,而desktop版不支持。

1.3 在Virtual Box中设置ubuntu虚拟机

1.3.1 在Virtual Box上新建虚拟机

A) 点击新建,然后选择Linux 和ubuntu 64-bit,内存配置成2048M。

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_02


B) 新建虚拟机之后,点击设置继续配置。DPDK需要两个core,设置处理器数量为2。

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_03


C) 新增3个网卡接口,DPDK需要多个网络接口之间转发,均设置成桥接网卡。

docker desktop 安装 istio docker desktop 安装dpdk_Mac_04


D)点击启动,选择ubuntu的ISO镜像,start之后开始安装ubuntu。

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_05

1.3.2 安装ubuntu

A)一直点击done,配置用户名和密码。使能SSH,如下图:

docker desktop 安装 istio docker desktop 安装dpdk_Mac_06


B)安装ubuntu之后,只创建了普通用户和密码,如需要创建root用户的密码,如下所示。

docker desktop 安装 istio docker desktop 安装dpdk_Mac_07


docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_08


1.3.3 Mac主机和ubuntu虚拟机的连接

A)SSH

在虚拟机里ifconfig查看地址,然后在MAC的终端通过ssh连接到虚拟机。

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_09


docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_10

PS: 使用Mac 自带终端 连接服务器时候,报错如下图
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
解决办法:
第一种: 直接删除: /users/username/.ssh/known_hosts 文件
第二种: ssh-keygen -R [IP_ADDRESS]
ssh-keygen -f “/root/.ssh/known_hosts” -R
注意:安全起见,建议使用第二种方法;

B)共享文件夹
MAC主机和ubuntu虚拟机之间,可通过共享文件夹来实现文件传递。

虚拟机设置:

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_11

在虚拟机/mnt下新建share文件夹,mount -t vboxsf UbuntuShare /mnt/share,提示 wrong fs type, bad option, bad superblock

docker desktop 安装 istio docker desktop 安装dpdk_Mac_12


这是因为系统没有安装VMBOX增强插件,使用以下命令可以解决:

sudo apt install nfs-common

sudo apt install cifs-utils

sudo apt install virtualbox-guest-utils然后sudo mount -t vboxsf UbuntuShare /mnt/share,就能看到了MAC主机的文件:

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_13


2. DPDK在Linux虚拟机上的配置和运行

DPDK官网下载地址:http://core.dpdk.org/download/

我这里选了Lastest Stable Version: DPDK 18.11.1 (LTS)

解压到了共享文件夹下面。

2.1 安装工具和一些包

A)安装make

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_14


B)安装numactl-devel包

apt-get install libnuma-dev

C) 安装gcc

apt install gcc

2.2 设置RTE环境变量

vi dpdk_environment.rc ,并写入:

export RTE_SDK=<dpdk主目录>

export RTE_TARGET=x86_64-native-linuxapp-gcc

docker desktop 安装 istio docker desktop 安装dpdk_Mac_15

2.3 ./usertools/dpdk-setup.sh

docker desktop 安装 istio docker desktop 安装dpdk_Mac_16


A) 第一步,选择【15】编译DPDK

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_17


docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_18

B) 第二步,选择【18】插入UIO模块

docker desktop 安装 istio docker desktop 安装dpdk_Mac_19

C) 第三步,选择【21】配置hugepage为512。

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_20

D) 选择【23】现实Ethernet device,显示为Active,则不能用作DPDK的Ethernet接口。

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_21

E) 先退出dpdk setup节目,通过ifconfig显示Ethernet接口名字,然后down掉其中两个。再进入setup,选择【24】配置。

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_22


docker desktop 安装 istio docker desktop 安装dpdk_Mac_23


00:03.0 drv=igb_uio

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_24

G) 选择【28】进入testpmd,core bitmask为3,表示0b11,选择两个core。

docker desktop 安装 istio docker desktop 安装dpdk_Ethernet_25

H) testpmd运行情况

docker desktop 安装 istio docker desktop 安装dpdk_ubuntu_26