使用arp、ifconfig、docker inspect及网桥brctl 相关命令,收集容器IP及Mac地址相关信息,可以梳理出UERANSIM+free5GC模拟环境组网,如下图所示:
如上图所示:环境基于ubuntu 18.04 VMware虚机部署,5GC网元分别部署在虚机的docker容器中。5GC各模拟网元模拟RAN 通过虚拟网桥进行数据交换。物理机上的VMware 虚拟网卡作为DN(互联网节点)通过虚拟网桥与容器中的UPF对接。
(需注意:确定Linux内核版本,必须要5.0.0-23-generic 或者 5.4.0之后的版本)
内核问题需要补充:确定Linux内核版本,必须要5.0.0-23-generic 或者 5.4.0之后的版本
ubuntu 22.04的内核有些是5.15.0-150-generic,有些是5.4.0-150-generic,导致在编译的过程中,总会报各种错误;而linux中关于内核降级非常复杂,因此建议一开始确定内核版本,或者直接采用ubuntu 18.04,其内核版本为3.x.x,虽然版本也不正确,但是linux中内核升级相对方便,只需要补充一下source.list,然后直接在线下载即可,不需要修改grub文件。原因很简单,Linux自动采用高版本的内核。如果不放心,建议修改grub文件,然后在开机过程中进入高级模式,方便调试。
sudo apt install 'linux-image-5.0.0-23-generic'
sudo apt install 'linux-headers-5.0.0-23-generic'
而当数据依赖包在从github进行下载时,可能会出现连接失败或者连接超时等问题,则可采用以下方案进行解决:
git config --global --unset http.proxy
git config --global url."https://ghproxy.com/https://github.com".insteadOf "https://github.com"
该语句在执行中会报错git clone -b v0.2.0 https://github.com/PrincOwO/gtp5g.git,但是在执行过程中会出现问题。
解决方法:
git clone -b v0.2.0 https://github.com/PrinzOwO/gtp5g.git
5G核心网架构:
5G网络由众多网元构成,每个网元都有特定的功能,UE为用户设备,(R)AN为(无线)接入网络,DN为数据网络,红框内为核心网中的网元集合。
5G核心网采用基于服务的系统架构,在部署上采用虚拟机和容器的方式,采用软件定义网络(SDN)和网络功能虚拟化(NFV)的技术,将控制与转发分离,技术成本大幅降低,使网络更加开放,且具有编程能力。
5G核心网中拥有众多的网元,如AMF、UDM、NRF等,共同承担起核心网的功能,其中与用户注册管理关系最密切的网元是AMF网元,从图中也可看出,AMF网元与基站通过N2口进行通信。
用户注册管理:
用户注册管理是用于用户和网络之间进行注册和注销,在网络建立上下文的过程,用户想要获取网络提供的业务必须先向网络进行注册。
用户注册管理有四个场景:
1 用户初次注册网络
2 用户周期性注册网络
3 用户位置变更引起的网络重新注册
4 紧急业务引发的网络注册
5G终端初始注册接入核心网及会话建立流程:
5G终端初始注册接入核心网并建立会话的流程主要有以下几个步骤:
1 UE开机,连接到5G基站,发送5G网络注册请求,基站在该过程中透明,只会转发用户的注册请求到5G核心网。
2 在收到用户的注册请求时,因为是初始注册,核心网没有用户的上下文信息,所以就会向用户发送身份验证请求。
3 用户在验证了验证请求的真实性后,会向核心网发送身份验证信息,再次发送注册请求到核心网。
4 核心网收到用户的身份验证信息后,对用户的信息进行验证鉴权,如果通过,就返回注册接收消息,并且发送用户上下文初始化请求,根据用户的回应设置用户的上下文。
5 设置完成后,用户会发送PDU会话建立请求。
6 核心网接受了PDU建立请求后,设置相应的PDU资源。
7 用户可以与核心网进行通信,开始发送和接收数据,进行业务访问。
5G AKA协议核心原理:
参考TS33.501、TS33.102 5G AKA认证协议核心是基于鉴权向量AV的产生与传输、MAC的验证、RES的认证,其核心简要概括如下:
F1-F5算法通常采用Milenage算法。
计算消息认证码(MAC):MAC = F1K(SQN || RAND || AMF);
计算期望的认证应答(XRES):XRES = F2K (RAND);
网络认证令牌(AUTN):AUTN = (SQN⊕AK )|| AMF || MAC;
AV:AV=RAND||XRES||CK||IK||AUTN;
核心网发起认证时将AV传递到 UE。
UE 对于核心网AV的认证:
消息序列号(SQN):(SQN⊕AK )⊕AK
预期的计算消息认证码(XMAC):F1K(SQN || RAND || AMF);
UE认证的核心网即MAC与XMAC之间的比对。
核心网对于UE RES的认证:
核心网在生成AV的同时会记录XRES,UE认证MAC的同时会将RES返回核心网进行认证。
核心网认证UE核心即 RES与XRES之间的比对。
认证模型中K是如何来的?
5G 各网元密钥采用层次化的派生体系
每一个层级的密钥都有对应的KDF密钥导出函数进行推导,如K->Kausf 的推导,Kausf->Kseaf 的推导,具体参见《TS 33.501 5G 系统安全架构和过程》的 Figure 6.2.2-1:网络节点的5G密钥分发和密钥导出方案 。
至于UE 与核心网双向认证的模型中的K,应该就是本密钥层次模型中的顶层PermanentKey。