手动部署 UPGW 开发环境
安装 Redis
yum install redis -y
安装 hiredis
$ cd /opt/
$ git clone https://github.com/redis/hiredis.git
$ cd hiredis/
$ git checkout v0.14.0
$ make && make install
$ /sbin/ldconfig
安装 UPGW
有 gitlab 权限
直接从 gitlab 下载,操作如下:
$ git clone http://gitlab.sh.99cloud.net/5GS/upgw.git
$ cd nes
$ make
无 gitlab 权限
从 tarballs 服务器下载,操作如下:
nes 提供二进制文件 nes-daemon,直接使用,下载链接:http://tarballs.99cloud.com.cn/upgw/
启动服务进程
DPDK 纳管网卡
加载内核模块
$ source dpdk.rc
$ cd ${RTE_SDK}/${RTE_TARGET}/kmod/
$ modprobe uio
$ insmod igb_uio.ko
$ lsmod | grep igb
igb_uio 13542 0
uio 19338 1 igb_uio
绑定网卡到新的内核驱动模块
$ ifconfig eth0 down
$ ifconfig eth1 down
$ ifconfig eth2 down
$ ./dpdk-devbind.py --status-dev net
Network devices using DPDK-compatible driver
============================================
<none>
Network devices using kernel driver
===================================
0000:00:03.0 'Virtio network device 1000' if=eth3 drv=virtio-pci unused=virtio_pci,igb_uio *Active*
0000:00:06.0 'Ethernet Virtual Function 700 Series 154c' if=eth0 drv=iavf unused=igb_uio
0000:00:07.0 'Ethernet Virtual Function 700 Series 154c' if=eth1 drv=iavf unused=igb_uio
0000:00:08.0 'Ethernet Virtual Function 700 Series 154c' if=eth2 drv=iavf unused=igb_uio
Other Network devices
=====================
<none>
$ ./dpdk-devbind.py --bind=igb_uio 0000:00:06.0
$ ./dpdk-devbind.py --bind=igb_uio 0000:00:07.0
$ ./dpdk-devbind.py --bind=igb_uio 0000:00:08.0
$./dpdk-devbind.py --status-dev net
Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Ethernet Virtual Function 700 Series 154c' drv=igb_uio unused=iavf
0000:00:07.0 'Ethernet Virtual Function 700 Series 154c' drv=igb_uio unused=iavf
0000:00:08.0 'Ethernet Virtual Function 700 Series 154c' drv=igb_uio unused=iavf
Network devices using kernel driver
===================================
0000:00:03.0 'Virtio network device 1000' if=eth3 drv=virtio-pci unused=virtio_pci,igb_uio *Active*
Other Network devices
=====================
<none>
启动 Redis
systemctl start redis
启动 UPGW
启动 nes-daemon
$ mkdir -p /var/lib/appliance/nts/
$ cat /var/lib/appliance/nts/nts.cfg
[PORT0]
name = UP
description = 82540EM Gigabit Ethernet Controller
pci-address = 0000:00:06.0
traffic-type = mixed
traffic-direction = upstream
egress-port = 1
[PORT1]
name = DOWM
description = 82540EM Gigabit Ethernet Controller
pci-address = 0000:00:07.0
traffic-type = mixed
traffic-direction = downstream
egress-port = 0
[PORT2]
name = 0000:00:08.0
description = 82540EM Gigabit Ethernet Controller
pci-address = 0000:00:08.0
traffic-type = mixed
traffic-direction = lbp
egress-port = 0
lbp-mac = e4:1d:2d:17:7a:10 # Edge GW MAC 地址
[VM common]
max = 32
number = 2
vhost-dev = /var/lib/appliance/nts/qemu/usvhost-1
[NES_SERVER]
ctrl_ip = 0.0.0.0
ctrl_port = 9515
[REDIS_SERVER]
host=127.0.0.1
port=6379
[KNI]
max = 32
$ ./nes-daemon -n 4 --lcores='(0,4,5)@2,1@3,2@4,3@5' --huge-dir /dev/hugepages --socket-mem 2048