Commit a958c891 authored by wangyongshou's avatar wangyongshou

modify build,config,install,add new_run_upf.sh

parent 6120295b
#!/bin/bash
###########################
#Project name: build_upf.conf
#Author: bupt
#Date: 2020-07-16
###########################
current="$PWD"
base=$(dirname "$PWD")
VPPPATH="$base/src/vppe"
......@@ -68,6 +64,7 @@ function config_file(){
}
function make_pkg(){
cd $base/install;
tar -zcvf $UPF_PKG upf/* > /dev/null 2>&1;
cd ..
......@@ -97,7 +94,7 @@ function vpp(){
function make_vpp_package()
{
PKG_NAME="buptvppe.tar.gz"
VPPE_NAME="bupt_vppe.tar.gz"
#2 steps
......@@ -128,23 +125,23 @@ function make_vpp_package()
cd $VPPPATH
#vpp_install,tmp
mkdir -p vpp_install
mv ${BUILD_ROOT}/*.deb vpp_install
sudo tar -zcvf $PKG_NAME vpp_install/*.deb > /dev/null 2>&1;
mkdir -p vppe_install
mv ${BUILD_ROOT}/*.deb vppe_install
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
rm -f $UPFINSTALL/pkg/$PKG_NAME
if [ -f $UPFINSTALL/pkg/$VPPE_NAME ] ; then
rm -f $UPFINSTALL/pkg/$VPPE_NAME
fi
if [ -d $UPFINSTALL/pkg/vpp_install ] ; then
rm -rf $UPFINSTALL/pkg/vpp_install
if [ -d $UPFINSTALL/pkg/vppe_install ] ; then
rm -rf $UPFINSTALL/pkg/vppe_install
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
find $VPPPATH/${BUILD_ROOT}/ -name '*.c' -type f -print -exec rm -rf {} \ > /dev/null 2>&1;
......@@ -175,7 +172,7 @@ function n4(){
function make_n4_package()
{
N4_NAME="buptn4.tar.gz"
N4_NAME="bupt_n4.tar.gz"
echo "start build 5GN4"
cd $N4SRC
......@@ -195,7 +192,7 @@ function make_n4_package()
rm -rf n4
cd .. ;
echo "pkg buptn4.tar.gz finished!!!"
echo "pkg bupt_n4.tar.gz finished"
}
function clear_all()
......@@ -219,7 +216,11 @@ function help()
echo "--pre_install Pre-installation of dependencies required by UPF"
echo "--vpp Build vpp"
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() {
......
......@@ -11,9 +11,9 @@
current="$PWD"
base=$(dirname "$PWD")
UPF_CONFIG=/opt/5gc/upf.txt
VPP_CONFIG=/opt/5gc/vppe.conf
VPP_N4=/opt/5gc/n4_config.yaml
UPF_CONFIG=$base/etc/upf.conf
VPP_CONFIG=$base/etc/vppe.conf
VPP_N4=$base/etc/n4_config.yaml
#vpp config
UPF_N3_NAME=""
......@@ -47,16 +47,13 @@ function get_inter_ip(){
function get_inter_pci() {
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}'`)
}
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`)
UPF_MAINCORE=`expr $CPUCORES - 3`
......@@ -148,7 +145,7 @@ function read_config() {
function main() {
if [ ! -f $UPF_CONFIG] ; then
if [ ! -f $UPF_CONFIG ] ; then
echo "no exist $UPF_CONFIG"
return
fi
......
......@@ -23,37 +23,47 @@ function pre_install()
cp -rf $base/scripts $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 ;
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
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;
#install
echo "install buptvppe start..."
sudo dpkg -i $base/pkg/vpp_install/*.deb > /dev/null 2>&1;
echo "install bupt_vppe start..."
sudo dpkg -i $base/pkg/vppe_install/*.deb > /dev/null 2>&1;
sudo systemctl stop vpp;
sudo systemctl disable vpp;
#rm install package
sudo rm -rf $base/pkg/vpp_install;
sudo rm -rf $base/pkg/buptvppe.tar.gz;
sudo rm -rf $base/pkg/vppe_install;
sudo rm -rf $base/pkg/bupt_vppe.tar.gz;
cp -f /usr/bin/vpp /$ROOT_PATH/bin;
sleep 1;
echo "install buptvppe finished!!!"
echo "install bupt_vppe finished"
return 0
}
......@@ -62,9 +72,9 @@ function help()
{
echo "help---"
echo "Usage: install_upf [OPTION]..."
echo "--all (vpp and n4) install vpp n4"
echo "--vpp path(buptvpp.tar.gz) install vpp"
echo "--n4 path(main) install N4"
echo "--all pkg(bupt_vppe.tar.gz, bupt_n4.tar.gz) install vppe n4"
echo "--vppe pkg(bupt_vppe.tar.gz) install vpp"
echo "--n4 pkg(bupt_n4.tar.gz) install N4"
}
function main() {
......@@ -78,18 +88,18 @@ function main() {
case "$1" in
--all)
pre_install
install_buptvppe
install_n4
install_bupt_n4
install_bupt_vppe
shift
;;
--vpp)
pre_install
install_buptvppe
install_bupt_vppe
shift
;;
--n4)
pre_install
install_n4
install_bupt_n4
shift
;;
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