Commit aa2e7616 authored by liuyu's avatar liuyu

one ue one amf_ue_ngap_id and random amf_ue_ngap_id,one ue statelessok,but tu...

one ue one amf_ue_ngap_id and random amf_ue_ngap_id,one ue statelessok,but tu use(one cpe,one ueransim) is fault,because udsf is down
parent b7ad7e84
......@@ -43,7 +43,7 @@
#include "amf_n2.hpp"
#include "amf_statistics.hpp"
#include "ngap_app.hpp"
#include <time.h>
using namespace ngap;
using namespace nas;
//using namespace amf ;
......@@ -154,7 +154,9 @@ void amf_app_task(void*) {
//------------------------------------------------------------------------------
long amf_app::generate_amf_ue_ngap_id() {
long tmp = 0;
tmp = __sync_fetch_and_add(&amf_app_ue_ngap_id_generator, 1);
// tmp = __sync_fetch_and_add(&amf_app_ue_ngap_id_generator, 1);
srand(time(NULL));
tmp = rand()%10000 + 1;
return tmp & 0xffffffffff;
}
......@@ -332,7 +334,7 @@ void amf_app::handle_itti_message(
/********************** hxs add *******************************/
std::string record_id = "RECORD_ID=\'" + ue_context_key + "\'";
std::string record_id = "amf_ue_ngap_id=\'" + to_string(amf_ue_ngap_id) + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("ue_context/records/") + record_id ;
nlohmann::json udsf_ue_context;
nlohmann::json cgi;
......
......@@ -239,10 +239,6 @@ void amf_n1::handle_itti_message(itti_uplink_nas_data_ind &nas_data_ind) {
if (is_guti_2_nas_context(guti))
{
is_guti_2_nas_context_in_udsf(guti);
printf("--------service -8---\n");
nc = guti_2_nas_context_in_udsf(guti);
nc = guti_2_nas_context(guti);
}
else if(is_guti_2_nas_context_in_udsf(guti))
......
......@@ -167,8 +167,25 @@ void amf_n11::handle_itti_message(
std::shared_ptr<pdu_session_context> psc = std::shared_ptr<pdu_session_context>(new pdu_session_context());
//***************************stateless
nlohmann::json udsf_response;
std::string record_id = "pdu_session_id=\'" + to_string(itti_msg.pdu_session_id) + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + record_id ;
std::shared_ptr<nas_context> nc = std::shared_ptr<nas_context>(new nas_context());
std::string record_id_nas = "amf_ue_ngap_id=\'" + to_string(itti_msg.amf_ue_ngap_id) + "\'";
std::string udsf_url_nas = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("nas_context/records/") +record_id_nas ;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url_nas,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return ;
}
else{
Logger::amf_n2().debug("udsf_response: %s", udsf_response.dump().c_str());
nc.get()->nas_context_from_json(udsf_response);
}
std::string supi ="imsi-" + nc.get()->imsi ;
Logger::amf_n11().debug(
"Send PDU Session Update SM Context Request to SMF (SUPI %s, PDU Session "
"ID %d)",
supi.c_str(), itti_msg.pdu_session_id);
std::string record_id = "RECORD_ID=\'" +supi + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + record_id;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return ;
......@@ -182,12 +199,8 @@ void amf_n11::handle_itti_message(
// if (amf_n1_inst->is_amf_ue_id_2_nas_context_in_udsf(psc.get()->amf_ue_ngap_id))
// nc = amf_n1_inst->amf_ue_id_2_nas_context_in_udsf(psc.get()->amf_ue_ngap_id);
std::string supi =psc.get()->supi;
Logger::amf_n11().debug(
"Send PDU Session Update SM Context Request to SMF (SUPI %s, PDU Session "
"ID %d)",
supi.c_str(), itti_msg.pdu_session_id);
//***************************stateless
// if (is_supi_to_pdu_ctx(supi)) {
......@@ -256,7 +269,7 @@ void amf_n11::handle_itti_message(itti_smf_services_consumer& smf) {
std::string record_id = "RECORD_ID=\'" +supi + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + record_id;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response) || udsf_response == nullptr){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
psc = std::shared_ptr<pdu_session_context>(new pdu_session_context());
}
......
......@@ -576,7 +576,8 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
//get gnb_context from udsf.200 ok gnb_context is exist
gnb_context *gc1 = new gnb_context();
nlohmann::json udsf_response;
std::string record_id_ue_ngap;
nlohmann::json udsf_ue_ngap_context;
std::string record_id = "RECORD_ID=\'" + std::to_string(init_ue_msg.assoc_id) + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("gnb_context/records/") + record_id ;
......@@ -616,16 +617,62 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
Logger::amf_n2().error("Missing Mandatory IE (RanUeNgapId)");
return;
}
std::shared_ptr<nas_context> nc = std::shared_ptr<nas_context>(new nas_context());
std::string _5g_s_tmsi;
Tai_t tai;
NrCgi_t cgi;
if (!init_ue_msg.initUeMsg->get5GS_TMSI(_5g_s_tmsi)) {
itti_msg->is_5g_s_tmsi_present = false;
Logger::amf_n2().debug("5g_s_tmsi not present");
itti_msg->amf_ue_ngap_id = -1;
record_id_ue_ngap = "RECORD_ID=\'" +std::to_string(ran_ue_ngap_id) + "\'";
} else {
itti_msg->is_5g_s_tmsi_present = true;
itti_msg->_5g_s_tmsi = _5g_s_tmsi;
Logger::amf_n2().debug("5g_s_tmsi present");
std::string guti;
init_ue_msg.initUeMsg->getUserLocationInfoNR(cgi, tai);
guti = tai.mcc + tai.mnc + amf_cfg.guami.regionID + itti_msg->_5g_s_tmsi ;
Logger::amf_app().debug("Receiving GUTI %s", guti.c_str());
if(amf_n1_inst->is_guti_2_nas_context_in_udsf(guti))
{
nlohmann::json udsf_response;
std::string record_id_nas = "guti=\'" + guti + "\'";
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/"+ std::string("nas_context/records/") + record_id_nas;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response))
{
Logger::amf_n1().error("No existing nas_context with GUTI %s",guti.c_str());
return ;
}
nc.get()->nas_context_from_json(udsf_response);
ran_ue_ngap_id = nc.get()->ran_ue_ngap_id;
itti_msg->amf_ue_ngap_id = nc.get()->amf_ue_ngap_id;
if(nc == nullptr)
{
printf("-----nc context ----amf n2--!!!!!!!!!!!! ");
}
}
}
std::shared_ptr<ue_ngap_context> unc;
if (!is_ran_ue_id_2_ue_ngap_context(ran_ue_ngap_id)) {
Logger::amf_n2().debug(
"Create a new UE NGAP context with ran_ue_ngap_id 0x%x",
ran_ue_ngap_id);
unc = std::shared_ptr<ue_ngap_context>(new ue_ngap_context());
set_ran_ue_ngap_id_2_ue_ngap_context(ran_ue_ngap_id, unc);
} else {
unc = ran_ue_id_2_ue_ngap_context(ran_ue_ngap_id);
}
ran_ue_ngap_id = init_ue_msg.initUeMsg->getRanUENgapID();
if (unc.get() == nullptr) {
Logger::amf_n2().error(
"Failed to get UE NGAP context for ran_ue_ngap_id 0x%x", 21);
......@@ -638,8 +685,8 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
if (gc.get()->next_sctp_stream >= gc.get()->instreams)
gc.get()->next_sctp_stream = 1;
unc.get()->gnb_assoc_id = init_ue_msg.assoc_id;
NrCgi_t cgi;
Tai_t tai;
if (init_ue_msg.initUeMsg->getUserLocationInfoNR(cgi, tai)) {
itti_msg->cgi = cgi;
itti_msg->tai = tai;
......@@ -662,7 +709,7 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
itti_msg->ueCtxReq = init_ue_msg.initUeMsg->getUeContextRequest();
}
#endif
std::string _5g_s_tmsi;
if (!init_ue_msg.initUeMsg->get5GS_TMSI(_5g_s_tmsi)) {
itti_msg->is_5g_s_tmsi_present = false;
Logger::amf_n2().debug("5g_s_tmsi not present");
......@@ -672,6 +719,26 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
Logger::amf_n2().debug("5g_s_tmsi present");
init_ue_msg.initUeMsg->get5GS_TMSI(unc.get()->s_setid, unc.get()->s_pointer, unc.get()->s_tmsi);
record_id_ue_ngap = "RECORD_ID=\'" +std::to_string(nc.get()->ran_ue_ngap_id) + "\'";
nlohmann::json udsf_nas_context;
std::string record_id_nas = "RECORD_ID=\'" + to_string(nc.get()->amf_ue_ngap_id) + "\'";
std::string udsf_url_nas = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("nas_context/records/") +record_id_nas ;
udsf_response;
udsf_nas_context["meta"] ["tags"] = {
{"RECORD_ID",nlohmann::json::array({to_string(nc.get()->amf_ue_ngap_id)})},
{"from_nf_ID",nlohmann::json::array({"AMF_1234"})}
} ;
udsf_nas_context["blocks"] = nlohmann::json::array({
{{"Content-ID", "ran_ue_ngap_id"},{"Content-Type", "varchar(32)"},{"content", to_string(ran_ue_ngap_id)}}
});
amf_n2_inst->curl_http_client_udsf(udsf_url_nas,udsf_nas_context.dump(),"PUT",udsf_response);
nlohmann::json amf_ue_ngip_id_in_udsf = {};
amf_ue_ngip_id_in_udsf["Content-ID"]="amf_ue_ngip_id";
amf_ue_ngip_id_in_udsf["Content-Type"]="varchar(32)";
amf_ue_ngip_id_in_udsf["content"] = to_string(nc.get()->amf_ue_ngap_id);
udsf_ue_ngap_context["blocks"].push_back(amf_ue_ngip_id_in_udsf);
}
uint8_t* nas_buf;
......@@ -685,17 +752,19 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
}
}
itti_msg->ran_ue_ngap_id = ran_ue_ngap_id;
itti_msg->amf_ue_ngap_id = -1;
//
/***************************hxs add**************/
//send udsf to storage us_ngap_context recordid=ran+ue_ngap_id
record_id = "RECORD_ID=\'" +std::to_string(unc.get()->ran_ue_ngap_id) + "\'";
std::string udsf_put_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("ue_ngap_context/records/") + record_id ;
nlohmann::json udsf_ue_ngap_context;
std::string udsf_put_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("ue_ngap_context/records/") + record_id_ue_ngap ;
// nlohmann::json udsf_response;
udsf_ue_ngap_context["meta"] ["tags"] = {
{"RECORD_ID",nlohmann::json::array({to_string(unc.get()->ran_ue_ngap_id)})},
{"RECORD_ID",nlohmann::json::array({to_string(ran_ue_ngap_id)})},
{"from_nf_ID",nlohmann::json::array({"AMF_1234"})}
} ;
udsf_ue_ngap_context["blocks"] = nlohmann::json::array({
......@@ -711,6 +780,8 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
std::string json_part = udsf_ue_ngap_context.dump();
amf_n2_inst->curl_http_client_udsf(udsf_put_url,json_part,"PUT",udsf_response);
// udsf_put_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("ue_ngap_context/records/") + std::to_string(unc.get()->ran_ue_ngap_id) ;
// if(!amf_n2_inst->curl_http_client_udsf(udsf_put_url,"","GET",udsf_response)){
// Logger::amf_n2().error("No existing gNG context with assoc_id (%d)", unc.get()->ran_ue_ngap_id);
......
......@@ -582,8 +582,8 @@ bool nas_context::nas_context_from_json(nlohmann::json j)
{
// ctx_avaliability_ind = nas_context_ctx_avaliability_ind_from_json(j);
// is_stacs_available = nas_context_is_stacs_available_from_json(j);
// amf_ue_ngap_id = nas_context_amf_ue_ngap_id_from_json(j);
// ran_ue_ngap_id = nas_context_ran_ue_ngap_id_from_json(j);
amf_ue_ngap_id = nas_context_amf_ue_ngap_id_from_json(j);
ran_ue_ngap_id = nas_context_ran_ue_ngap_id_from_json(j);
// nas_status = nas_context_nas_status_from_json(j);
// _5gmm_state = nas_context__5gmm_state_from_json( j);
// registration_type = nas_context_registration_type_from_json(j);
......
......@@ -360,6 +360,7 @@ void pdu_session_context::pdu_session_context_n1sm_from_json(nlohmann::json j)
if(it_block->at("Content-ID") == "n1sm")
{
string s = it_block->at("content");
s= s.substr(0, s.length() - 2);
// msg_str_2_msg_hex(s.substr(0, s.length()),n1sm);
unsigned int msg_len = s.length();
char* data = (char*) malloc(msg_len + 1);
......
......@@ -75,6 +75,7 @@ class itti_nsmf_pdusession_update_sm_context : public itti_msg_n11 {
bstring n2sm;
bool is_n2sm_set;
std::string n2sm_info_type;
long amf_ue_ngap_id : 40;
};
class itti_nsmf_pdusession_release_sm_context : public itti_msg_n11 {
......
......@@ -172,6 +172,7 @@ int ngap_amf_handle_initial_context_setup_response(
itti_msg->n2sm = n2sm;
itti_msg->is_n2sm_set = true;
itti_msg->n2sm_info_type = "PDU_RES_SETUP_RSP";
itti_msg->amf_ue_ngap_id = initCtxResp->getAmfUeNgapId();
std::shared_ptr<itti_nsmf_pdusession_update_sm_context> i =
std::shared_ptr<itti_nsmf_pdusession_update_sm_context>(itti_msg);
int ret = itti_inst->send_msg(i);
......@@ -339,6 +340,7 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
itti_msg->n2sm = n2sm;
itti_msg->is_n2sm_set = true;
itti_msg->n2sm_info_type = "PDU_RES_SETUP_RSP";
itti_msg->amf_ue_ngap_id = pduresp->getAmfUeNgapId();
std::shared_ptr<itti_nsmf_pdusession_update_sm_context> i =
std::shared_ptr<itti_nsmf_pdusession_update_sm_context>(itti_msg);
int ret = itti_inst->send_msg(i);
......
#!/bin/sh
proc_name="/opt/OpenXG/amf/build/amf/build/amf" # 进程名
file_name="/opt/OpenXG/amf/stateless/stateless_amf.log" # 日志文件
date >> /opt/OpenXG/amf/stateless/run_status.log
echo "the shell is running" >> /opt/OpenXG/amf/stateless/run_status.log
while :
do
stillRunning=$(ps -ef |grep $proc_name |grep -v "grep")
if [ -z "$stillRunning" ]
then
date >> /opt/OpenXG/amf/stateless/run_status.log
echo "the amf was closed!!!!!!!!!!!!!!!!!" >> /opt/OpenXG/amf/stateless/run_status.log
/opt/OpenXG/amf/build/amf/build/amf -c /opt/OpenXG/amf/etc/stateless.conf -o | tee /opt/OpenXG/amf/stateless/stateless_amf.log
date >> /opt/OpenXG/amf/stateless/run_status.log
echo "the amf was started!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> /opt/OpenXG/amf/stateless/run_status.log
fi
done
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