1
0
Files
build.ems/docs/interfaces/05-5GC OMC restful intefaces.md

45 KiB
Raw Permalink Blame History

EMS restful interfaces

1. 状态管理

  • URI:

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/systemState
    

    说明:

    ** elementTypeValue=smf/amf/..查询的网元网元类型
    
  • Method:

    GET

  • Return:

    NF -> OMC BE的json结构

    type SysState struct {
    	HostName     string `json:"hostName"` // linux命令: hostname
    	OsInfo       string `json:"osInfo"`   // linux命令: uname -a
    	DbInfo       string `json:"dbInfo"`   // 网元如果有db, 显示数据库名和版本信息, OMC: mysql --version
    	Version      string `json:"version"`  // 软件版本信息: 16.1.1
    	IpAddr       []string `json:"ipAddr"`   // 网管的ipv4和ipv6 
    	Port         uint16 `json:"port"`     // 用于网管的port
    	Capability   uint32 `json:"capability"`
    	SerialNum    string `json:"serialNum"`
    	ExpiryDate   string `json:"expiryDate"`
    	HardwareInfo struct {
    		CPUs   int `json:"cpus"`   // 主机(裸机/虚拟机)的cpu个数
    		Memory int `json:"memory"` // 主机(裸机/虚拟机): 配置的内存
    	} `json:"hardwareInfo"`
    	CpuUsage struct {
    		NfCpuUsage  uint16 `json:"nfCpuUsage"`
    		SysCpuUsage uint16 `json:"sysCpuUsage"`
    	} `json:"cpuUsage"`
    	MemUsage struct {
    		TotalMem    uint32 `json:"totalMem"`
    		NfUsedMem   uint32 `json:"nfUsedMem"`
    		SysMemUsage uint16 `json:"sysMemUsage"`
    	} `json:"memUsage"`
    	DiskSpace struct {
    		PartitionNum  uint8 `json:"partitionNum"`
    		PartitionInfo []struct {
    			Total uint32 `json:"total"` // MB
    			Used  uint32 `json:"used"`  // MB
    		} `json:"partitionInfo"`
    	} `json:"diskSpace"`
    	//Timestamp  string `json:"timestamp"`
    }
    
  • Example: OMC BE -> OMC FE

    
        "data": [
            {
                "AMF_0": {
                    "error": {
                        "errorCode": "1",
                        "errorInfo": "Internal server error, NF connnect refused"
                    },
                    "ipAddress": "192.168.2.188"
                }
            },
            {
                "SMF_0": {
                    "ipAddress": "192.168.1.232",
                    "systemState": {
                        "capability": 10000,
                        "cpuUsage": {
                            "nfCpuUsage": 2,
                            "sysCpuUsage": 52
                        },
                        "diskSpace": {
                            "partitionInfo": [
                                {
                                    "total": 1920,
                                    "used": 0
                                },
                                {
                                    "total": 393,
                                    "used": 13
                                },
                                {
                                    "total": 48700,
                                    "used": 32431
                                },
                                {
                                    "total": 1965,
                                    "used": 0
                                },
                                {
                                    "total": 5,
                                    "used": 0
                                },
                                {
                                    "total": 1965,
                                    "used": 0
                                },
                                {
                                    "total": 55,
                                    "used": 55
                                },
                                {
                                    "total": 63,
                                    "used": 63
                                },
                                {
                                    "total": 91,
                                    "used": 91
                                },
                                {
                                    "total": 49,
                                    "used": 49
                                },
                                {
                                    "total": 55,
                                    "used": 55
                                },
                                {
                                    "total": 73,
                                    "used": 73
                                },
                                {
                                    "total": 91,
                                    "used": 91
                                },
                                {
                                    "total": 1475,
                                    "used": 206
                                },
                                {
                                    "total": 49,
                                    "used": 49
                                },
                                {
                                    "total": 393,
                                    "used": 13
                                },
                                {
                                    "total": 393,
                                    "used": 0
                                },
                                {
                                    "total": 73,
                                    "used": 73
                                },
                                {
                                    "total": 63,
                                    "used": 63
                                }
                            ],
                            "partitionNum": 19
                        },
                        "expiryDate": "2025-02-28",
                        "memUsage": {
                            "nfUsedMem": 163992,
                            "sysMemUsage": 1345,
                            "totalMem": 4025608
                        },
                        "serialNum": "13740126",
                        "version": "1.5.3.2"
                    }
                }
            },
            {
                "SMF_1": {
                    "ipAddress": "192.168.1.173",
                    "systemState": {
                        "capability": 10000,
                        "cpuUsage": {
                            "nfCpuUsage": 0,
                            "sysCpuUsage": 69
                        },
                        "diskSpace": {
                            "partitionInfo": [
                                {
                                    "total": 3966,
                                    "used": 0
                                },
                                {
                                    "total": 797,
                                    "used": 0
                                },
                                {
                                    "total": 200559,
                                    "used": 5968
                                },
                                {
                                    "total": 3987,
                                    "used": 0
                                },
                                {
                                    "total": 5,
                                    "used": 0
                                },
                                {
                                    "total": 3987,
                                    "used": 0
                                },
                                {
                                    "total": 797,
                                    "used": 0
                                }
                            ],
                            "partitionNum": 7
                        },
                        "expiryDate": "2024-12-31",
                        "memUsage": {
                            "nfUsedMem": 212136,
                            "sysMemUsage": 720,
                            "totalMem": 8167360
                        },
                        "serialNum": "13740272",
                        "version": "1.5.3.3"
                    }
                }
            }
        ]
    }
    

2 故障管理

2.1 告警上报

  • URI

    /api/rest/faultManagement/v1/elementType/{elementTypeValue}/objectType/alarms
    
  • Method

    POST

  • Relations

    NF->OMC

  • Body

    type Alarm struct {
        AlarmSeq          int    `json:"alarmSeq"`
        AlarmId           string `json:"alarmId"`
        NeId              string `json:"neId"`
        AlarmCode         int    `json:"alarmCode"`
        AlarmTitle        string `json:"alarmTitle"`
        EventTime         string `json:"eventTime"`
        AlarmType         string `json:"alarmType"`
        OrigSeverity      string `json:"origSeverity"`
        PVFlag            string `json:"pvFlag"`
        NeName            string `json:"neName"`
        NeType            string `json:"neType"`
        ObjectName        string `json:"objectName"`
        LocationInfo      string `json:"locationInfo"`
        Province          string `json:"province"`
        AlarmStatus       int    `json:"alarmStatus"`
        SpecificProblem   string `json:"specificProblem"`
        SpecificProblemID string `json:"specificProblemID"`
        AddInfo           string `json:"addInfo"`
    }
    

2.2 获取网元告警

  • URI

    /api/rest/faultManagement/v1/elementType/{elementTypeValue}/objectType/alarms
    
  • Method

    GET

  • Relations

    OMC->NF

  • Body

    n/a

  • Return

    type Alarms struct {
        Alarms []struct {
            AlarmSeq          int    `json:"alarmSeq"`
            AlarmId           string `json:"alarmId"`
            NeId              string `json:"neId"`
            AlarmCode         int    `json:"alarmCode"`
            AlarmTitle        string `json:"alarmTitle"`
            EventTime         string `json:"eventTime"`
            AlarmType         string `json:"alarmType"`
            OrigSeverity      string `json:"origSeverity"`
            PVFlag            string `json:"pvFlag"`
            NeName            string `json:"neName"`
            NeType            string `json:"neType"`
            ObjectName        string `json:"objectName"`
            LocationInfo      string `json:"locationInfo"`
            Province          string `json:"province"`
            AlarmStatus       int    `json:"alarmStatus"`
            SpecificProblem   string `json:"specificProblem"`
            SpecificProblemID string `json:"specificProblemID"`
            AddInfo           string `json:"addInfo"`
        } `json:"Alarms"`
    }
    

3. 配置管理

3.1 参数配置表

  • 类型定义type

    • string

      filter指定字符串长度"filter": "6~100" , 字符串的长度范围,如果单个数字表示最大长度

    • ipv4

      filter忽略

    • ipv6

      filter忽略

    • int

      filter指定整型数的范围"filter": "100~999"

    • enum

      "filter": '{"0": "http", "1": "https"}'

    • bool

      "filter": '{"0": "false", "1": "true"}'

    • regex

      filter为正则表达式

  • 可选optional

    • true默认值表示该字段为可选填没有写该属性项时optional为true兼容以前配置文件
    • false表示必填项
  • Method

    • 字符串"get,post,put,delete"只用于Top Tag字段默认为支持所有方法
    • get对应"获取"按钮, post对应"新增"按钮, put对应"修改"按钮, delete对应"删除"按钮
    • 配置相应方法,则显示相应的按钮,支持对应的方法
  • Example

    UDM:
    system:
        display: "System"
        method: "get,post,put,delete"
        list:
          - name: "serviceIP"
            type: "ipv4"
            value: "172.16.5.140"
            optional: "false"
            access: "read-write"
            filter: ''
            display: "Service IP"
            comment: ""
          - name: "servicePort"
            type: "int"
            value: "8080"
            access: "read-write"
            filter: "0~65535" 
            display: "Service Port"
            comment: "0~65535"
    subsSmfSelection:
        display: "Subs Smf Selection"
        array:
          - name: "index"
            type: "int"
            value: "0"
            access: "read-write"
            filter: '0~15'
            display: "Index"
            comment: "0~15"
          - name: "name"
            type: "string"
            value: 'def_ambr'
            access: "read-write"
            filter: '^.{1,32}$'
            display: "Name"
            comment: "0~32"
          - name: "snssai"
            type: "string"
            value: '1-000001'
            access: "read-write"
            filter: '^\d{1,3}[A-Fa-f0-9]{6}$'
            display: "Snssai"
            comment: ""
          - name: "dnnList"
            type: "int"
            value: '0'
            access: "read-write"
            filter: '0~3'
            display: "Dnn List"
            comment: ""
            array:
              - name: "index"
                type: "int"
                value: "0"
                access: "read-write"
                filter: '0~15'
                display: "index"
                comment: "0~15"
              - name: "dnn"
                type: "string"
                value: 'cmnet'
                access: "read-write"
                filter: '^.{1,32}$'
                display: "Dnn"
                comment: "0~32"
              - name: "defaultDnnInd"
                type: "bool"
                value: 'true'
                access: "read-write"
                filter: 'false;true;'
                display: "default Dnn Indicator"
                comment: ""  
    

    完整文件具体请参考 udm_param_config.yaml

3.2 获取参数

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/config/{paraName}?loc={index0}/{paraName1}/{index1}/...
    

    说明

    elementTypeValue: udm, smf, amf... 网元类型
    udm paraName: system, subsUEAmbr, subsSmfSelection ...
    非array的参数忽略loc
    
  • Params

    • loc 多层表的定位信息
  • Method

    GET

  • Return

    /api/rest/systemManagement/v1/elementType/udm/objectType/config/system
    
    {
        "data": [
            {
                "serviceIP": "172.16.5.140",
                "servicePort": "8080",
                "...": "..."
            }
        ]
    }
    
    /api/rest/systemManagement/v1/elementType/udm/objectType/config/subsSmfSelection?loc=1/dnnList
    
    {
        "data": [
            {
                "index": "0",
                "dnn": "cmnet",
                "...": "..."
            },
            {
                "index": "1",
                "dnn": "ims",
                "...": "..."
            }   
        ]
    }
    

3.3 配置参数

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/config/{paraName}?loc={index0}/{paraName1}/{index1}
    
  • Params

    • loc 多层表的定位信息
  • Method

    POST/PUT/DELETE

    说明:

    单层表不支持POST/DELETE操作
    
  • Body

    {
        "serviceIP": "172.16.5.140",
        "servicePort": "8080",
        "...": "..."
    }
    

    说明:

    DELETE操作不带Body
    

3.4 创建/修改网元

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/config/omcNeConfig
    
  • Params

    N/A

  • Method

    PUT

  • Body

    type OmcNeConfig struct {
      NeId       string `json:"neId" xorm:"ne_id"`             // 网元标识(内部),
      RmUID      string `json:"rmUID" xorm:"rm_uid"`           // neUID/rmUID 网元唯一标识
      NeName     string `json:"neName" xorm:"ne_name"`         // 网元名称/友好名称(北向资源/性能等使用)
      PvFlag     string `json:"pvFlag" xorm:"pv_flag"`         // 网元虚实性标识 VNF/PNF: 虚拟/物理
      Province   string `json:"province" xorm:"province"`      // 网元所在省份
      VendorName string `json:"vendorName" xorm:"vendor_name"` // 厂商名称
      //	ManagedBy  string `json:"managedBy" xorm:"managed_by"`   // 管理ManagedElement的ManagementNode对象类的DN值
      Dn string `json:"dn" xorm:"dn"` // 资源里边的ManagedBy性能的Dn网络唯一标识
    }
    

3.5 网元服务启动/停止/重启

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/service/{action}?neId={neId}
    

    action: start/restart/stop

  • Relations

    OMC FE -> OMC BE -> NF

  • Params

    OMC-FE -> OMC-BE, neId={neId}, 指定NF的neId

  • Method

    POST

  • Body

    type NeService struct {
      Action       string `json:"action"`         // 动作, start/restart/stop
    }
    

3.6 机器开机/重启/关机

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/instance/{action}?neId={neId}
    

    action: reboot/poweroff

  • Relations

    OMC FE -> OMC BE -> NF

  • Params

    OMC-FE -> OMC-BE, neId={neId}, 指定NF的neId

  • Method

    POST

  • Body

    type NeInstance struct {
      Action       string `json:"action"`         // 动作, reboot/poweroff
    }
    

4 性能管理

4.1 任务管理

  • URI

    /api/rest/performanceManagement/v1/elementType/{elementTypeValue}/objectType/measureTask?id={taskId1}&id={taskId2}
    
  • Method

    POST/PUT/DELETE/PATCH

  • Params

    taskId=1&taskId=2

    • POST: 增加测量任务激活任务不带id参数id在body
    • PUT 修改测量任务激活任务不带id参数id在body
    • DELETE删除测量任务不需要带body带id参数可带多个
    • PATCH: 暂停测量任务不需要带body带id参数可带多个

    测量任务创建/修改后暂时存储在OMC数据库激活任务时再下发到网元

  • Relations

    OMC -> NF/NF -> OMC

  • Body

    下发测量任务的报文结构

    type MeasureTask struct {
        Tasks []struct {
            Id int `json:"Id"`
    
            StartTime string `json:"StartTime"`
            EndTime   string `json:"EndTime"`
    
            Schedule struct {
                Type    string `json:"Type"` // 计划类型Weekly/Monthly, 如果type为"", 则任务以StartTime和EndTime为条件进行统计, 否则以Shedule方式进行
                Days    []int  `json:"Days"` // Weekly: [0,1,...5,6]0~6表示星期日~星期六, Monthly: [1,2,3,...,30,31]一个月的几天
                Periods []struct {
                    Start string `json:"Start"` // 零点或者零点加测量粒度的整数倍 00:15:00
                    End   string `json:"End"`   // 零点加测量粒度的整数倍 08:45:00, 16:15:00
                } `json:"Periods"`
            } `json:"Schedule"`
    
            GranulOption string `json:"GranulOption"` // 测量粒度选项15M/30M/60M/24H
    
            KPISet []struct {
                Code string   `json:"Code"` // 统计编码 如SMFHA01
                KPIs []string `json:"KPIs`  // 指标项集合 ["SMF.AttCreatePduSession", "SMF.AttCreatePduSession._Dnn"]
            } `json:"KPISet"`
        } `json:"Tasks"`
    
        NotifyUrl string `json:"NotifyUrl"` /* 数据上报URL "http://x.x.x.x:xxxx/api/rest/performanceManagement/v1/elementType/smf/objectType/measureReport" */
    }
    
  • Return

4.2 订阅任务数据上报

  • URI

    /api/rest/performanceManagement/v1/elementType/{elementTypeValue}/objectType/measureReport
    
  • Method

    POST

  • Relations

    NF -> OMC

  • Body

    网元返回测量数据的报文结构

    type MeasureReport struct {
        Id        int    `json:"Id"`
        Timestamp string `json:"TimeStamp"`
        NeName string `json:"NeName"`
        RmUID  string `json:"rmUID"`
        NeType string `json:"NeType"`
    
        Report struct {
            Period struct {
                StartTime string `json:"StartTime"`
                EndTime   string `json:"EndTime"`
            } `json:"Period"`
    
            Datas []struct {
                Code string `json:"Code"` // 统计编码 如SMFHA01
                KPIs []struct {
                    KPIID     string `json:"KPIID"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
                    KPIValues []struct {
                        Name  string `json:"Name"` // 单个的写"Total", 或者指标项有多个测量项如Dnn的名称写对应的Dnn"cmnet"/"ims"
                        Value int64    `json:"Value"`
                    } `json:"KPIValues"`
                } `json:"KPIs"`
            } `json:"Datas"`
        } `json:"Report"`
    }
    

4.3 黄金指标上报

  • URI

    /api/rest/performanceManagement/v1/elementType/{elementTypeValue}/objectType/kpiReport/{index}
    

    index取值范围 0-1439

  • Method

    POST

  • Body

    type KpiReport struct {
        Timestamp string `json:"TimeStamp"`
        Task      struct {
            Period struct {
                StartTime string `json:"StartTime"`
                EndTime   string `json:"EndTime"`
            } `json:"Period"`
            NE struct {
                NEName string `json:"NEName"`
                RmUID  string `json:"rmUID"`
                NeType string `json:"NeType"`
                KPIs   []struct {
                    KPIID string `json:"KPIID"`
                    Value int    `json:"Value"`
                    Err   string `json:"Err"`
                } `json:"KPIs"`
            } `json:"NE"`
        } `json:"Task"`
    }
    

4.4 测量数据主动上报

  • URI

    /api/rest/performanceManagement/v1/elementType/{elementTypeValue}/objectType/measurement/{index}
    
  • Method

    POST

  • Relations

    NF -> OMC

  • Params

    NA

  • Body

    网元主动上报测量数据的报文结构

     type Measurement struct {
        Index     int    `json:"Index"`    // 1天当中测量时间粒度(如15分钟)的切片索引: 0~95
        Timestamp string `json:"TimeStamp"`
        NeName string `json:"NeName"` // UserLabel
        RmUID  string `json:"rmUID"`
        NeType string `json:"NeType"`  // 网元类型
        PmVersion string `json:"PmVersion"` // 性能数据版本号
        Dn     string `json:"Dn"`  // (???)网元标识, 如:RJN-CMZJ-TZ,SubNetwork=5GC88,ManagedElement=SMF53456,SmfFunction=53456
        Period string `json:"Period"` // 测量时间粒度选项5/15/30/60
        TimeZone string `json:"TimeZone"` // 时区, 如: "UTC+8"
        StartTime string `json:"StartTime"`
    
        Datas []struct {
            ObjectType string `json:"ObjectType"` // 网络资源类别名称, Pm指标项列表中为空间粒度 如SmfFunction
            KPIs []struct {
                KPIID     string `json:"KPIID"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
                KPIValues []struct {
                    Name  string `json:"Name"` // 单个的写"Total", 或者指标项有多个测量项如Dnn的名称写对应的Dnn"cmnet"/"ims"
                    Value int64    `json:"Value"`
                } `json:"KPIValues"`
            } `json:"KPIs"`
        } `json:"Datas"`
    }
    
  • Return

    Code: 204, no content

4.5 测量数据获取/补采

  • URI

    /api/rest/performanceManagement/v1/elementType/{elementTypeValue}/objectType/measurement/{index}
    
  • Method

    GET

  • Relations

    OMC -> NF

  • Params

    NA

  • Body

    NA

  • Return

    网元返回测量数据的报文结构

    type Measurement struct {
        Index     int    `json:"Index"`       // 1天中测量时间粒度(如15分钟)的切片索引: 0~95
        Timestamp string `json:"TimeStamp"`
        NeName string `json:"NeName"` // UserLabel
        RmUID  string `json:"rmUID"`
        NeType string `json:"NeType"`  // 网元类型
        PmVersion string `json:"PmVersion"` // 性能数据版本号
        Dn     string `json:"Dn"`  // (???)网元标识, 如:RJN-CMZJ-TZ,SubNetwork=5GC88,ManagedElement=SMF53456,SmfFunction=53456
        Period string `json:"Period"` // 测量时间粒度选项5/15/30/60
        TimeZone string `json:"TimeZone"`
        StartTime string `json:"StartTime"`
    
        Datas []struct {
            ObjectType string `json:"ObjectType"` // 网络资源类别名称, Pm指标项列表中为空间粒度 如SmfFunction
            KPIs []struct {
                KPIID     string `json:"KPIID"` // 指标项, 如: SMF.AttCreatePduSession._Dnn
                KPIValues []struct {
                    Name  string `json:"Name"` // 单个的写"Total", 或者指标项有多个测量项如Dnn的名称写对应的Dnn"cmnet"/"ims"
                    Value int64    `json:"Value"`
                } `json:"KPIValues"`
            } `json:"KPIs"`
        } `json:"Datas"`
    }
    

5 跟踪管理

5.1 订阅管理

  • 创建订阅

    • URI

      /api/rest/traceManagement/v1/subscriptions
      
    • Method

      POST

    • Relations

      OMC front-end->OMC back-end, OMC -> NF

    • Body

      OMC front-end->OMC back-end: id 不带 OMC->NFid必选

      type TraceTask struct {
        Id         int      `json:"id"`
        TraceType  string   `json:"traceType"`
        StartTime  string   `json:"startTime"`
        EndTime    string   `json:"endTime"`
        Imsi       string   `json:"imsi"`
        Msisdn     string   `json:"msisdn"`
        SrcIp      string   `json:"srcIp"`
        DstIp      string   `json:"dstIp"`
        SignalPort int16    `json:"signalPort"`
        NeType     string   `json:"neType"`
        NeId       string   `json:"neId"`
        UeIp       string   `json:"ueIp"`
        Interfaces []string `json:"interfaces"`
        NotifyUrl  string   `json:"notifyUrl"`
      }
      

      Example:

      {
        "id": 3,
        "traceType": "Interface",
        "startTime": "2023-07-04 13:00:00",
        "endTime": "2023-07-04 19:00:00",
        "neType": "UDM",
        "neId": "SZ_01",
        "interfaces": ["N8","N10"],
        "notifyUrl": "gtp:192.168.0.229:2152",
      }
      
    • Return

      Code=204 non-content

  • 修改订阅

    • URI

      /api/rest/traceManagement/v1/subscriptions
      
    • Method

      PUT

    • Relations

      OMC front-end->OMC back-end, OMC -> NF

    • Body

      type TraceTask struct {
        Id         int      `json:"id"`
        TraceType  string   `json:"traceType"`
        StartTime  string   `json:"startTime"`
        EndTime    string   `json:"endTime"`
        Imsi       string   `json:"imsi"`
        Msisdn     string   `json:"msisdn"`
        SrcIp      string   `json:"srcIp"`
        DstIp      string   `json:"dstIp"`
        SignalPort int16    `json:"signalPort"`
        NeType     string   `json:"neType"`
        NeId       string   `json:"neId"`
        UeIp       string   `json:"ueIp"`
        Interfaces []string `json:"interfaces"`
        NotifyUrl  string   `json:"notifyUrl"`
      }
      

      Example:

      {
        "id": 3,
        "traceType": "Interface",
        "startTime": "2023-07-04 13:00:00",
        "endTime": "2023-07-04 19:00:00",
        "neType": "UDM",
        "neId": "SZ_01",
        "interfaces": ["N8","N10", "N11"],
        "notifyUrl": "gtp:192.168.0.229:2152",  
      }
      
    • Return

      Code=204 non-content

  • 删除订阅

    • URI

      /api/rest/traceManagement/v1/subscriptions?id={id1}&id={id2}
      
    • Method

      DELETE

    • Relations

      OMC front-end->OMC back-end, OMC -> NF

    • Params

      id订阅任务id支持多个

    • Body

      NA

    • Return

      Code=204, non-content

  • 查询订阅 (暂不实现,直接从数据库查询)

    • URI 查询单个订阅:

      /api/rest/traceManagement/v1/subscriptions?id={id}
      

      查询所有订阅:

      /api/rest/traceManagement/v1/subscriptions
      
    • Method

      GET

    • Body

      NA

    • Return

      {
        "data": [
          {
            "id": 1,
            "traceType": "Interface",
            "startTime": "2023-07-04 13:00:00",
            "endTime": "2023-07-04 19:00:00",
            "neType": "UDM",
            "neId": "SZ_01",
            "interfaces": ["N8","N10", "N11"]
          }
        ]
      }
      

5.2 消息上报

Example:

{ 
  "id": [1,2],
  "timestamp": "20230413 16:02:27.523496",
  "imsi": "4600001000000001",
  "msisdn": "12307550001",
  "srcAddr": "192.168.1.172:51034",
  "dstAddr": "192.168.1.187:8080",
  "neType": "AMF",
  "neId": "SZ_0",
  "interface": "N8",
  "data": "00002f01040000007f418d0be25c2e3cb8570bcedc780f038345",
  "diagnosis": "It is external debug information",
}

6. 操作维护

6.1 MML命令

6.1.1 MML命令格式

  • 命令格式

    oper object:parameter1={value1},parameter2={value2},parameter3={value3};
    
    • 操作(operation)

      • 根据实际操作可选用如下动作,如果没有合适的可自行增加,要做到简洁直观

        add: 增加
        mod(set):修改/设置
        del(rmv):删除
        dsp(lst):查询显示
        bak备份
        exp导出
        imp导入
        bat: 批量
        exec(run):执行
        act/dea: 激活/去激活
        
      • 与对象之间采用空格分隔

    • 对象(object)

      • 操作的对象,如签约数据(sub/udmuser)/鉴权数据(auth/authdat), n7接口(n7server)
      • 对象名称用所操作对象的英文名(或缩写), 为字母或者数字的组合, 不含空格, "-", "_"等特殊字符
      • 使用":"与参数进行分隔
    • 参数(param)

      • 参数名采用英文常用名/约定俗成的缩写/缩略语等, 如imsimsisdnipport等, 为字母或者数字的组合, 不含空格, "-", "_"等特殊字符
      • 参数值为字符串, 如有":", ",", ";", "\"字符, 需加"\"进行转义
      • 参数之间用","进行分隔
    • 命令结束符";", 操作/对象/参数均采用小写字母HW采用的都是大写字母

  • 目前现有的各个网元的命令格式

    除了UDM签约数据/鉴权数据的MML格式和上述格式基本一致, 各个网元的系统参数MML都不一样, 需统一成上述格式

    • UDM鉴权数据/签约数据

      add authdat:imsi=460000100000030,ki=805DADC6E8A54A0D59D622C7A04D08E0,amf=8000,algo=0,opc=CF7FD414E05754CFE08B4FE7F2EF2A36
      
    • UDM系统参数

      set n8ip 172.16.5.130
      
    • AMF系统参数

      set n8_ip 192.168.1.121
      
    • SMF/UPF系统参数

      set n7 server <http|https> <ip> <port>
      

6.1.2 MML配置表

  • 类型定义type

    • string

      filter指定字符串长度"filter": "6~100" , 字符串的长度范围,如果单个数字表示最大长度

    • ipv4

      filter忽略

    • ipv6

      filter忽略

    • int

      filter指定整型数的范围"filter": "100~999"

    • enum

      "filter": '{"0": "http", "1": "https"}'

    • bool

      "filter": '{"0": "false", "1": "true"}'

    • regex

      filter为正则表达式

  • Example

    udm:
      authdataManagement:
        display: "Authentication Data Management"
        mml:
          - operation: "dsp"
            object: "authdat"
            display: "Display Auth Data"
            params:
              - name: "imsi"
                type: "string"
                optional: "false"
                filter: ""
                display: "IMSI"
                comment: ""
      subscriberManagement:
        display: "Subcriber Management"
        mml:
          - operation: "dsp"
            object: "authdat"
            display: "Display Auth Data"
            params:
              - name: "imsi"
                type: "string"
                optional: "false"
                filter: ""
                display: "IMSI"
                comment: ""
      systemManagement:
        display: "System Management"
        mml:
          - operation: "set"
            object: "n8ip"
            display: "Set N8 IP Address"
            params:
              - name: "ip"
                type: "ipv4"
                optional: "false"
                filter: ""
                display: "IP Address"
                comment: ""
    

6.2 MML接口

  • URI

    /api/rest/operationManagement/v1/elementType/{elementTypeValue}/objectType/mml?ne_id={neId}
    
  • Relations

    OMC front-end -> OMC back-end

    OSS -> OMC (北向接口)

  • Params

    ne_id={neId}

  • Method

    POST

  • Body

    {
        "mml": [
            "date",
            "list ver",
            "list lic",
            "list comm"
        ]
    }
    
  • Return

    {
      "data": [
          "2023-05-11 17:52:32.37333745 +0800 CST m=+28762.188435351\n",
          "16.1.1\n",
          "Expiry date: 2024-12-31, sn: 13740272\n",
          "COMMAND NOT FOUND, opr: list, obj: comm\n"
      ]
    }
    

7 北向接口(NBI)

7.1 查询资源数据接口

  • URI

    /api/rest/resourceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/{objectTypeValue}?rmUIDs={rmUIDValues}&fields={attributeNames}
    
  • Relations

    OMC -> NF

    OSS -> OMC (北向接口)

  • Params

    • rmUIDs={rmUIDValues}

      可携带多额rmUID(统一资源定位符), OMC->NF不带

    • fields={attributeNames}

      属性域集合={属性名列表}, 指定资源对象多个属性名的英文逗号分割,一个属性名时无英文逗号。

  • Method

    GET

  • Body

    GET /api/rest/resourceManagement/v1/elementType/SMF/objectType/ManagedElement?rmUIDs=1101AGTHXSMF0000015704000100&fields=UserLabel HTTP/1.1
    accessToken: 52661fbd-6b84-4fc2-aa1e-17879a5c6c9b
    Host: serverIP:port
    Content-Type: application/json; charset=UTF-8
    Content-Length:…
    {
    }
    
  • Return

    HTTP/1.1 200 OK
    Content - Type: application/json 
    Content-Length:…
    {
      "data": [{
      "rmUID": "1101AGTHXSMF0000015704000100",
      "UserLabel": "SMFRJBJJC01",
      ...
        }]
    }
    

8 文件接口

8.1 软件管理

8.1.1 软件包管理接口

  • URI

    /api/rest/systemManagement/v1/{neType}/software/{version}?md5Sum={md5Sum}
    
  • Relations

    OMC front-end -> OMC back-end

  • Params

    md5Sum={md5Sum}

  • Method

    • POST: upload to OMC, 上传文件到OMC, content_type=multipart/form-data
    • GET: download from omc, 下载文件到OMC, content_type=multipart/form-data
    • DELETE: delete from omc
  • Body

    POST: 软件包文件, OMC按网元类型存储文件如果文件名相同则会覆盖

  • Return

    • POST/DELETE: code=204
    • GET: code=200, 返回文件

8.1.2 网元软件包管理接口

  • URI

    /api/rest/systemManagement/v1/{neType}/software/{version}/{neId}
    
  • Relations

    OMC front-end -> OMC back-end

  • Params

  • Method

    • POST: distribute to NF
    • PUT: active
    • PATCH: rollback
  • Body

    NA

  • Return

    Code: 204 Not content

8.2 License管理

8.2.1 网元License管理接口

  • URI

    /api/rest/systemManagement/v1/elementType/{elementTypeValue}/objectType/license?neId={neId}
    
  • Relations

    OMC front-end -> OMC back-end ->NF

  • Params

  • Method

    POST: Upload license to NF

  • Body

    • licens文件, content_type=multipart/form-data
    • 附加license说明字段信息: "comment": "..."
  • Return

    Code: 204 Not content

9 4A接口

9.1 从账号(user)管理接口

9.1.1 查询全部从账号(user)接口

  • URI

    /api/rest/aaaa/v1/security/users
    
  • Relations

    4A -> OMC

  • Params

  • Method

    GET

  • Body

    
    
  • Return

    
    

9.1.2 单个从账号(user)接口

  • URI

    /api/rest/aaaa/v1/security/users/{id}
    
  • Relations

    4A -> OMC

  • Params

  • Method

    GET/POST/PUT/DELETE

  • Body

    
    
  • Return

    
    

9.2 角色(role)管理接口

9.2.1 查询全部角色(role)接口

  • URI

    /api/rest/aaaa/v1/security/roles
    
  • Relations

    4A -> OMC

  • Params

  • Method

    GET

  • Body

    
    
  • Return

    
    

9.2.2 单个角色(role)接口

  • URI

    /api/rest/aaaa/v1/security/roles/{id}
    
  • Relations

    4A -> OMC

  • Params

  • Method

    GET/POST/PUT/DELETE

  • Body

    
    
  • Return

    
    

9.3 登录认证接口

9.2.1 登录认证

  • URI

    /api/rest/aaaa/v1/security/authentication/token
    
  • Relations

    4A -> OMC

  • Params

  • Method

    GET

  • Body

    
    
  • Return

    
    

10 核心网用户信息接口

10.1 UDM签约用户

10.1.1 查询/增加/修改/删除/批量增加/批量修改/批量删除

用MML接口

10.2 UDM鉴权用户

10.2.1 查询/增加/修改/删除/批量增加/批量修改/批量删除

用MML接口

10.3 UE信息

10.3.1 查询SMF在线用户数

  • Uri

    /api/rest/ueManagement/v1/elementType/smf/objectType/ueNum?neId={neId}
    
  • Relations

    OMC -> SMF

  • Params

    OMC-FE -> OMC-BE, neId={neId}, 指定SMF的neId

  • Method

    GET

  • Body

    NA

  • Return

  // SmfUENum SMF在线用户数
  type SmfUENum struct {
    UENum int `json:"ueNum"` // 当前在线用户数
  }
  {
    "data":
      {
          "ueNum": 6
      }
  }

10.3.2 查询SMF在线用户

说明为了避免在线用户太多SMF可做限制如返回不超过100条

  • Uri

    /api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo?imsi={imsi}&msisdn={msisdn}&neId={neId}
    
  • Relations

    OMC -> SMF

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定SMF的neId
    • OMC -> SMF, imsi={imsi} 或者 msisdn={msisdn}可选如果都不指定则查询全部ueInfo
  • Method

    GET

  • Body

    NA

  • Return

  // SmfUEInfo SMF在线用户信息
  type SmfUEInfo []struct {
    IMSI           string `json:"imsi"`
    MSISDN         string `json:"msisdn"`
    RatType        string `json:"ratType"`
    PduSessionInfo []struct {
      PduSessionID int    `json:"pduSessionID"`
      IPv4         string `json:"ipv4"`
      IPv6         string `json:"ipv6"`
      Dnn          string `json:"dnn"`
      Tai          string `json:"tai"`
      SstSD        string `json:"sstSD"`
      UpfN3IP      string `json:"upfN3IP"`
      RanN3IP      string `json:"ranN3IP"`
      Activetime   string `json:"activeTime"`
    } `json:"pduSessionInfo"`
  }
  {
    "data": [ 
        {
            "imsi": "460000100000010",
            "msisdn": "12307550010",
            "pduSessionInfo": [
              {
                "pduSessionID": "1",
                "ipv4": "172.16.5.5",
                "...": "..."
              },
              {
                "pduSessionID": "2",
                "ipv4": "172.16.5.6",
                "...": "..."
              }
            ]  
        },
        {
            "imsi": "460000100000238",
            "msisdn": "12307550238",
            "pduSessionInfo": [
              {
                "pduSessionID": "3",
                "ipv4": "172.16.5.7",
                "...": "..."
              },
              {
                "pduSessionID": "4",
                "ipv4": "172.16.5.8",
                "...": "..."
              }
            ]  
        }  
    ]  
  }

10.4 IMS在线用户信息

10.4.1 查询IMS在线用户信息

说明为了避免在线用户太多IMS可做限制如返回不超过100条

  • Uri

    /api/rest/ueManagement/v1/elementType/ims/objectType/ueInfo?imsi={imsi}&msisdn={msisdn}&neId={neId}
    
  • Relations

    OMC -> IMS

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定IMS的neId
    • OMC -> IMS, imsi={imsi} 或者 msisdn={msisdn}可选如果都不指定则查询全部ueInfo
  • Method

    GET

  • Body

    NA

  • Return

  // ImsUEInfo IMS在线用户信息
  type ImsUEInfo []struct {
    IMSI       string `json:"imsi"`
    MSISDN     string `json:"msisdn"`
    IMPU       string `json:"impu"`
    Barring    int    `json:"barring"`
    RegState   int    `json:"regState"`
    Activetime string `json:"activeTime"`
  }
  {
    "data": [
        {
          "imsi": "460000100000010",
          "msisdn": "12307550010",
          "impu": "sip:12307550010@ims.mnc000.mcc460.3gppnetwork.org",
          "barring": 0,
          "regState": 1,
          "activeTime": "2023-07-11 18:26:46"
        },
        {
          "imsi": "460000100000238",
          "msisdn": "12307550038",
          "impu": "sip:12307550238@ims.mnc000.mcc460.3gppnetwork.org",
          "barring": 0,
          "regState": 1,
          "activeTime": "2023-07-11 18:26:46"
        }  
    ]
  }

10.5 基站信息

10.5.1 查询某个AMF下的基站信息

  • Uri

    /api/rest/ueManagement/v1/elementType/amf/objectType/nbInfo?nbId={nbId}&neId={neId}
    
  • Relations

    OMC -> AMF

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定AMF的neId
    • OMC -> AMF, nbId={nbId}, 可选,如果不指定则查询全部基站信息
  • Method

    GET

  • Body

    NA

  • Return

  // AmfNBInfo AMF的NodeB信息
  type AmfNBInfo []struct {
    ID      string `json:"id"`      //NodeB ID
    Name    string `json:"name"`    // NodeB name
    Address string `json:"address"` // 基站地址
    UENum   int    `jons:"ueNum"`   // UE数量
  }
  {
      "data": [
          {
              "id": "6001",
              "name": "NB6001",
              "address": "192.168.1.245:36412",
              "ueNum": 2
          },
          {
              "id": "6002",
              "name": "NB6002",
              "address": "192.168.1.246:36412",
              "ueNum": 6
          }  
      ]
  }

10.6 N3IWF在线用户信息

10.6.1 查询N3IWF在线用户信息

说明为了避免在线用户太多N3IWF可做限制如返回不超过100条

  • Uri

    /api/rest/ueManagement/v1/elementType/n3iwf/objectType/ueInfo?imsi={imsi}&neId={neId}
    
  • Relations

    OMC -> IMS

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定IMS的neId
    • OMC -> IMS, imsi={imsi} 可选如果都不指定则查询全部ueInfo
  • Method

    GET

  • Body

    NA

  • Return

// N3iwfUEInfo N3IWF在线用户信息
type N3iwfUEInfo struct {
	IMSI string `json:"imsi"`

	NAI string `json:"nai"`
	RegState int `json:"regState"`
	Activetime string `json:"activeTime"`
}

type N3iwfUEData struct {
	Data []N3iwfUEInfo `json:"data"`
}
{
    "data": [
        {
          "imsi": "460000100000010",
          "nai": "",
          "regState": 1,
          "activeTime": "2023-07-11 18:26:46"
        },
        {
          "imsi": "460000100000011",
          "nai": "",
          "regState": 1,
          "activeTime": "2023-07-11 18:26:46"
        }  
    ]
}

10.7 PCF用户策略控制信息

10.7.1 查询/增加/修改/删除

说明为了避免用户策略控制信息太多PCF可做限制如返回不超过100条

  • URI

    /api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?imsi={imsi}&msisdn={msisdn}&neId={neId}
    
  • Relations

    OMC -> PCF

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定PCF的neId
    • OMC -> PCF, 查询(GET)imsi={imsi}/msisdn={msisdn}两个必填一个都填以imsi为主如果都不指定则查询全部ueInfo
    • OMC -> PCF, POST/PUT/DELETE: imsi={imsi} 必选
  • Method

    GET/POST/PUT/DELETE

  • Body (POST/PUT)

    // PCF UEInfo PCF用户策略控制信息
    type PcfUser struct {
    	Imsi string `json:"imsi,omitempty"`
    	Msisdn string `json:"msisdn,omitempty"`
    
    	Rfsp int `json:"rfsp,omitempty"`// 0-256
    	Sar string `json:"sar,omitempty"`
    
    	PccRules string `json:"pccRules,omitempty"`
    	SessRules string `json:"sessRules,omitempty"`
    	UePolicy string `json:"uePolicy,omitempty"`
    	QosAudio string `json:"qosAudio,omitempty"`
    	QosVideo string `json:"qosVideo,omitempty"`
    	HdrEnrich string `json:"hdrEnrich,omitempty"`
    }
    
  • Return (GET)

// PCF UEInfo PCF用户策略控制信息
type PcfUser struct {
	Imsi string `json:"imsi,omitempty"`
	Msisdn string `json:"msisdn,omitempty"`

	Rfsp int `json:"rfsp,omitempty"`// 0-256
	Sar string `json:"sar,omitempty"`

	PccRules string `json:"pccRules,omitempty"`
	SessRules string `json:"sessRules,omitempty"`
	UePolicy string `json:"uePolicy,omitempty"`
	QosAudio string `json:"qosAudio,omitempty"`
	QosVideo string `json:"qosVideo,omitempty"`
	HdrEnrich string `json:"hdrEnrich,omitempty"`
}
  {
    "data": [
        {
          "imsi": "460000100000010",
          "msisdn": "12307550010",
          "rfsp": 1,
          "sar": "",
	  ......
        },
        {
          "imsi": "460000100000038",
          "msisdn": "12307550038",
          "rfsp": 2,
          "sar": "",
	  ......
        }  
    ]
  }

10.7.2 批量增加/批量修改/批量删除

  • URI
/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/number?imsi={imsi}&neId={neId}
  • Relations

    OMC -> PCF

  • Params

    • OMC-FE -> OMC-BE, neId={neId}, 指定PCF的neId
    • OMC -> PCF, imsi={imsi} 必选
  • Method

    POST/PUT/DELETE

  • Body

    // PCF UEInfo PCF用户策略控制信息
    type PcfUser struct {
    	Imsi string `json:"imsi,omitempty"`
    	Msisdn string `json:"msisdn,omitempty"`
    
    	Rfsp int `json:"rfsp,omitempty"`// 0-256
    	Sar string `json:"sar,omitempty"`
    
    	PccRules string `json:"pccRules,omitempty"`
    	SessRules string `json:"sessRules,omitempty"`
    	UePolicy string `json:"uePolicy,omitempty"`
    	QosAudio string `json:"qosAudio,omitempty"`
    	QosVideo string `json:"qosVideo,omitempty"`
    	HdrEnrich string `json:"hdrEnrich,omitempty"`
    }
    
  • Return

// PCF UEInfo PCF用户策略控制信息
type PcfUser struct {
	Imsi string `json:"imsi,omitempty"`
	Msisdn string `json:"msisdn,omitempty"`

	Rfsp int `json:"rfsp,omitempty"`// 0-256
	Sar string `json:"sar,omitempty"`

	PccRules string `json:"pccRules,omitempty"`
	SessRules string `json:"sessRules,omitempty"`
	UePolicy string `json:"uePolicy,omitempty"`
	QosAudio string `json:"qosAudio,omitempty"`
	QosVideo string `json:"qosVideo,omitempty"`
	HdrEnrich string `json:"hdrEnrich,omitempty"`
}
  {
    "data": [
        {
          "imsi": "460000100000010",
          "msisdn": "12307550010",
          "rfsp": 1,
          "sar": "",
	  ......
        },
        {
          "imsi": "460000100000038",
          "msisdn": "12307550038",
          "rfsp": 2,
          "sar": "",
	  ......
        }  
    ]
  }

11 系统管理

11.1 OMC系统

11.1.1 获取OMC时间接口

  • Uri

    /api/rest/systemManagement/v1/elementType/OMC/objectType/time
    
  • Relations OMC FE -> OMC BE

  • Params

    NA

  • Method GET

  • Body NA

  • Return

    // OMC time 信息
    type OMCLocalTime struct {
        Timestamp int64  `json:"timestamp"`   // 时间戳 (单位:毫秒)
        TimeZone  int    `json:"timeZone"`    // 本地时区偏移(单位:秒)
    }
    

    Expample:

    {
      "data": 
        {
          "timestamp": "1697101301164"
          "timeZone": "28800"
        }
    }