11 - OAI vEPC搭建 - 研一_describe keyspace vhss-程序员宅基地

技术标签: 研一  

第零章 Network

此版本OAI epc 已支持多MME、多eNB、X2切换等功能,配置方式变化较大。

环境:
物理机(运行eNB):Ubuntu 18.04 LTS,core i7 8xxxU 3.4GHz x4,16G,128G SSD,USRP B210
虚拟机(运行vEPC):Ubuntu16.04 LTS,内核4.9.x(受SPGW的限制),分配硬盘40G

  • 0.1 虚拟机中network
sudo vim upens.sh
#!/bin/bash

# MME
# ens33 192.168.176.128  ----S1---- virbr0 (vmnet8) 192.168.176.1
# ens33:9 ----S6A---- HSS ens33:12
sudo ifconfig ens33:9 172.66.1.111/16 up

sudo ifconfig ens39:10 192.168.2.111 up

sudo ifconfig ens33:11 192.168.100.111 up

# HSS
sudo ifconfig ens33:12 172.66.1.113/16 up

# SPGW  
# ens33:15 192.168.28.227 ----S1U---- virbr2 (vmnet1) 192.168.28.1

sudo ifconfig ens39:14 192.168.2.114 up

网络拓扑:
1.offical configuration:

官方配置
2. my configuration:
mynetconf

  • 0.2 code
git clone https://github.com/OPENAIRINTERFACE/openair-cn.git
cd openair-cn
git checkout develop
  • 0.3 安装Cassandra
cd ~/openair-cn/scripts
./build_cassandra --check-installed-software --force

验证Cassandra是否已安装并正在运行

nodetool status

cassandra:ok
在修改配置之前,停止Cassandra并清理日志文件

sudo service cassandra stop
sudo rm -rf /var/lib/cassandra/data/system/*
sudo rm -rf /var/lib/cassandra/commitlog/*
sudo rm -rf /var/lib/cassandra/data/system_traces/*
sudo rm -rf /var/lib/cassandra/saved_caches/*

然后如果需要,更新Cassandra配置(默认配置设置1个 cassandra节点监听localhost)
更新/etc/cassandra/cassandra.yaml,如下所示。<Cassandra_Server_IP>地址应该是HSS用于连接到Cassandra的Cassandra服务器的IP地址。“…”表示需要修改的值之间的配置行。

...
cluster_name: "HSS Cluster"
...
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
- seeds: "<Cassandra_Server_IP>"
...
listen_address: <Cassandra_Server_IP>
...
rpc_address: <Cassandra_Server_IP>
...
# LG: seems to be this option that is working ()
# endpoint_snitch: SimpleSnitch
endpoint_snitch: GossipingPropertyFileSnitch

启动 Cassandra

sudo service cassandra start

第一章 HSS

  • 1.1 Build HSS
sudo ./build_hss_rel14 --check-installed-software --force
sudo ./build_hss_rel14 --clean
sudo vim configcassandra.sh
#!/bin/bash

cd ~/openair-cn/scripts
Cassandra_Server_IP='127.0.0.1'
cqlsh --file ../src/hss_rel14/db/oai_db.cql $Cassandra_Server_IP
./data_provisioning_users --apn default --apn2 internet --key fec86ba6eb707ed08905757b1bb44b8f --imsi-first 001011234561000 --msisdn-first 001011234561000 --mme-identity mme.ng4T.com --no-of-users 20 --realm ng4T.com --truncate True  --verbose True --cassandra-cluster $Cassandra_Server_IP
./data_provisioning_mme --id 3 --mme-identity mme.ng4T.com --realm ng4T.com --ue-reachability 1 --truncate True  --verbose True

结果:
3

4
如果有这种报错:
5
则需要修改一下cassandra配置

cqlsh
describe keyspaces;

keyspaces

use vhss;
describe tables;

ALTER KEYSPACE vhss WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1 };
  • 1.2 配置 HSS
sudo vim configHSS.sh
#!/bin/bash

#sudo ifconfig ens9:0 172.66.1.113 up
PREFIX='/usr/local/etc/oai-vepc/hss14'
sudo mkdir -m 777 -p $PREFIX
sudo mkdir -m 777    $PREFIX/freeDiameter
# freeDiameter configuration files
cp ../etc/acl.conf ../etc/hss_rel14_fd.conf $PREFIX/freeDiameter
cp ../etc/hss_rel14.conf ../etc/hss_rel14.json $PREFIX

declare -A HSS_CONF
HSS_CONF[@PREFIX@]=$PREFIX
HSS_CONF[@REALM@]='ng4T.com'
HSS_CONF[@HSS_FQDN@]="hss.${HSS_CONF[@REALM@]}"
HSS_CONF[@cassandra_Server_IP@]='127.0.0.1'
HSS_CONF[@OP_KEY@]='1006020f0a478bf6b699f15c062e42b3'
HSS_CONF[@ROAMING_ALLOWED@]='true'
HSS_CONF[@cassandra_Server_IP@]='127.0.0.1'

for K in "${!HSS_CONF[@]}"; do 
  egrep -lRZ "$K" $PREFIX | xargs -0 -l sed -i -e "s|$K|${HSS_CONF[$K]}|g"
done
### freeDiameter certificate
../src/hss_rel14/bin/make_certs.sh hss ${HSS_CONF[@REALM@]} $PREFIX

取消ListenOn = “xxxxx”; 的注释并改成相应的ip地址(172.66.1.113):

sudo vim /usr/local/etc/oai-vepc/hss14/freeDiameter/hss_rel14_fd.conf
  • 1.3 Run HSS
sudo oai_hss -j /usr/local/etc/oai-vepc/hss14/hss_rel14.json

第二章 MME

  • 2.1 Build MME
sudo ./build_mme --check-installed-software --force
sudo ./build_mme --clean
  • 2.2 配置 MME
sudo vim configMME.sh
#!/bin/bash

# S6a
#sudo ifconfig ens9:11 172.66.1.111 up
#cd ~/openair-cn/scripts
INSTANCE=1
PREFIX='/usr/local/etc/oai-vepc/mme1'
sudo mkdir -m 777 -p $PREFIX
sudo mkdir -m 777    $PREFIX/freeDiameter

# freeDiameter configuration file
cp ../etc/mme_fd.sprint.conf  $PREFIX/freeDiameter/mme_fd.conf

cp ../etc/mme.conf  $PREFIX

declare -A MME_CONF

MME_CONF[@MME_S6A_IP_ADDR@]="172.66.1.111"
MME_CONF[@INSTANCE@]=$INSTANCE
MME_CONF[@PREFIX@]=$PREFIX
MME_CONF[@REALM@]='ng4T.com'
MME_CONF[@PID_DIRECTORY@]='/var/run'
MME_CONF[@MME_FQDN@]="mme.${MME_CONF[@REALM@]}"
MME_CONF[@HSS_HOSTNAME@]='hss'
MME_CONF[@HSS_FQDN@]="${MME_CONF[@HSS_HOSTNAME@]}.${MME_CONF[@REALM@]}"
MME_CONF[@HSS_IP_ADDR@]='172.66.1.113'
MME_CONF[@MCC@]='208'
MME_CONF[@MNC@]='93'
MME_CONF[@MME_GID@]='32768'
MME_CONF[@MME_CODE@]='3'
MME_CONF[@TAC_0@]='600'
MME_CONF[@TAC_1@]='601'
MME_CONF[@TAC_2@]='602'
MME_CONF[@MME_INTERFACE_NAME_FOR_S1_MME@]='ens33'
MME_CONF[@MME_IPV4_ADDRESS_FOR_S1_MME@]='192.168.176.128/24'
MME_CONF[@MME_INTERFACE_NAME_FOR_S11@]='ens39:10'
MME_CONF[@MME_IPV4_ADDRESS_FOR_S11@]='192.168.2.111/24'
MME_CONF[@MME_INTERFACE_NAME_FOR_S10@]='ens33:11'
MME_CONF[@MME_IPV4_ADDRESS_FOR_S10@]='192.168.10.111/24'
MME_CONF[@OUTPUT@]='CONSOLE'
MME_CONF[@SGW_IPV4_ADDRESS_FOR_S11_TEST_0@]='192.168.2.114/24'
MME_CONF[@SGW_IPV4_ADDRESS_FOR_S11_0@]='192.168.2.114/24'
MME_CONF[@PEER_MME_IPV4_ADDRESS_FOR_S10_0@]='0.0.0.0/24'
MME_CONF[@PEER_MME_IPV4_ADDRESS_FOR_S10_1@]='0.0.0.0/24'

#implicit MCC MNC 001 01
TAC_SGW_TEST='7'
tmph=`echo "$TAC_SGW_TEST / 256" | bc`
tmpl=`echo "$TAC_SGW_TEST % 256" | bc`
MME_CONF[@TAC-LB_SGW_TEST_0@]=`printf "%02x\n" $tmpl`
MME_CONF[@TAC-HB_SGW_TEST_0@]=`printf "%02x\n" $tmph`

MME_CONF[@MCC_SGW_0@]=${MME_CONF[@MCC@]}
MME_CONF[@MNC3_SGW_0@]=`printf "%03d\n" $(echo ${MME_CONF[@MNC@]} | sed 's/^0*//')`
TAC_SGW_0='600'
tmph=`echo "$TAC_SGW_0 / 256" | bc`
tmpl=`echo "$TAC_SGW_0 % 256" | bc`
MME_CONF[@TAC-LB_SGW_0@]=`printf "%02x\n" $tmpl`
MME_CONF[@TAC-HB_SGW_0@]=`printf "%02x\n" $tmph`

MME_CONF[@MCC_MME_0@]=${MME_CONF[@MCC@]}
MME_CONF[@MNC3_MME_0@]=`printf "%03d\n" $(echo ${MME_CONF[@MNC@]} | sed 's/^0*//')`
TAC_MME_0='601'
tmph=`echo "$TAC_MME_0 / 256" | bc`
tmpl=`echo "$TAC_MME_0 % 256" | bc`
MME_CONF[@TAC-LB_MME_0@]=`printf "%02x\n" $tmpl`
MME_CONF[@TAC-HB_MME_0@]=`printf "%02x\n" $tmph`

MME_CONF[@MCC_MME_1@]=${MME_CONF[@MCC@]}
MME_CONF[@MNC3_MME_1@]=`printf "%03d\n" $(echo ${MME_CONF[@MNC@]} | sed 's/^0*//')`
TAC_MME_1='602'
tmph=`echo "$TAC_MME_1 / 256" | bc`
tmpl=`echo "$TAC_MME_1 % 256" | bc`
MME_CONF[@TAC-LB_MME_1@]=`printf "%02x\n" $tmpl`
MME_CONF[@TAC-HB_MME_1@]=`printf "%02x\n" $tmph`


for K in "${!MME_CONF[@]}"; do
  egrep -lRZ "$K" $PREFIX | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
  ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
done


# freeDiameter certificate
sudo ./check_mme_s6a_certificate $PREFIX/freeDiameter mme.${MME_CONF[@REALM@]}

需要配置的地方:
MME_S6A_IP_ADDR
HSS_IP_ADDR
MCC
MNC
MME_INTERFACE_NAME_FOR_S1_MME
MME_IPV4_ADDRESS_FOR_S1_MME
MME_INTERFACE_NAME_FOR_S11
MME_IPV4_ADDRESS_FOR_S11
MME_INTERFACE_NAME_FOR_S10
MME_IPV4_ADDRESS_FOR_S10
SGW_IPV4_ADDRESS_FOR_S11_TEST_0
SGW_IPV4_ADDRESS_FOR_S11_0
SGW_IPV4_ADDRESS_FOR_S11_TEST_0
SGW_IPV4_ADDRESS_FOR_S11_0

  • 2.3 Run MME
sudo ./run_mme --config-file /usr/local/etc/oai-vepc/mme1/mme.conf --set-virt-if

MME-ok

第三章 SPGW

  • 3.0 降级至4.9.x内核
sudo apt install libncurses5-dev libncursesw5-dev bc binutils gcc libssl-dev make autoconf libelf-dev
cd /usr/src
sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.108.tar.xz
sudo tar xf linux-4.9.108.tar.xz && cd linux-4.9.108/
sudo make olddefconfig && sudo make -j`nproc`
sudo make modules_install && sudo make install
grep submenu /boot/grub/grub.cfg
例:submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-b5f9e301-3dff-4f60-a22b-b5b4717d92cb' {

grep gnulinux /boot/grub/grub.cfg
例:

2

sudo vim /etc/default/grub
修改:submenu>gnulinux
例:
#GRUB_DEFAULT=0
GRUB_DEFAULT="gnulinux-advanced-b5f9e301-3dff-4f60-a22b-b5b4717d92cb>gnulinux-4.9.108-advanced-b5f9e301-3dff-4f60-a22b-b5b4717d92cb"
sudo update-grub
sudo reboot
  • 3.1 Build SPGW
# cd ~/openair-cn/scripts
sudo ./build_spgw --check-installed-software --force
sudo ./build_spgw --clean
  • 3.2 配置 SPGW
sudo vim configSPGW.sh
#!/bin/bash

INSTANCE=1
PREFIX='/usr/local/etc/oai-vepc/spgw1'
sudo mkdir -m 777 -p $PREFIX
cp ../etc/spgw.conf  $PREFIX

declare -A SPGW_CONF
SPGW_CONF[@PID_DIRECTORY@]='/var/run'
SPGW_CONF[@SGW_INTERFACE_NAME_FOR_S11@]="ens39:14"
SPGW_CONF[@SGW_IPV4_ADDRESS_FOR_S11@]="192.168.2.114/24"
SPGW_CONF[@SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP@]="ens38"
SPGW_CONF[@SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP@]="192.168.10.128/24"
SPGW_CONF[@SGW_UDP_PORT_FOR_S1U_S12_S4_UP@]=2152
SPGW_CONF[@OUTPUT@]="CONSOLE"
SPGW_CONF[@INSTANCE@]=$INSTANCE
SPGW_CONF[@PID_DIRECTORY@]='/var/run'
SPGW_CONF[@PGW_INTERFACE_NAME_FOR_SGI@]="ens37"
SPGW_CONF[@PGW_IPV4_ADDRESS_FOR_SGI@]="172.16.238.128/24"
SPGW_CONF[@ARP_UE@]="oai"
SPGW_CONF[@DEFAULT_DNS_IPV4_ADDRESS@]="192.168.176.1"
SPGW_CONF[@DEFAULT_DNS_SEC_IPV4_ADDRESS@]="192.168.176.1"
SPGW_CONF[@GTPV1U_REALIZATION@]="GTP_KERNEL_MODULE"

for K in "${!SPGW_CONF[@]}"; do 
  egrep -lRZ "$K" $PREFIX | xargs -0 -l sed -i -e "s|$K|${SPGW_CONF[$K]}|g"
done

需要配置的地方:
SGW_INTERFACE_NAME_FOR_S11
SGW_IPV4_ADDRESS_FOR_S11
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
PGW_INTERFACE_NAME_FOR_SGI
PGW_IPV4_ADDRESS_FOR_SGI
DEFAULT_DNS_IPV4_ADDRESS
DEFAULT_DNS_SEC_IPV4_ADDRESS

  • 3.3 Run SPGW
sudo ./run_spgw --config-file /usr/local/etc/oai-vepc/spgw1/spgw.conf --sgi-mac-nh 52:54:00:66:21:e2 --set-virt-if

jio本 runEPC.sh

cd ~/openair-cn/scripts
sudo oai_hss -j /usr/local/etc/oai-vepc/hss14/hss_rel14.json   &
sleep 3
sudo ./run_mme --config-file /usr/local/etc/oai-vepc/mme1/mme.conf --set-virt-if   &
sleep 3
sudo ./run_spgw --config-file /usr/local/etc/oai-vepc/spgw1/spgw.conf --sgi-mac-nh 52:54:00:66:21:e2 --set-virt-if 

第四章 eNB

2019.01.08 完成测试


nsac

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BUPTOctopus/article/details/85932474

智能推荐

基于紫光同创FPGA的图像采集及AI加速_《基于紫光同创fpga的图像采集及ai加速》-程序员宅基地

文章浏览阅读1k次。以上为我们的整体设计流程图,我们通过以太网接口、光口、HDMI输入接口以及摄像头接口实现了四路视频采集,其中网口数据是痛过PYTHON上位机传来,光口则是利用光纤回环实现输出,本质上还是通过获取第二个以太网接口的视频数据来实现视频采集输出,对于光口回环,它可以获取摄像头或者时HDMI输入的数据,但会导致视频源重复展示,故使用双网口,并两个网口传输不同视频数据以实现四路不同视频源的识别。右图为MATLAB进行处理后得到的图像,可见实现了图像增强,整体亮度变高,能够更加清晰的看到车辆,为后续识别提供了可能。_《基于紫光同创fpga的图像采集及ai加速》

内省(Inspector)与注解(Annotation)_内省机制-程序员宅基地

文章浏览阅读427次。目录1.内省机制2.内省机制对于属性的操作3.内省属性的注意事项4.注解的功能5.注解声明6.注解修饰目标7.注解生命周期8.注解属性9.注解的使用10.反射对注解的操作1.内省机制 在实际编程中,我们常常需要一些用来包装值对象的类,例如Student、Employee、Order,这些类中往往没有业务方法,只是为了把需要处理的实体对象进行封装,有这样的特征: 属性都是私有的; 有无参的public构造方法; 对_内省机制

Windows 10_x64 PL/SQL 链接64位 Oracle_oraclexe112_win64.zip 云盘-程序员宅基地

文章浏览阅读1.3k次。环境:Windows 10_x64 Oracle11.2XE win_x64PL/SQL Developer 32位过程:1. 首先是Oracle 数据库下载、安装(对于简易版安装,注意记住起始安装的密码,其他的东西基本上下一步下一步就行了)。安装完成后可以在菜单中查找到(运行SQL命令)启动该程序后。登陆前记得使用conn命令。链接数据库。如果需要_oraclexe112_win64.zip 云盘

nokia c503_nokiac503密码可以设置几位-程序员宅基地

文章浏览阅读949次。ovi定位问题:设置--->手机---> 应用程序设置 ---> 定位 定位方法(勾选辅助GPS,集成GPS)定位服务器(自动,接入点CMNET,地址:supl.nokia.com)_nokiac503密码可以设置几位

怎样才能写好项目文档_项目文档怎么写-程序员宅基地

文章浏览阅读1.6k次。怎样才能写好项目文档_项目文档怎么写

电脑计算机简单密码设置方法,电脑开机密码怎么设置,开机密码设置很简单!-程序员宅基地

文章浏览阅读6.4k次。电脑开机密码就像我们手机锁屏密码一样,都是想要自己私密的空间不被侵犯。很多小伙伴的手机都有这是锁屏密码,那么电脑开机密码又是如何设置的呢?如果你不知道如何设置,下面一起看下小编设置电脑开机密码的步骤吧。随着科技的高速发展,电脑隐私成为了我们一个重要的话题点,对于个人隐私内容都不想让同事还是朋友知道,所以往往我们喜欢给电脑设置开机密码。下面小编教你如何设置电脑开机密码,希望能帮助您保护到个人电脑的隐..._开机密码怎么设置电脑开机密码

随便推点

【PTA-python】第4章-15 换硬币 (20 分)_pta换硬币python-程序员宅基地

文章浏览阅读1.3k次。第4章-15 换硬币分析题目解法分析为了实现各个硬币数目>=1,range()函数设定倒序范围,先求五分硬币数目,再求二分硬币数目,最后求一分硬币数目,注意在往下递推求解的过程中,各个硬币数目的条件是>=1,这影响到range(five,0,-1)和if one>=1:题目将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序_pta换硬币python

firewall限制或开放IP及端口命令_firewall-cmd --zone=public --list-ports-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏23次。一、查看防火墙状态1、首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启systemctl status firewalld开启防火墙并设置开机自启systemctl start firewalldsystemctl enable firewalld一般需要重启一下机器,不然后面做的设置可能不会生效二、开放或限制端口1、开放端口(1)如我们需要开启XShell连接时需要使用的22端口firewall-cmd --zone=public --add-port=22/tcp _firewall-cmd --zone=public --list-ports

北京交通大学-图像处理与机器学习_北京交通大学图像处理与机器视觉实验代码-程序员宅基地

文章浏览阅读6.7k次,点赞10次,收藏73次。日期项目2022/03/04更新实验环境配置视频P6,第八章后所有内容已同步更新!名称项目课程主页图像处理与机器学习B站主页啥都会一点的研究生课程B站视频【北交】图像处理与机器学习人工智能技术探讨群178174903人工智能技术探讨群2571218304人工智能技术探讨群3584723646课程目录及资料(UP已打包整理支持直链下载)章节内容资料第一章 绪论1-1 基本._北京交通大学图像处理与机器视觉实验代码

本科生如何入门GNSS算法(二)- rtklib定位解算过程中的GNSS数据格式以及基本概念_gnss 观测文件crx-程序员宅基地

文章浏览阅读4.4k次,点赞9次,收藏61次。rtklib定位解算过程中的GNSS数据格式以及基本概念_gnss 观测文件crx

Java maxchars方法_LearningJDK/CharsetEncoder.java at master · sx2714732/LearningJDK · GitHub-程序员宅基地

文章浏览阅读225次。/** Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.** This code is free software; you can redistribute it an..._learningjdk如何使用

mfc42.dll文件丢失导致程序无法运行问题-程序员宅基地

文章浏览阅读904次,点赞16次,收藏13次。其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mfc42.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现mfc42.dll丢失要怎么解决?