Commit 3e69b6db authored by wangyongshou's avatar wangyongshou

add run upf function

parent a958c891
unix { unix {
nodaemon #nodaemon
log /var/log/upf/vpp/vpp.log log /var/log/upf/vpp/vpp.log
full-coredump full-coredump
interactive #interactive
gid vpp gid vpp
cli-listen /run/vpp/cli.sock cli-listen /run/vpp/cli.sock
logsize 100 logsize 100
......
...@@ -50,9 +50,9 @@ function pre_create(){ ...@@ -50,9 +50,9 @@ function pre_create(){
function config_file(){ function config_file(){
#scripts #scripts
cp -f $current/config_upf.sh $UPFINSTALL/scripts cp -f $current/dpdk-devbind.py $UPFINSTALL/scripts
cp -f $current/install_upf.sh $UPFINSTALL/scripts cp -f $current/install_upf.sh $UPFINSTALL/scripts
cp -f $current/run_upf.sh $UPFINSTALL/scripts cp -f $current/new_run_upf.sh $UPFINSTALL/scripts
#etc #etc
cp -f $configure/template/n4_config.yaml $UPFINSTALL/etc cp -f $configure/template/n4_config.yaml $UPFINSTALL/etc
...@@ -61,6 +61,7 @@ function config_file(){ ...@@ -61,6 +61,7 @@ function config_file(){
#tools #tools
cp -f /sbin/ethtool $UPFINSTALL/tools cp -f /sbin/ethtool $UPFINSTALL/tools
cp -f $base/plugin/interreput $UPFINSTALL/tools
} }
function make_pkg(){ function make_pkg(){
...@@ -216,8 +217,8 @@ function help() ...@@ -216,8 +217,8 @@ function help()
echo "--pre_install Pre-installation of dependencies required by UPF" echo "--pre_install Pre-installation of dependencies required by UPF"
echo "--vpp Build vpp" echo "--vpp Build vpp"
echo "--n4 Build N4" echo "--n4 Build N4"
echo "--c Remove files generated by previous compilation \n" echo "--c Remove files generated by previous compilation"
echo "--all-dp Build n4 and vppe,make pkg" echo "--upf-dp Build n4 and vppe,make pkg"
echo "--vppe-dp Build vppe, make pkg" echo "--vppe-dp Build vppe, make pkg"
echo "--vppe-rp Release vppe, make pkg" echo "--vppe-rp Release vppe, make pkg"
echo "--n4-dp Build n4, make pkg" echo "--n4-dp Build n4, make pkg"
...@@ -247,7 +248,7 @@ function main() { ...@@ -247,7 +248,7 @@ function main() {
vpp vpp
shift shift
;; ;;
--all-dp) --upf-dp)
pre_create pre_create
config_file config_file
make_n4_package make_n4_package
...@@ -255,13 +256,13 @@ function main() { ...@@ -255,13 +256,13 @@ function main() {
make_pkg make_pkg
shift; shift;
;; ;;
--vpp-dp | --vpp-debug-pkg) --vppe-dp | --vpp-debug-pkg)
pre_create pre_create
config_file config_file
make_vpp_package debug make_vpp_package debug
shift; shift;
;; ;;
--vpp-rp | --vpp-release-pkg) --vppe-rp | --vpp-release-pkg)
pre_create pre_create
config_file config_file
make_vpp_package release make_vpp_package release
...@@ -281,6 +282,12 @@ function main() { ...@@ -281,6 +282,12 @@ function main() {
clear_all clear_all
shift shift
;; ;;
*)
help
exit 0
shift
;;
esac esac
done done
exit 0 exit 0
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
current="$PWD" current="$PWD"
base=$(dirname "$PWD") base=$(dirname "$PWD")
ROOT_PATH=/opt/5gc/test ROOT_PATH=/opt/5gc/test
VPP_PRO="vpp"
N4_PRO="main"
function pre_install() function pre_install()
{ {
if [ ! -d $ROOT_PATH ] ; then if [ ! -d $ROOT_PATH ] ; then
...@@ -68,11 +69,31 @@ function install_bupt_vppe () ...@@ -68,11 +69,31 @@ function install_bupt_vppe ()
return 0 return 0
} }
function close_upf()
{
pid=$(pidof $VPP_PRO)
if test -z "$pid"; then
echo "vpp $pid is not startup"
else
echo "kill vpp $pid"
kill -9 ${pid}
fi
pid=$(pidof $N4_PRO)
if test -z "$pid"; then
echo "n4 $pid is not startup"
else
echo "kill n4 $pid"
kill -9 ${pid}
fi
}
function help() function help()
{ {
echo "help---" echo "help---"
echo "Usage: install_upf [OPTION]..." echo "Usage: install_upf [OPTION]..."
echo "--all pkg(bupt_vppe.tar.gz, bupt_n4.tar.gz) install vppe n4" echo "--upf pkg(bupt_vppe.tar.gz, bupt_n4.tar.gz) install vppe n4"
echo "--vppe pkg(bupt_vppe.tar.gz) install vpp" echo "--vppe pkg(bupt_vppe.tar.gz) install vpp"
echo "--n4 pkg(bupt_n4.tar.gz) install N4" echo "--n4 pkg(bupt_n4.tar.gz) install N4"
} }
...@@ -86,22 +107,30 @@ function main() { ...@@ -86,22 +107,30 @@ function main() {
until [ -z "$1" ]; do until [ -z "$1" ]; do
case "$1" in case "$1" in
--all) --upf)
pre_install pre_install
close_upf
install_bupt_n4 install_bupt_n4
install_bupt_vppe install_bupt_vppe
shift shift
;; ;;
--vpp) --vpp)
pre_install pre_install
close_upf
install_bupt_vppe install_bupt_vppe
shift shift
;; ;;
--n4) --n4)
pre_install pre_install
close_upf
install_bupt_n4 install_bupt_n4
shift shift
;; ;;
*)
help
exit 0
;;
esac esac
done done
exit 0 exit 0
......
#!/bin/bash #!/bin/bash
current="$PWD" current="$PWD"
base=$(dirname "$PWD") base=$(dirname "$PWD")
VPPPATH="$base/src/vppe"
VPPINSTALL="$base/upf/vpp"
BUILD_ROOT="build-root"
configure="$base/etc"
arp="$base/src/setuniarp"
config_system="" #UPF_CONFIG=$base/etc/upf.conf
VPPPROCESS="vpp" VPPPROCESS="vpp"
VPPCMD="/usr/bin/vpp -c /opt/5gc/startup_debug.conf"
N4PROCESS="main" N4PROCESS="main"
N4PATH="$base/install/n4" N4PATH="$base/install/n4"
UEIP=""
PREFIX=""
INTER=""
MAC=""
VPPEXPORT=""
ARPPROCESS="setuniarp"
UE_IP=""
UE_IP_PREFIX=""
SNAT_INTER=""
SNAT_IP=""
VPPHOST=""
DPDK_EXPORT=""
DPDK_ENTRY=""
N3_GW=""
DPDK_ENTRY_PCI="" DPDK_ENTRY_PCI=""
DPDK_EXPORT_PCI="" DPDK_EXPORT_PCI=""
DRIVE="" DRIVE=""
CPUNUMBER="" CPUNUMBER=""
function init_configure(){
yaml="$1"
# vpp
mkdir -p /opt/5gc
cp -r $configure/template /opt/5gc
$base/plugin/configure -i $yaml -o /opt/5gc
cp $base/plugin/yq $current
# nat
SNAT_IP=$($current/yq r $yaml vpp.ip_link.snatIP)
N3_GW_IP=$($current/yq r $yaml vpp.ip_link.N3_GW)
VPPHOST=$($current/yq r $yaml vpp.ip_link.vppHost)
DPDK_EXPORT=$($current/yq r $yaml vpp.ip_link.gtpu_export)
DPDK_ENTRY=$($current/yq r $yaml vpp.ip_link.gtpu_entry)
CPUNUMBER=$($current/yq r $yaml vpp.ip_link.cpu)
sed 's/@N3_GW@/${N3_GW_IP}/' /opt/5gc/startup_debug.conf >/dev/null 2>&1 & UPF_CONFIG=$base/etc/upf.conf
VPP_CONFIG=$base/etc/vppe.conf
VPP_N4=$base/etc/n4_config.yaml
#vpp config
UPF_N3_NAME=""
UPF_N6_NAME=""
UPF_N3_IP=""
UPF_N6_IP=""
UPF_N3_PCI=""
UPF_N6_PCI=""
UPF_N3_GW=""
UPF_N6_GW=""
UPF_CPU=""
UPF_MAINCORE=""
UPF_WORKERCORE=""
#u4 config
UPF_N4_GNB=""
UPF_N4_SMF=""
UPF_N4_UPF=""
UPF_N4_LOGSIZE=""
UPF_INTER_IP=""
UPF_INTER_PCI=""
function start_vppe()
{
#cmd="$VPPCMD"
install_dpdk_kmod
#$base/tools/interreput -i $CPUNUMBER
rm -rf $current/yq echo Y | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
}
function start_vpp() { #$cmd >/dev/null 2>&1 &
$base/bin/vpp -c $base/etc/vppe.conf >/dev/null 2>&1 ;
cmd="$VPPCMD" sleep 1s
install_dpdk_kmod pid=$(pidof $VPPPROCESS)
$base/plugin/interreput -i $CPUNUMBER if test -z "$pid"; then
echo Y | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode echo "vpp startup failed"
$cmd >/dev/null 2>&1 & else
sleep 1s echo "vpp $pid startup success"
pid=$(pidof $VPPPROCESS) fi
if test -z "$pid"; then
echo "vpp startup failed"
else
echo "vpp $pid startup success"
fi
} }
function start_n4() { function start_n4()
{
#$N4PATH/main -c /opt/5gc/n4_config.yaml >/dev/null 2>&1 &
$N4PATH/main -c /opt/5gc/n4_config.yaml >/dev/null 2>&1 & $base/bin/main -c $base/etc/n4_config.yaml & >/dev/null 2>&1 ;
sleep 1s
pid2=$(pidof $N4PROCESS) sleep 1s
if test -z "$pid2"; then pid2=$(pidof $N4PROCESS)
echo "n4 startup failed"
else if test -z "$pid2"; then
echo "n4 $pid2 startup success" echo "n4 startup failed"
fi else
exit 0 echo "n4 $pid2 startup success"
fi
exit 0
} }
:<<! function close_upf()
function start_arp() { {
pid=$(pidof $VPPPROCESS)
if test -z "$pid"; then
echo "vpp $pid is not startup"
else
echo "kill vpp $pid"
kill -9 ${pid}
fi
pid=$(pidof $N4PROCESS)
if test -z "$pid"; then
echo "n4 $pid is not startup"
else
echo "kill n4 $pid"
kill -9 ${pid}
fi
}
echo "start arp" function close_vppe()
{
echo "$arp"/setuniarp $INTER $MAC "$UEIP/$PREFIX" $VPPEXPORT pid=$(pidof $VPPPROCESS)
"$arp"/setuniarp $INTER $MAC "$UEIP/$PREFIX" $VPPEXPORT >/dev/null 2>&1 & if test -z "$pid"; then
echo "vpp $pid is not startup"
else
echo "kill vpp $pid"
kill -9 ${pid}
fi
}
sleep 1s function close_n4()
pid2=$(pidof $ARPPROCESS) {
if test -z "$pid2"; then
echo "arp startup failed" pid=$(pidof $N4PROCESS)
else if test -z "$pid"; then
echo "arp $pid2 startup success" echo "n4 $pid is not startup"
fi else
exit 0 echo "kill n4 $pid"
kill -9 ${pid}
fi
exit 0
} }
!
function close_vpp() { function install_dpdk_kmod()
{
sudo modprobe vfio-pci;
insmod_result=$?
exec_result $insmod_result
pid=$(pidof $VPPPROCESS) return 0;
if test -z "$pid"; then
echo "vpp $pid is not startup"
else
echo "kill vpp $pid"
kill -9 ${pid}
fi
} }
function exec_result()
{
if [ $1 -ne 0 ]; then
echo "insmod vfio-pci.ko false"
fi
function close_n4() { echo "insmod vfio-pci.ko success!!!"
pid=$(pidof $N4PROCESS)
if test -z "$pid"; then
echo "n4 $pid is not startup"
else
echo "kill n4 $pid"
kill -9 ${pid}
fi
exit 0
} }
:<<!
function close_arp() {
pid=$(pidof $ARPPROCESS) function install_deps()
if test -z "$pid"; then {
echo "arp $pid is not startup"
else echo "install deps"
echo "kill arp $pid"
kill -9 ${pid}
fi
} }
! function unbind()
function install_dpdk_kmod() { {
sudo modprobe vfio-pci;
insmod_result=$? python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI ;
python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI;
exec_result $insmod_result python3 $current/dpdk-devbind.py -b $DRIVE $DPDK_EXPORT_PCI
sleep 1
python3 $current/dpdk-devbind.py -b $DRIVE $DPDK_EXPORT_PCI
sleep 1
ifconfig $DPDK_EXPORT down;
sleep 1
ifconfig $DPDK_ENTRY down;
sleep 1
return 0;
} }
function exec_result() function get_inter_ip()
{ {
if [ $1 -ne 0 ]; then INTER_NAME=$1
echo "insmod vfio-pci.ko false" #RES=$(echo "ifconfig $INTER_NAME |grep inet| sed -n '1p'|awk '{print $2}'")
fi UPF_INTER_IP=$(echo `ifconfig ${INTER_NAME} | grep inet | sed -n '1p' | awk '{print $2}'`)
}
echo "insmod vfio-pci.ko success!!!" function get_inter_pci()
{
INTER_NAME=$1
UPF_INTER_PCI=$(echo `$base/tools/ethtool -i ${INTER_NAME} | grep "bus-info" | awk '{print $2}'`)
#UPF_INTER_PCI=$(echo ` ./dpdk-devbind.py --status | grep "if=${INTER_NAME}" | awk '{print $1}'`)
}
function generate_instance()
{
CPUCORES=$(echo `cat /proc/cpuinfo| grep "processor"| wc -l`)
UPF_MAINCORE=`expr $CPUCORES - 3`
workerc1=`expr $CPUCORES - 2`
workerc2=`expr $CPUCORES - 1`
UPF_WORKERCORE="$workerc1,$workerc2"
#vpp config
sed -i s/@MAINCORE@/${UPF_MAINCORE}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@WORKERCORE@/${UPF_WORKERCORE}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N3_PCI@/${UPF_N3_PCI}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N6_PCI@/${UPF_N6_PCI}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N3_IP@/${UPF_N3_IP}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N6_IP@/${UPF_N6_IP}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N3_GW@/${UPF_N3_GW}/ $VPP_CONFIG > /dev/null 2>&1;
sed -i s/@N6_GW@/${UPF_N6_GW}/ $VPP_CONFIG > /dev/null 2>&1;
#n4 config
sed -i s/@gnb@/${UPF_N4_GNB}/ $VPP_N4 > /dev/null 2>&1;
sed -i s/@smf@/${UPF_N4_SMF}/ $VPP_N4 > /dev/null 2>&1;
sed -i s/@upf@/${UPF_N4_UPF}/ $VPP_N4 > /dev/null 2>&1;
sed -i s/@logSize@/${UPF_N4_LOGSIZE}/ $VPP_N4 > /dev/null 2>&1;
echo ""
echo "/opt/5gc/vppe.conf"
echo "/opt/5gc/n4_config.yaml"
}
#read upf.txt
function read_config() {
while read line
do
eval "$line"
done < $UPF_CONFIG
echo "vpp config"
UPF_N3_NAME=$vpp_n3_name
echo "vpp_n3_name:$UPF_N3_NAME"
UPF_N6_NAME=$vpp_n6_name
echo "vpp_n6_name:$UPF_N6_NAME"
UPF_N3_IP=$vpp_n3_ip
echo "UPF_N3_IP:$UPF_N3_IP"
UPF_N6_IP=$vpp_n6_ip
echo "UPF_N6_IP:$UPF_N6_IP"
UPF_N3_GW=$vpp_n3_gw
echo "UPF_N3_GW:$UPF_N3_GW"
UPF_N6_GW=$vpp_n6_gw
echo "UPF_N6_GW:$UPF_N6_GW"
UPF_CPU=$vpp_cpu
echo "vpp_cpu:$UPF_CPU"
get_inter_pci $UPF_N3_NAME
UPF_N3_PCI=$UPF_INTER_PCI
echo "UPF_N3_PCI:$UPF_N3_PCI"
UPF_INTER_PCI=""
get_inter_pci $UPF_N6_NAME
UPF_N6_PCI=$UPF_INTER_PCI
echo "UPF_N6_PCI:$UPF_N6_PCI"
echo ""
echo "n4 config"
UPF_N4_GNB=$n4_gnb
echo "UPF_N4_GNB:$UPF_N4_GNB"
UPF_N4_SMF=$n4_smf
echo "UPF_N4_SMF:$UPF_N4_SMF"
UPF_N4_UPF=$n4_upf
echo "UPF_N4_UPF:$UPF_N4_UPF"
UPF_N4_LOGSIZE=$n4_logSize
echo "UPF_N4_LOGSIZE:$UPF_N4_LOGSIZE"
}
function config_upf()
{
read_config
generate_instance
} }
function help() function help()
{ {
echo " " echo "help---"
echo "Usage: build_upf [OPTION]..." echo "Usage: run_upf [OPTION]..."
echo "--start Start UPF" echo "--start-upf start UPF(n4 and vppe)"
echo "--close Close UPF" echo "--close-upf close UPF(n4 and vppe)"
} }
function install_depence(){
cp $base/plugin/yq $current > /dev/null 2>&1 function main()
cp $base/plugin/replace/replace $current > /dev/null 2>&1 {
} if [ ! -f $UPF_CONFIG ] ; then
echo "no exist $UPF_CONFIG"
function unbind(){ return
python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI ; fi
python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI; install_deps
python3 $current/dpdk-devbind.py -b $DRIVE $DPDK_EXPORT_PCI if [ $# -eq 0 ];
sleep 1 then
python3 $current/dpdk-devbind.py -b $DRIVE $DPDK_EXPORT_PCI help
sleep 1 exit
fi
ifconfig $DPDK_EXPORT down;
sleep 1 until [ -z "$1" ]; do
ifconfig $DPDK_ENTRY down; case "$1" in
sleep 1 --start-upf)
} config_upf
#close vppe, n4 process
function main() { close_upf
install_depence #start vppe, n4 process
start_vppe
if [ $# -eq 0 ]; sleep 20s
then start_n4
help
exit shift
fi ;;
--close-upf)
until [ -z "$1" ]; do #close vppe, n4 process
case "$1" in close_vppe
-o) close_n4
init_configure $2 shift
start_vpp ;;
sleep 20s
start_n4 *)
shift help
;; exit 0
--close) shift
close_vpp ;;
close_n4 esac
shift done
;; return 0
esac
done
return 0
} }
main "$@" main "$@"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment