Commit a958c891 authored by wangyongshou's avatar wangyongshou

modify build,config,install,add new_run_upf.sh

parent 6120295b
#!/bin/bash #!/bin/bash
########################### ###########################
#Project name: build_upf.conf #Project name: build_upf.conf
#Author: bupt #Author: bupt
#Date: 2020-07-16 #Date: 2020-07-16
########################### ###########################
current="$PWD" current="$PWD"
base=$(dirname "$PWD") base=$(dirname "$PWD")
VPPPATH="$base/src/vppe" VPPPATH="$base/src/vppe"
...@@ -68,6 +64,7 @@ function config_file(){ ...@@ -68,6 +64,7 @@ function config_file(){
} }
function make_pkg(){ function make_pkg(){
cd $base/install; cd $base/install;
tar -zcvf $UPF_PKG upf/* > /dev/null 2>&1; tar -zcvf $UPF_PKG upf/* > /dev/null 2>&1;
cd .. cd ..
...@@ -97,7 +94,7 @@ function vpp(){ ...@@ -97,7 +94,7 @@ function vpp(){
function make_vpp_package() function make_vpp_package()
{ {
PKG_NAME="buptvppe.tar.gz" VPPE_NAME="bupt_vppe.tar.gz"
#2 steps #2 steps
...@@ -128,23 +125,23 @@ function make_vpp_package() ...@@ -128,23 +125,23 @@ function make_vpp_package()
cd $VPPPATH cd $VPPPATH
#vpp_install,tmp #vpp_install,tmp
mkdir -p vpp_install mkdir -p vppe_install
mv ${BUILD_ROOT}/*.deb vpp_install mv ${BUILD_ROOT}/*.deb vppe_install
sudo tar -zcvf $PKG_NAME vpp_install/*.deb > /dev/null 2>&1; sudo tar -zcvf $VPPE_NAME vppe_install/*.deb > /dev/null 2>&1;
sudo mv $VPPPATH/$PKG_NAME $VPPINSTALL sudo mv $VPPPATH/$VPPE_NAME $VPPINSTALL
if [ -f $UPFINSTALL/pkg/$PKG_NAME ] ; then if [ -f $UPFINSTALL/pkg/$VPPE_NAME ] ; then
rm -f $UPFINSTALL/pkg/$PKG_NAME rm -f $UPFINSTALL/pkg/$VPPE_NAME
fi fi
if [ -d $UPFINSTALL/pkg/vpp_install ] ; then if [ -d $UPFINSTALL/pkg/vppe_install ] ; then
rm -rf $UPFINSTALL/pkg/vpp_install rm -rf $UPFINSTALL/pkg/vppe_install
fi fi
cp -f $VPPINSTALL/$PKG_NAME $UPFINSTALL/pkg cp -f $VPPINSTALL/$VPPE_NAME $UPFINSTALL/pkg
echo "pkg buptvppe.tar.gz" echo "pkg bupt_vppe.tar.gz"
#clear #clear
find $VPPPATH/${BUILD_ROOT}/ -name '*.c' -type f -print -exec rm -rf {} \ > /dev/null 2>&1; find $VPPPATH/${BUILD_ROOT}/ -name '*.c' -type f -print -exec rm -rf {} \ > /dev/null 2>&1;
...@@ -175,7 +172,7 @@ function n4(){ ...@@ -175,7 +172,7 @@ function n4(){
function make_n4_package() function make_n4_package()
{ {
N4_NAME="buptn4.tar.gz" N4_NAME="bupt_n4.tar.gz"
echo "start build 5GN4" echo "start build 5GN4"
cd $N4SRC cd $N4SRC
...@@ -195,7 +192,7 @@ function make_n4_package() ...@@ -195,7 +192,7 @@ function make_n4_package()
rm -rf n4 rm -rf n4
cd .. ; cd .. ;
echo "pkg buptn4.tar.gz finished!!!" echo "pkg bupt_n4.tar.gz finished"
} }
function clear_all() function clear_all()
...@@ -219,7 +216,11 @@ function help() ...@@ -219,7 +216,11 @@ 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 " echo "--c Remove files generated by previous compilation \n"
echo "--all-dp Build n4 and vppe,make pkg"
echo "--vppe-dp Build vppe, make pkg"
echo "--vppe-rp Release vppe, make pkg"
echo "--n4-dp Build n4, make pkg"
} }
function main() { function main() {
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
current="$PWD" current="$PWD"
base=$(dirname "$PWD") base=$(dirname "$PWD")
UPF_CONFIG=/opt/5gc/upf.txt UPF_CONFIG=$base/etc/upf.conf
VPP_CONFIG=/opt/5gc/vppe.conf VPP_CONFIG=$base/etc/vppe.conf
VPP_N4=/opt/5gc/n4_config.yaml VPP_N4=$base/etc/n4_config.yaml
#vpp config #vpp config
UPF_N3_NAME="" UPF_N3_NAME=""
...@@ -47,16 +47,13 @@ function get_inter_ip(){ ...@@ -47,16 +47,13 @@ function get_inter_ip(){
function get_inter_pci() { function get_inter_pci() {
INTER_NAME=$1 INTER_NAME=$1
UPF_INTER_PCI=$(echo `ethtool -i ${INTER_NAME} | grep "bus-info" | awk '{print $2}'`) 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}'`) #UPF_INTER_PCI=$(echo ` ./dpdk-devbind.py --status | grep "if=${INTER_NAME}" | awk '{print $1}'`)
} }
function generate_instance(){ function generate_instance(){
cp -f ./vppe.conf /opt/5gc
cp -f ./n4_config.yaml /opt/5gc
CPUCORES=$(echo `cat /proc/cpuinfo| grep "processor"| wc -l`) CPUCORES=$(echo `cat /proc/cpuinfo| grep "processor"| wc -l`)
UPF_MAINCORE=`expr $CPUCORES - 3` UPF_MAINCORE=`expr $CPUCORES - 3`
...@@ -148,7 +145,7 @@ function read_config() { ...@@ -148,7 +145,7 @@ function read_config() {
function main() { function main() {
if [ ! -f $UPF_CONFIG] ; then if [ ! -f $UPF_CONFIG ] ; then
echo "no exist $UPF_CONFIG" echo "no exist $UPF_CONFIG"
return return
fi fi
......
...@@ -23,37 +23,47 @@ function pre_install() ...@@ -23,37 +23,47 @@ function pre_install()
cp -rf $base/scripts $ROOT_PATH cp -rf $base/scripts $ROOT_PATH
cp -rf $base/etc $ROOT_PATH cp -rf $base/etc $ROOT_PATH
cp -rf $base/tools $ROOT_PATH
#cp -rf $base/tools/ethtool /sbin/
} }
function install_n4() function install_bupt_n4()
{ {
tar -zxvf $base/pkg/buptn4.tar.gz -C $base/pkg > /dev/null 2>&1; #delete n4 process
echo "install bupt_n4 start..."
tar -zxvf $base/pkg/bupt_n4.tar.gz -C $base/pkg > /dev/null 2>&1;
mv $base/pkg/n4/main /$ROOT_PATH/bin ; mv $base/pkg/n4/main /$ROOT_PATH/bin ;
rm -rf $base/pkg/n4 ; rm -rf $base/pkg/n4 ;
rm -rf $base/pkg/bupt_n4.tar.gz;
echo "install bupt_n4 finished"
} }
function install_buptvppe () function install_bupt_vppe ()
{ {
killall vpp_main #delete vppe process
#unpack #unpack
sudo tar -zxvf $base/pkg/buptvppe.tar.gz -C $base/pkg > /dev/null 2>&1; sudo tar -zxvf $base/pkg/bupt_vppe.tar.gz -C $base/pkg > /dev/null 2>&1;
sleep 1; sleep 1;
#install #install
echo "install buptvppe start..." echo "install bupt_vppe start..."
sudo dpkg -i $base/pkg/vpp_install/*.deb > /dev/null 2>&1; sudo dpkg -i $base/pkg/vppe_install/*.deb > /dev/null 2>&1;
sudo systemctl stop vpp; sudo systemctl stop vpp;
sudo systemctl disable vpp; sudo systemctl disable vpp;
#rm install package #rm install package
sudo rm -rf $base/pkg/vpp_install; sudo rm -rf $base/pkg/vppe_install;
sudo rm -rf $base/pkg/buptvppe.tar.gz; sudo rm -rf $base/pkg/bupt_vppe.tar.gz;
cp -f /usr/bin/vpp /$ROOT_PATH/bin; cp -f /usr/bin/vpp /$ROOT_PATH/bin;
sleep 1; sleep 1;
echo "install buptvppe finished!!!" echo "install bupt_vppe finished"
return 0 return 0
} }
...@@ -62,9 +72,9 @@ function help() ...@@ -62,9 +72,9 @@ function help()
{ {
echo "help---" echo "help---"
echo "Usage: install_upf [OPTION]..." echo "Usage: install_upf [OPTION]..."
echo "--all (vpp and n4) install vpp n4" echo "--all pkg(bupt_vppe.tar.gz, bupt_n4.tar.gz) install vppe n4"
echo "--vpp path(buptvpp.tar.gz) install vpp" echo "--vppe pkg(bupt_vppe.tar.gz) install vpp"
echo "--n4 path(main) install N4" echo "--n4 pkg(bupt_n4.tar.gz) install N4"
} }
function main() { function main() {
...@@ -78,18 +88,18 @@ function main() { ...@@ -78,18 +88,18 @@ function main() {
case "$1" in case "$1" in
--all) --all)
pre_install pre_install
install_buptvppe install_bupt_n4
install_n4 install_bupt_vppe
shift shift
;; ;;
--vpp) --vpp)
pre_install pre_install
install_buptvppe install_bupt_vppe
shift shift
;; ;;
--n4) --n4)
pre_install pre_install
install_n4 install_bupt_n4
shift shift
;; ;;
esac esac
......
#!/bin/bash
current="$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=""
VPPPROCESS="vpp"
VPPCMD="/usr/bin/vpp -c /opt/5gc/startup_debug.conf"
N4PROCESS="main"
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_EXPORT_PCI=""
DRIVE=""
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 &
rm -rf $current/yq
}
function start_vpp() {
cmd="$VPPCMD"
install_dpdk_kmod
$base/plugin/interreput -i $CPUNUMBER
echo Y | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
$cmd >/dev/null 2>&1 &
sleep 1s
pid=$(pidof $VPPPROCESS)
if test -z "$pid"; then
echo "vpp startup failed"
else
echo "vpp $pid startup success"
fi
}
function start_n4() {
$N4PATH/main -c /opt/5gc/n4_config.yaml >/dev/null 2>&1 &
sleep 1s
pid2=$(pidof $N4PROCESS)
if test -z "$pid2"; then
echo "n4 startup failed"
else
echo "n4 $pid2 startup success"
fi
exit 0
}
:<<!
function start_arp() {
echo "start arp"
echo "$arp"/setuniarp $INTER $MAC "$UEIP/$PREFIX" $VPPEXPORT
"$arp"/setuniarp $INTER $MAC "$UEIP/$PREFIX" $VPPEXPORT >/dev/null 2>&1 &
sleep 1s
pid2=$(pidof $ARPPROCESS)
if test -z "$pid2"; then
echo "arp startup failed"
else
echo "arp $pid2 startup success"
fi
exit 0
}
!
function close_vpp() {
pid=$(pidof $VPPPROCESS)
if test -z "$pid"; then
echo "vpp $pid is not startup"
else
echo "kill vpp $pid"
kill -9 ${pid}
fi
}
function close_n4() {
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)
if test -z "$pid"; then
echo "arp $pid is not startup"
else
echo "kill arp $pid"
kill -9 ${pid}
fi
}
!
function install_dpdk_kmod() {
sudo modprobe vfio-pci;
insmod_result=$?
exec_result $insmod_result
return 0;
}
function exec_result()
{
if [ $1 -ne 0 ]; then
echo "insmod vfio-pci.ko false"
fi
echo "insmod vfio-pci.ko success!!!"
}
function help()
{
echo " "
echo "Usage: build_upf [OPTION]..."
echo "--start Start UPF"
echo "--close Close UPF"
}
function install_depence(){
cp $base/plugin/yq $current > /dev/null 2>&1
cp $base/plugin/replace/replace $current > /dev/null 2>&1
}
function unbind(){
python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI ;
python3 $current/dpdk-devbind.py -u 0000:$DPDK_EXPORT_PCI;
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
}
function main() {
install_depence
if [ $# -eq 0 ];
then
help
exit
fi
until [ -z "$1" ]; do
case "$1" in
-o)
init_configure $2
start_vpp
sleep 20s
start_n4
shift
;;
--close)
close_vpp
close_n4
shift
;;
esac
done
return 0
}
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