5G核心網 free5GC AMF原始碼分析

2021-10-08 11:26:02 字數 3954 閱讀 7842

type sbi struct
httpcallback.addservice(router),實現在 afm/httpcallback 中,url 以及 handler 如下所示:

index

/

index

smcontextstatusnotify

/smcontextstatus/:guti/:pdusessionid

smcontextstatusnotify

ampolicycontrolupdatenotifyupdate

/am-policy/:polassoid/update

ampolicycontrolupdatenotifyupdate

ampolicycontrolupdatenotifyterminate

/am-policy/:polassoid/terminate

ampolicycontrolupdatenotifyterminate

n1messagenotify

/n1-message-notify

n1messagenotify
servicenamelist: - namf-comm - namf-evts - namf-mt - namf-loc - namf-oam

for _, servicename := range factory.amfconfig.configuration.servicenamelist 

}

通過配置檔案,較簡單,amf 監聽埠為 29518

tcp是以位元組為單位傳輸的,sctp是以資料塊為單位傳輸的

tcp通常是單路徑傳輸,sctp可以多路徑傳輸

for _, ngapaddr := range self.ngapiplist
每次新建立的連線,將訊息設定為 eventngapacceptconn 丟進 channel 進行處理,丟進 channel 處理, 處理函式 newamfran 則例項化 amfran, 存貯在 amfranpool 中,key 為對端 ip 位址

forwarddata 函式根據接收到的資料報,統一設定型別為 eventngapmessage,丟進 chanel,等待函式 ngap.dispatch(msg.ngapaddr, msg.value.(byte)) 處理

func server(addrstr string) (listener *sctplistener) 

go listener.forwarddata()

// wait for accept connection

go func(l *sctplistener)

logger.ngaplog.infof("[amf] ngap sctp accept from: %s", conn.remoteaddr().string())

// send connection to amf handler

msg := amf_message.handlermessage{}

msg.event = amf_message.eventngapacceptconn

msg.value = conn

amf_message.sendmessage(msg)

l.mtx.lock()

l.conn[conn.remoteaddr().string()] = conn

l.mtx.unlock()

go ngapsctp.start(conn, readchan)

// put connection into global conn

} }(listener)

return

}

實現在 amf/handler/hander.go

go handler.handle()
amf id 組成 regionid: 16bits, setid: 10bits, ptrid: 6bits=呼叫 nrf nnrf_nfmanagement,註冊

// register to nrf

profile, err := consumer.buildnfinstance(self)

if err != nil

_, self.nfid, _ = consumer.sendregisternfinstance(self.nrfuri, self.nfid, profile)

ng setup 流程用來交換 ng-ran 節點和 amf 在 ng-c 介面上正確互操作所需的應用程式資料,該程式應是 tnl 關聯開始執行後觸發的第乙個 ngap 程式。該過程使用 非ue 相關的信令。

present int

initiatingmessage *initiatingmessage

successfuloutcome *successfuloutcome

unsuccessfuloutcome *unsuccessfuloutcome}

type initiatingmessage struct
initiatingmessage procedurecode 設定為 procedurecodengsetup  

當使用 ng-ran 時,n2 引數包括所選的 plmn id、位置資訊和與 ue 所在小區相關的身份、ue 上下文請求,該請求指明需要在 ng-ran 中設定乙個包含安全資訊的 ue 上下文 。也包括建立的原因,

如果可用的話,才提供請求的 nssai 對映

如果 ue 註冊型別指明是定期註冊更新,則省略 4 - 19 步驟

如果 ue 包含首選的網路行為

主要是驗證資訊,如果驗證通過則 sendngsetupresponse,失敗則呼叫 sendngsetupfailure

5G核心網的構架

1.5g無線接入網路架構 主要包括5g接入網和5g核心網,其中ng ran代表5g接入網,5gc代表5g核心網。5g核心網主要包括哪些呢?先說一下關鍵的amf smf upf amf 全稱 access and mobility management function,接入和移動管理功能,終端接入許...

5G核心網 5GC核心網之網元AUSF

ausf,authentication server function 鑑權服務功能。網路功能 nf 鑑權服務功能 ausf 是 5g 核心網路 5gc 中的網路實體,支援以下功能 為請求者nf驗證ue 向請求者nf提供金鑰材料 保護請求者nf的 指導資訊列表 該圖表示基於服務的體系結構模型中的 a...

查詢5G核心網參考資料的方法

5g系統紛繁複雜,涉及了傳統通訊和現代it的各方面。剛接觸會遇到如3gpp 虛擬化 nfv和sdn,以及服務化 http2.0等很多概念和標準。5g的網路架構從傳統的煙囪式轉向虛擬化,並且引入了網路切片等新概念。僅僅從核心網來說,5g的變化遠遠比之前4g epc比3g的網路架構變化大得多,可以說是翻...