# Troubleshooting ## 使用OpenStack部署的拓扑 * 本次使用OpenStack部署UPGW环境,为了检测该网元是否能在虚拟化环境中运行,以及去测试虚拟化拓扑是否会出现一些未知的问题。 * 如上图所示,UPGW、基站、核心网和边缘都连接在管理网络manage上面,manage和public通过路由器连接,所以这四个网元都可以访问外网,另外给UPGW分配了浮动ip,可在桌面直接通过ssh连接,其它几个网元则需要通过UPGW进行ssh连接。UPGW和基站共连data1这个网桥,UPGW和核心网共连data2这个网桥,UPWG和边缘共连data3这个网桥。 ## 搭建UPGW中遇到的问题 * 环境层面 安装Redis过程中会报libhiredis.so.0.13: cannot open shared object file: No such file or director这样的错,需要执行下面的操作: mkdir /usr/lib/hiredis cp libhiredis.so /usr/lib/hiredis mkdir /usr/include/hiredis cp hiredis.h /usr/include/hiredis echo '/usr/local/lib' >>/etc/ld.so.conf ldconfig Redis服务安装好后需要通过systemctl start redis命令来启动,重启设备后也要重启该服务,也可设置为开机自启。 * 代码层面 在OpenStack的虚拟环境下,因为使用了虚拟网卡,所以对之前的端口配置并不支持,需要做如下修改方可运行通过,**测试中发现绑定igb_uio驱动或者uio_pci_generic驱动都需要这样配置**。 ## 功能测试中遇到的问题 * UPGW启动后,按照配置文件,理论上基站发出的报文可以透过UPGW传入核心网,所以用ping包来实验,在基站去ping核心网,实验过程中出现了三个问题,如下: 1. 在基站上指定eth0去发出ping包,结果arp请求的目的ip为网关ip,所以需要在基站上面配置静态路由route add -host 192.168.30.116 dev eth0,使走向核心网的ping包不需要再去请求网关,arp请求的目的ip为核心网ip,源ip为基站ip。 2. arp报文可以通过UPGW透传,但是在data2网桥被丢弃,不能进入核心网,这是因为在data2网桥开启了端口安全,对传入报文进行了检测,关闭后使源目ip不在同一网段的arp请求包可以传入网元,同时将data1网段的对应端口也关闭端口安全,防止回包时出现类似情况 。 3. 核心网没有发出arp reply报文,需要在核心网上配置静态路由route add -host 192.168.20.74 dev eth0,因为在核对了arp请求的目的ip为本机ip后,linux还会默认对网卡数据包的源地址做路由查找,如果查到出口网卡不是收到数据包的网卡的话,就会查找失败,不会发出响应包。