DAY12抓取並轉送SMF與UPF註冊時的封包,接下來要來抓取UE註冊時的封包
首先先將核心網路元件的部屬起來
再用另一台機器啟動UERANSIM
而註冊時可以看到 UE認證完成後SMF會先送出一個establish的封包至UPF
因此我們要去檢查封包的內容
if str(PFCP(data)[0]) == "PFCP / PFCPSessionEstablishmentRequest":
proxy_socket.sendto(data, ("10.244.0.90", 8805))
if str(PFCP(data)[0]) == "PFCP / PFCPSessionEstablishmentResponse":
proxy_socket.sendto(data, ("10.244.0.88", 8805))
而這邊執行會發現,SMF會有錯誤訊息,這邊是因為PDUSESSION在建立的時候RESPONSE封包裡面會帶有要建立的服務的NODE ID(如下圖)
這邊這是跟free5gc的config有關,因為我們設定時是用FQDN(完整網域名稱),所以我們修改的也要用網域名稱,而長度我們先不改所以就設定為一樣長度的名稱即可。
**首先要修改/etc/hosts 並添加我們主機ip進去
並且去修改我們的欄位
pfcp = PFCP(data)
# pfcp[2].ipv4 = '10.20.1.22' # when using ip in upf config
pfcp[2].id = 'free5gc-n4i-svc' # when using fqdn in upf config
pfcp[4].ipv4 = '10.20.1.22'
proxy_socket.sendto(bytes(pfcp), ("10.244.0.88", 8805))
若smf有成功進到下一步即可以看新的PFCP封包Modification_Request。
最後將封包在轉送給SMF和UPF即可
而這邊也可以看到UE被建立的IP
可以嘗試看看用UE去ping8.8.8.8,會發現怎麼沒辦法順利連線,這方面是因為目前SMF把我們的PFCP的程式當成UPF,而UE要連線時我們沒有去轉送GTPU的封包,因此DAY14 我們要來建立一個協助UE轉送GTPU的封包的程式