From a6b5eec99eab62e241eee553040397eb33b87db3 Mon Sep 17 00:00:00 2001 From: yzlin Date: Tue, 15 Oct 2024 07:19:24 +0000 Subject: [PATCH] feat: add NEF --- Makefile | 4 +++- cert/nef.key | 27 +++++++++++++++++++++++++++ cert/nef.pem | 20 ++++++++++++++++++++ config/nefcfg.yaml | 23 +++++++++++++++++++++++ docker-compose-build.yaml | 22 ++++++++++++++++++++++ docker-compose-ulcl-build.yaml | 22 ++++++++++++++++++++++ docker-compose-ulcl.yaml | 19 +++++++++++++++++++ docker-compose.yaml | 19 +++++++++++++++++++ nf_nef/Dockerfile | 29 +++++++++++++++++++++++++++++ 9 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 cert/nef.key create mode 100644 cert/nef.pem create mode 100644 config/nefcfg.yaml create mode 100644 nf_nef/Dockerfile diff --git a/Makefile b/Makefile index 9d3913d..fc02897 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ DOCKER_IMAGE_NAME = 'base' DOCKER_IMAGE_TAG = 'latest' .PHONY: base -all: base amf ausf nrf nssf pcf smf udm udr n3iwf upf chf tngf webconsole +all: base amf ausf nrf nssf pcf smf udm udr n3iwf upf chf tngf nef webconsole base: docker build -t ${DOCKER_IMAGE_OWNER}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} ./base @@ -33,6 +33,8 @@ chf: base docker build --build-arg F5GC_MODULE=chf -t ${DOCKER_IMAGE_OWNER}/chf-base:${DOCKER_IMAGE_TAG} -f ./base/Dockerfile.nf ./base tngf: base docker build --build-arg F5GC_MODULE=tngf -t ${DOCKER_IMAGE_OWNER}/tngf-base:${DOCKER_IMAGE_TAG} -f ./base/Dockerfile.nf ./base +nef: base + docker build --build-arg F5GC_MODULE=nef -t ${DOCKER_IMAGE_OWNER}/nef-base:${DOCKER_IMAGE_TAG} -f ./base/Dockerfile.nf ./base webconsole: base docker build -t ${DOCKER_IMAGE_OWNER}/webconsole-base:${DOCKER_IMAGE_TAG} -f ./base/Dockerfile.nf.webconsole ./base diff --git a/cert/nef.key b/cert/nef.key new file mode 100644 index 0000000..4351a22 --- /dev/null +++ b/cert/nef.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAqXpvTc1WpUqw6NI6+VcjBDf4tE2Zg/ebZx7Dr3th9P7GAI66 +kVyooVm89asvZIadg+0kRzuHR8cAohaBOrHGdQttdox2Tz14nNqOtIMTg42YhOxF +uS9MLL6bR+TzLi6OElT+SZMFBsGGdNVUR3U0sf0VkblzgipbiKnJqDQoeH/4RHec +lrwIBqsrbKgVSsNhEPQWCaErFHnZnfR48/UHVY+9lFlQsBcgX1IM9lR/EgudBZWY +BIx0wTYy+Tq4kR7+GtJxlfmEWT3bACI2uY1D9u1zpvjf3cxwwk0K4oT7WLIq/onR +eITyTbocHtMhGqvM6iryh81PlaFhmQeBLLE4WQIDAQABAoIBAC9RieYVIM4Brqcy +m1impZY18nCVAfnAllkSU9yY/F6lC694KksPrd1u6r1E0HSmyS/edDSXQEwgGeMn +mWlD3X8sc6GX0iiJpzVUKGfp+PbP//eM6GKt+/y6Myy9ldAdG3mu1VjBfbPHML1K +Gr/gz5eqa+1F9CQxo2Di1vTpqysJS2UKiW0VCIYPM+gTUWj1mgiGt56yk/p6YAyS ++6DZm19k+zr1M+d6iKPySfYOpC2UhyrbWWUNlMAERjm/cPkCRoHrrM9ZpHvSLxmL +ABSG6OX4iDNQexDeIdrRWPHeArJ9cB/ucHhkAvFXLWrYZYCwfQijz/Yxa6ZzPZKW +gJxWcaECgYEA2PK/QuD7FSxgUokDbqWnsFL8O2gHuOCi0lps268lRbrUM6KhFjg5 +KCjUzayvFqC3s0aMXXZ1/VoN8JgCiWIMbVmmBaAYEOe4ajlqOMhLD2kKqaZ3yI2X +UJz1zGtV5lZuBQ6FOGNWTETlUBIFtg+goEH7Zf7VC8z/i1IVtyYcCCUCgYEAx/w1 +5UHu3w4BZaUPYOJJ9RktJ/q+ptIDQl/xt1mAFzZ/u/m3WVJsDnOA1IGvHTnjHELK +078Y4CRoY4mEXfZPJsl7PArVDr8huwrLqwNDwJZ77YMjkpRhhYlUK12KLlMocC42 +V8p+YFenELAE9Lky4jYRCoGejyq4yAJVYq3sbyUCgYB842kE9/yyWKRuft9R79zT +nUIEdMOVQwOYMmPeJzo+pOmJfAJdhyooGzE94T29ufFmK6OcHhiYKyJBMVCsg5wB +ywzOyjVwbeR0ie7DF1JWYbK4rNLhydikmGbLMbL2cSTOlmhMaKsCJtsXN/i/sMlX +2AP/2C4OqAkny64ii7axXQKBgAbOCC9y3OPuIBILWcicKpQSdTzlBVO71ayOgzUP +8JHZouMMjjaV3WNofru8Ze8Cpz2w8CHgYMJPutWYOk7QMMVLGcxjOfi0fDtXFLMO ++2E0PadJTQ6Ryfe3QovvNOJ6peebSvIVy9MPaHni42hIXPjhihbnbjPE6mCz45/l +9yOZAoGANrcL3qNMD6PDIvknr3Y7rhMStZsEdkFEGBTUSP4pZbwHnNIKX5iQluw7 +Aawx2ZidYh89X8LFkPsup5OGTrAUP/TPCgXA+aZlO0yjVMCFlA7D+MTiNOeSOe// +0dAVhuRAFS510v0NfSPlLnSfA69jEcpuewf94ITMRj6MIiYLpxc= +-----END RSA PRIVATE KEY----- diff --git a/cert/nef.pem b/cert/nef.pem new file mode 100644 index 0000000..412d617 --- /dev/null +++ b/cert/nef.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIJANC4esPC102UMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV +BAYTAlRXMRAwDgYDVQQIDAdIc2luY2h1MQ0wCwYDVQQHDARjaXR5MRAwDgYDVQQK +DAdmcmVlNUdDMB4XDTE5MDcxODA3NTkwOFoXDTI5MDcxNTA3NTkwOFowQDELMAkG +A1UEBhMCVFcxEDAOBgNVBAgMB0hzaW5jaHUxDTALBgNVBAcMBGNpdHkxEDAOBgNV +BAoMB2ZyZWU1R0MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpem9N +zValSrDo0jr5VyMEN/i0TZmD95tnHsOve2H0/sYAjrqRXKihWbz1qy9khp2D7SRH +O4dHxwCiFoE6scZ1C212jHZPPXic2o60gxODjZiE7EW5L0wsvptH5PMuLo4SVP5J +kwUGwYZ01VRHdTSx/RWRuXOCKluIqcmoNCh4f/hEd5yWvAgGqytsqBVKw2EQ9BYJ +oSsUedmd9Hjz9QdVj72UWVCwFyBfUgz2VH8SC50FlZgEjHTBNjL5OriRHv4a0nGV ++YRZPdsAIja5jUP27XOm+N/dzHDCTQrihPtYsir+idF4hPJNuhwe0yEaq8zqKvKH +zU+VoWGZB4EssThZAgMBAAGjUDBOMB0GA1UdDgQWBBTRNsNPYUMfmh6xMHsYpdhz +GAlUszAfBgNVHSMEGDAWgBTRNsNPYUMfmh6xMHsYpdhzGAlUszAMBgNVHRMEBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQANX8eve1eV6G8m6kcBeD664yI9v9ELVXPV +XJ06Vlrcx3xYzpyO2aIDlbA++zfS1Fdlczmn1bSh2jKyRi0JPq8Bc2bvpKUPU+jL +vYIcbLaUkT+YeknDOOMDLpwpZRyuTWw1dZg/LnlGkuSgjgpvyrNhXdx216TwgjGX +ao7hqQDzumH/CIX1/Bw19xjvy8y21fqgIjpgL4yB/1erC4i/I2Z+mZEb3DH459gz +sTmrUHUjO0mSVHmnLYKaYJbRYQGPUQTg5fIYasOAFG3K3C485MGRgMiSkrAC7A2M +ZHioUNtm3XF9tfE1srtLsPGfypiM/hiGWIlgYJHUh8NYjQIXF9Pb +-----END CERTIFICATE----- diff --git a/config/nefcfg.yaml b/config/nefcfg.yaml new file mode 100644 index 0000000..5bb18a5 --- /dev/null +++ b/config/nefcfg.yaml @@ -0,0 +1,23 @@ +info: + version: 1.0.1 + description: NEF initial local configuration + +configuration: + sbi: + scheme: http # The protocol for sbi (http or https) + registerIPv4: nef.free5gc.org # IP used to register to NRF + bindingIPv4: nef.free5gc.org # IP used to bind the service + port: 8000 # port used to bind the service + tls: # the local path of TLS key + pem: cert/nef.pem # NEF TLS Certificate + key: cert/nef.key # NEF TLS Private key + nrfUri: http://nrf.free5gc.org:8000 # A valid URI of NRF + nrfCertPem: cert/nrf.pem # NRF Certificate + serviceList: # the SBI services provided by this NEF + - serviceName: nnef-pfdmanagement # Nnef_PFDManagement Service + - serviceName: nnef-oam # OAM service + +logger: # log output setting + enable: true # true or false + level: info # how detailed to output, value: trace, debug, info, warn, error, fatal, panic + reportCaller: false # enable the caller report or not, value: true or false diff --git a/docker-compose-build.yaml b/docker-compose-build.yaml index 85f470b..ebc2499 100644 --- a/docker-compose-build.yaml +++ b/docker-compose-build.yaml @@ -275,6 +275,28 @@ services: - free5gc-smf - free5gc-upf + free5gc-nef: + container_name: nef + build: + context: ./nf_nef + args: + DEBUG_TOOLS: "false" + command: ./nef -c ./config/nefcfg.yaml + expose: + - "8000" + volumes: + - ./config/nefcfg.yaml:/free5gc/config/nefcfg.yaml + - ./cert:/free5gc/cert + environment: + GIN_MODE: release + networks: + privnet: + aliases: + - nef.free5gc.org + depends_on: + - db + - free5gc-nrf + free5gc-webui: container_name: webui build: diff --git a/docker-compose-ulcl-build.yaml b/docker-compose-ulcl-build.yaml index 8305327..9367a4c 100644 --- a/docker-compose-ulcl-build.yaml +++ b/docker-compose-ulcl-build.yaml @@ -246,6 +246,28 @@ services: - free5gc-nrf - free5gc-webui + free5gc-nef: + container_name: nef + build: + context: ./nf_nef + args: + DEBUG_TOOLS: "false" + command: ./nef -c ./config/nefcfg.yaml + expose: + - "8000" + volumes: + - ./config/nefcfg.yaml:/free5gc/config/nefcfg.yaml + - ./cert:/free5gc/cert + environment: + GIN_MODE: release + networks: + privnet: + aliases: + - nef.free5gc.org + depends_on: + - db + - free5gc-nrf + free5gc-webui: container_name: webui build: diff --git a/docker-compose-ulcl.yaml b/docker-compose-ulcl.yaml index e309e67..244bd4b 100644 --- a/docker-compose-ulcl.yaml +++ b/docker-compose-ulcl.yaml @@ -204,6 +204,25 @@ services: - db - free5gc-nrf - free5gc-webui + + free5gc-nef: + container_name: nef + image: free5gc/nef:latest + command: ./nef -c ./config/nefcfg.yaml + expose: + - "8000" + volumes: + - ./config/nefcfg.yaml:/free5gc/config/nefcfg.yaml + - ./cert:/free5gc/cert + environment: + GIN_MODE: release + networks: + privnet: + aliases: + - nef.free5gc.org + depends_on: + - db + - free5gc-nrf free5gc-webui: container_name: webui diff --git a/docker-compose.yaml b/docker-compose.yaml index 2c3962f..8d11a03 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -238,6 +238,25 @@ services: - free5gc-smf - free5gc-upf + free5gc-nef: + container_name: nef + image: free5gc/nef:latest + command: ./nef -c ./config/nefcfg.yaml + expose: + - "8000" + volumes: + - ./config/nefcfg.yaml:/free5gc/config/nefcfg.yaml + - ./cert:/free5gc/cert + environment: + GIN_MODE: release + networks: + privnet: + aliases: + - nef.free5gc.org + depends_on: + - db + - free5gc-nrf + free5gc-webui: container_name: webui image: free5gc/webui:v3.4.3 diff --git a/nf_nef/Dockerfile b/nf_nef/Dockerfile new file mode 100644 index 0000000..3b38b77 --- /dev/null +++ b/nf_nef/Dockerfile @@ -0,0 +1,29 @@ +FROM free5gc/nef-base:latest AS builder +FROM alpine:3.15 + +LABEL description="Free5GC open source 5G Core Network" \ + version="Stage 3" + +ENV F5GC_MODULE nef +ARG DEBUG_TOOLS + +# Install debug tools ~ 100MB (if DEBUG_TOOLS is set to true) +RUN if [ "$DEBUG_TOOLS" = "true" ] ; then apk add -U vim strace net-tools curl netcat-openbsd ; fi + +# Set working dir +WORKDIR /free5gc +RUN mkdir -p config/ log/ cert/ + +# Copy executable and default certs +COPY --from=builder /free5gc/${F5GC_MODULE} ./ +COPY --from=builder /free5gc/cert/${F5GC_MODULE}.pem ./cert/ +COPY --from=builder /free5gc/cert/${F5GC_MODULE}.key ./cert/ + +# Config files volume +VOLUME [ "/free5gc/config" ] + +# Certificates (if not using default) volume +VOLUME [ "/free5gc/cert" ] + +# Exposed ports +EXPOSE 8000