技术标签: 研一
此版本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
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:
git clone https://github.com/OPENAIRINTERFACE/openair-cn.git
cd openair-cn
git checkout develop
cd ~/openair-cn/scripts
./build_cassandra --check-installed-software --force
验证Cassandra是否已安装并正在运行
nodetool status
在修改配置之前,停止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
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
结果:
如果有这种报错:
则需要修改一下cassandra配置
cqlsh
describe keyspaces;
use vhss;
describe tables;
ALTER KEYSPACE vhss WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1 };
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
sudo oai_hss -j /usr/local/etc/oai-vepc/hss14/hss_rel14.json
sudo ./build_mme --check-installed-software --force
sudo ./build_mme --clean
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
sudo ./run_mme --config-file /usr/local/etc/oai-vepc/mme1/mme.conf --set-virt-if
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
例:
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
# cd ~/openair-cn/scripts
sudo ./build_spgw --check-installed-software --force
sudo ./build_spgw --clean
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
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
4.1 eNB搭建:
https://blog.csdn.net/BUPTOctopus/article/details/81561607
4.2
配置文件里MNC MCC 改成核心网里配置的,然后TAC改成核心网中配置的,例如MCC MNC 为208 93 TAC为600或601或602。
2019.01.08 完成测试
文章浏览阅读1k次。以上为我们的整体设计流程图,我们通过以太网接口、光口、HDMI输入接口以及摄像头接口实现了四路视频采集,其中网口数据是痛过PYTHON上位机传来,光口则是利用光纤回环实现输出,本质上还是通过获取第二个以太网接口的视频数据来实现视频采集输出,对于光口回环,它可以获取摄像头或者时HDMI输入的数据,但会导致视频源重复展示,故使用双网口,并两个网口传输不同视频数据以实现四路不同视频源的识别。右图为MATLAB进行处理后得到的图像,可见实现了图像增强,整体亮度变高,能够更加清晰的看到车辆,为后续识别提供了可能。_《基于紫光同创fpga的图像采集及ai加速》
文章浏览阅读427次。目录1.内省机制2.内省机制对于属性的操作3.内省属性的注意事项4.注解的功能5.注解声明6.注解修饰目标7.注解生命周期8.注解属性9.注解的使用10.反射对注解的操作1.内省机制 在实际编程中,我们常常需要一些用来包装值对象的类,例如Student、Employee、Order,这些类中往往没有业务方法,只是为了把需要处理的实体对象进行封装,有这样的特征: 属性都是私有的; 有无参的public构造方法; 对_内省机制
文章浏览阅读1.3k次。环境:Windows 10_x64 Oracle11.2XE win_x64PL/SQL Developer 32位过程:1. 首先是Oracle 数据库下载、安装(对于简易版安装,注意记住起始安装的密码,其他的东西基本上下一步下一步就行了)。安装完成后可以在菜单中查找到(运行SQL命令)启动该程序后。登陆前记得使用conn命令。链接数据库。如果需要_oraclexe112_win64.zip 云盘
文章浏览阅读949次。ovi定位问题:设置--->手机---> 应用程序设置 ---> 定位 定位方法(勾选辅助GPS,集成GPS)定位服务器(自动,接入点CMNET,地址:supl.nokia.com)_nokiac503密码可以设置几位
文章浏览阅读1.6k次。怎样才能写好项目文档_项目文档怎么写
文章浏览阅读6.4k次。电脑开机密码就像我们手机锁屏密码一样,都是想要自己私密的空间不被侵犯。很多小伙伴的手机都有这是锁屏密码,那么电脑开机密码又是如何设置的呢?如果你不知道如何设置,下面一起看下小编设置电脑开机密码的步骤吧。随着科技的高速发展,电脑隐私成为了我们一个重要的话题点,对于个人隐私内容都不想让同事还是朋友知道,所以往往我们喜欢给电脑设置开机密码。下面小编教你如何设置电脑开机密码,希望能帮助您保护到个人电脑的隐..._开机密码怎么设置电脑开机密码
文章浏览阅读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
文章浏览阅读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 基本._北京交通大学图像处理与机器视觉实验代码
文章浏览阅读4.4k次,点赞9次,收藏61次。rtklib定位解算过程中的GNSS数据格式以及基本概念_gnss 观测文件crx
文章浏览阅读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如何使用
文章浏览阅读904次,点赞16次,收藏13次。其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mfc42.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现mfc42.dll丢失要怎么解决?