# 手动部署 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 ============================================ 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 ===================== $ ./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 ===================== ``` ### 启动 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 ```