Git Product home page Git Product logo

open5gs / open5gs Goto Github PK

View Code? Open in Web Editor NEW
1.6K 101.0 684.0 65.06 MB

Open5GS is a C-language Open Source implementation for 5G Core and EPC, i.e. the core network of LTE/NR network (Release-17)

Home Page: https://open5gs.org

License: GNU Affero General Public License v3.0

Python 0.37% C 97.54% C++ 0.01% Shell 0.17% JavaScript 0.49% CSS 0.01% Awk 0.01% Dockerfile 0.01% Meson 0.48% Mustache 0.93%
5g 5gc 4g epc lte core network open5gs nr 3gpp

open5gs's Introduction

Open5GS logo

Getting Started

Please follow the documentation at open5gs.org!

Sponsors

If you find Open5GS useful for work, please consider supporting this Open Source project by Becoming a sponsor. To manage the funding transactions transparently, you can donate through OpenCollective.

Special Sponsor

special sponsor mobi

sponsors

Community

  • Problem with Open5GS can be filed as issues in this repository.
  • Other topics related to this project are happening on the discussions.
  • Voice and text chat are available in Open5GS's Discord workspace. Use this link to get started.

Contributing

If you're contributing through a pull request to Open5GS project on GitHub, please read the Contributor License Agreement in advance.

License

open5gs's People

Contributors

acetcom avatar anarkiwi avatar bmeglic avatar bojanhub avatar brandonjlee avatar cgiraldo avatar edipascale avatar eugenebogush avatar gstaa avatar herlesupreeth avatar infercom2 avatar jmasterfunk84 avatar jyounggo avatar kbarlee avatar laf0rge avatar lester-001 avatar lynxis avatar matejgradisar avatar matt9j avatar mcatalancid avatar medeiros405 avatar miaoski avatar mitmitmitm avatar nickvsnetworking avatar osmith42 avatar pespin avatar pobk avatar spencersevilla avatar ssafaorhan avatar zhonglin6666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open5gs's Issues

MME respons to S1AP on wrong PPID

When my eNodeB is sending the S1SetupRequest on PPID=18 (S1AP), the S1SetupResponse is sent on PPID=0.

Output from TRACE S1AP=5

[S1AP] Decode S1ap_S1SetupRequestIEs
<S1ap-S1SetupRequestIEs-PDU>
    <S1ap-Criticality><reject/></S1ap-Criticality>
    <S1ap-ProcedureCode>17</S1ap-ProcedureCode>
    <S1ap-S1SetupRequestIEs>
        <S1ap-Global-ENB-ID>
            <pLMNidentity>32 F4 26</pLMNidentity>
            <eNB-ID>
                <macroENB-ID>
                    00000000000000111100
                </macroENB-ID>
            </eNB-ID>
        </S1ap-Global-ENB-ID>
        <S1ap-ENBname>SC5020</S1ap-ENBname>
        <S1ap-SupportedTAs>
            <S1ap-SupportedTAs-Item>
                <tAC>00 00</tAC>
                <broadcastPLMNs>
                    <S1ap-PLMNidentity>32 F4 26</S1ap-PLMNidentity>
                </broadcastPLMNs>
            </S1ap-SupportedTAs-Item>
        </S1ap-SupportedTAs>
        <S1ap-PagingDRX><v32/></S1ap-PagingDRX>
    </S1ap-S1SetupRequestIEs>
</S1ap-S1SetupRequestIEs-PDU>

s1ap_state_operational(): MME_EVT_S1AP_MESSAGE
[S1AP] S1SetupRequest : eNB[192.168.100.182:60] --> MME
<S1ap-S1SetupResponseIEs-PDU>
    <S1ap-Criticality><reject/></S1ap-Criticality>
    <S1ap-ProcedureCode>17</S1ap-ProcedureCode>
    <S1ap-S1SetupResponseIEs>
        <S1ap-ServedGUMMEIs>
            <S1ap-ServedGUMMEIsItem>
                <servedPLMNs>
                    <S1ap-PLMNidentity>00 F1 10</S1ap-PLMNidentity>
                </servedPLMNs>
                <servedGroupIDs>
                    <S1ap-MME-Group-ID>00 02</S1ap-MME-Group-ID>
                </servedGroupIDs>
                <servedMMECs>
                    <S1ap-MME-Code>01</S1ap-MME-Code>
                </servedMMECs>
            </S1ap-ServedGUMMEIsItem>
        </S1ap-ServedGUMMEIs>
        <S1ap-RelativeMMECapacity>255</S1ap-RelativeMMECapacity>
    </S1ap-S1SetupResponseIEs>
</S1ap-S1SetupResponseIEs-PDU>

When looking at the protocol trace with wireshark, the response is a SCTP DATA chunk with PPID=0

"npm run build" fails on Debian

When trying to "npm run build" on debian unstable, I get

$ npm run build 

> [email protected] build /space/home_laforge/projects/git/nextepc/webui
> next build

> Using external babel configuration
> Location: "/space/home_laforge/projects/git/nextepc/webui/.babelrc"
> Failed to build on /tmp/0fa1c420-e694-4069-846c-a2eee0ea7a07
{ Error: ./pages/_document.js?entry
Module build failed: ReferenceError: Unknown plugin "module-resolver" specified in "/space/home_laforge/projects/git/nextepc/webui/.babelrc" at 2, attempted to resolve relative to "/space/home_laforge/projects/git/nextepc/webui"
    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:180:17
    at Array.map (native)
    at Function.normalisePlugins (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:158:20)
    at OptionManager.mergeOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:234:36)
    at OptionManager.init (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
    at File.initOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:212:65)
    at new File (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:135:24)
    at Pipeline.transform (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/index.js:49:20)
    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/fs-cache.js:118:18
 @ multi ./pages/_document.js?entry
    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/dist/server/build/index.js:182:21
    at emitRecords.err (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:269:13)
    at Compiler.emitRecords (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:375:38)
    at emitAssets.err (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:262:10)
    at applyPluginsAsyncSeries1.err (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:368:12)
    at next (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/node_modules/tapable/lib/Tapable.js:218:11)
    at Compiler.compiler.plugin (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/performance/SizeLimitsPlugin.js:99:4)
    at Compiler.applyPluginsAsyncSeries1 (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/node_modules/tapable/lib/Tapable.js:222:13)
    at Compiler.afterEmit (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:365:9)
    at require.forEach.err (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/webpack/lib/Compiler.js:360:15)
  errors: 
   [ './pages/_document.js?entry\nModule build failed: ReferenceError: Unknown plugin "module-resolver" specified in "/space/home_laforge/projects/git/nextepc/webui/.babelrc" at 2, attempted to resolve relative to "/space/home_laforge/projects/git/nextepc/webui"\n    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:180:17\n    at Array.map (native)\n    at Function.normalisePlugins (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:158:20)\n    at OptionManager.mergeOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:234:36)\n    at OptionManager.init (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)\n    at File.initOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:212:65)\n    at new File (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:135:24)\n    at Pipeline.transform (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/pipeline.js:46:16)\n    at transpile (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/index.js:49:20)\n    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/fs-cache.js:118:18\n @ multi ./pages/_document.js?entry',
     './pages?entry\nModule build failed: ReferenceError: Unknown plugin "module-resolver" specified in "/space/home_laforge/projects/git/nextepc/webui/.babelrc" at 2, attempted to resolve relative to "/space/home_laforge/projects/git/nextepc/webui"\n    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:180:17\n    at Array.map (native)\n    at Function.normalisePlugins (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:158:20)\n    at OptionManager.mergeOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:234:36)\n    at OptionManager.init (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)\n    at File.initOptions (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:212:65)\n    at new File (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/file/index.js:135:24)\n    at Pipeline.transform (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-core/lib/transformation/pipeline.js:46:16)\n    at transpile (/space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/index.js:49:20)\n    at /space/home_laforge/projects/git/nextepc/webui/node_modules/next/node_modules/babel-loader/lib/fs-cache.js:118:18\n @ multi ./pages?entry' ],
  warnings: [] }

npm ERR! [email protected] build: `next build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] build script.
npm ERR! This is most likely a problem with the nextepc package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     next build
npm ERR! You can get their info via:
npm ERR!     npm owner ls nextepc
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 4.12.0-2-amd64
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "run" "build"
npm ERR! cwd /space/home_laforge/projects/git/nextepc/webui
npm ERR! node -v v6.11.4
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian
 
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /space/home_laforge/projects/git/nextepc/webui/npm-debug.log
npm ERR! not ok code 0

Unfortunately I have absolutely no clue about fancy web stuff like node.js, so I don't really know what to do to make progress. I will re-try on a clean Debian 9 jail.

no need to implement log rotation internally

It seems like nextepc is implementing log rotation internally, at least judging from the below log messages:

Can't rename '/var/log/nextepc.log' to '/var/log/nextepc.log.0'
freeDiameter[1]: Prepared 1 sets of connection parameters to peer hss.localdomain
Cannot write 82 bytes to log file (0 written)

This means that nextepc would have to run with permissions not only to the single log file it is writing to, but also with permissions to write/create new files in /var/log, which normally only root can do.

I would suggest to leave log file rotation up to logrotate, and simply re-open the log files on SIGHUP. This meachanism has worked for decades and is well-understood by sysadmins all over the planet.

https://linux.die.net/man/8/logrotate
https://wiki.archlinux.org/index.php/logrotate

This way, only logrotate needs to run with higher privileges, while the individual daemon (like nextepc) can run with regular user privilege, only with a single /var/log/nextepc.log writable to the nextepc user.

Error in mme deamon

Launching the command systemctl status nextepc-mmed, to see the status of the EPC I received the following information:

nextepc-mmed.service - NextEPC MME Daemon
Loaded: loaded (/lib/systemd/system/nextepc-mmed.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2018-03-19 10:46:03 CET; 20s ago
Process: 1797 ExecStart=/usr/bin/nextepc-mmed -f /etc/nextepc/mme.conf (code=exited, status=1/FAILURE)
Main PID: 1797 (code=exited, status=1/FAILURE)

How I can have more information? Do you know the typical reason of this problem

BR
Gian Michele

About macrocell S1 attach problem

Hi
I've tried to use macrocell to connect to Nextepc.
//It is manufactured according to 3GPP R8.
Nextepc has got S1 Setup Request and send back S1 Setup Response,
but the macrocell seems to work abnormal.
I've tried another EPC called NG40.
It works well with macrocell.
Can you help me to find the problem?

I mark the S1 Setup message number for the following files:
NG40: nsn+ng40.pcap (702)
Nextepc: 0412_nextepc_with_macrocell_failed.pcapng (994,8130,22964)
pcap.zip

Thanks a lot!

LTE

Is it possible to have a master database in the data center and have local epc's at the site with a read only database.

Unable to add new user by webui

Hi,
I encounter a problem about adding new user.
After I key in the KI, OPC, IMSI and click "SAVE" button,
it jumps "403 forbidden" message.
How to solve it?
image
image

Thanks!

Documentation

HI,

Glad to see open source EPC being available. To start testing, I am looking for a configuration guide and high-level architecture document.

I am using OAI-EPC today and looking for a better open source EPC option. This looks promising. However, lack of documentation is discouraging me to try.

Thanks
-Praveen

UE attach problem

I try to attach an UE to the openairinterface5g (OAI) node conneted to the nextepc. I have some problem to at the beginning of the User attach.
The OAI eNB (IP 163.162.97.43) can be attached to the nextEPC (IP 163.162.89.33) but when an UE start the procedure to attached some problem occur respec whe the openaircn is used (IP 163.162.89.20):
OAI-NEXTEPC log: https://drive.google.com/open?id=1M4o5bGX7EZm0nw2nVtXK67cuTuYJVlb9
OAI-OAICN log: https://drive.google.com/open?id=16DAZcPcA0MQI-eGdcl7N_939B-3Ih5NM

I used the nextEPC web inferface to add the UE IMSI as described in: https://drive.google.com/open?id=1BG3HmjFAIgkA2jD7Y66ZIFQpg0RHHnuZ

can someone help me?

Below my hss configuration:

db_uri: mongodb://localhost/nextepc

logger:
file: /var/log/nextepc/hss.log
trace:
app: 1
diameter: 1

parameter:

hss:
freeDiameter: hss.conf
~

sock_write fail on GTP traffic

First of all, this project is awesome ๐Ÿ˜„

I've come pretty far, and I'm able to attach a UE. However, as soon as GTP traffic from the eNB enters NextEPC, it triggers errors like

ERRR: sock_write(len:302) failed(5:Input/output error) (unix/socket.c:549)
ERRR: sock_write() failed (pgw_gtp_path.c:173)

Can't attach UE

Hi,

I installed the application on Ubuntu:

All process are up and running.
IMSI was added via web to the HSS.
S1 is up, but UE not attached, see the errors on mme.log

Which can be the reason ?

Thanks in advance,

File Logging : '/var/log/nextepc/mme.log'
Configuration : '/etc/nextepc/mme.conf'
[03/13 12:47:57.090] MME try to initialize
[03/13 12:47:57.348] gtp_server() [192.168.15.140]:2123
[03/13 12:47:57.348] gtp_client() [127.0.0.2]:2123
[03/13 12:47:57.348] s1ap_server() [192.168.15.140]:36412
[03/13 12:47:57.349] MME initialize...done

[03/13 12:47:57.349] INFO: NextEPC daemon start (main.c:157)

[03/13 12:48:21.805] ERRR: ERROR: in '(fd_cnx_receive(c, &ts, &rcv_data.buffer, &rcv_data.length))' : Connection timed out (fd_init.c:116)
[03/13 12:48:27.270] eNB-S1 accepted[192.168.15.66]:36412 in s1_path module
[03/13 12:48:27.271] eNB-S1 accepted[192.168.15.66] in master_sm module
[03/13 12:49:01.665] ERRR: ERROR: in '(fd_cnx_receive(c, &ts, &rcv_data.buffer, &rcv_data.length))' : Connection timed out (fd_init.c:116)
[03/13 12:49:31.215] ERRR: ROUTING ERROR 'No remaining suitable candidate to route the message to' for: (fd_init.c:116)
[03/13 12:49:31.216] ERRR: 'Authentication-Information-Request' (fd_init.c:116)
[03/13 12:49:31.216] ERRR: Version: 0x01 (fd_init.c:116)
[03/13 12:49:31.216] ERRR: Length: 20 (fd_init.c:116)
[03/13 12:49:31.216] ERRR: Flags: 0xC0 (RP--) (fd_init.c:116)
[03/13 12:49:31.216] ERRR: Command Code: 318 (fd_init.c:116)
[03/13 12:49:31.217] ERRR: ApplicationId: 16777251 (fd_init.c:116)
[03/13 12:49:31.217] ERRR: Hop-by-Hop Identifier: 0x00000000 (fd_init.c:116)
[03/13 12:49:31.217] ERRR: End-to-End Identifier: 0x2AD09242 (fd_init.c:116)
[03/13 12:49:31.217] ERRR: {internal data}: src:(nil)(0) rwb:(nil) rt:0 cb:0x5636f8021b60,(nil)(0x563700412e50) qry:(nil) asso:0 sess:0x7fe0bc000ab0 (fd_init.c:116)
[03/13 12:49:31.218] ERRR: AVP: 'Session-Id'(263) l=8 f=-M val="mme.localdomain;1520956077;1;app_s6a" (fd_init.c:116)
[03/13 12:49:31.218] ERRR: AVP: 'Auth-Session-State'(277) l=12 f=-M val='NO_STATE_MAINTAINED' (1 (0x1)) (fd_init.c:116)
[03/13 12:49:31.218] ERRR: AVP: 'Origin-Host'(264) l=8 f=-M val="mme.localdomain" (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'Origin-Realm'(296) l=8 f=-M val="localdomain" (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'Destination-Realm'(283) l=8 f=-M val="localdomain" (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'User-Name'(1) l=8 f=-M val="001010000007245" (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'Requested-EUTRAN-Authentication-Info'(1408) vend='3GPP'(10415) l=12 f=VM val=(grouped) (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'Number-Of-Requested-Vectors'(1410) vend='3GPP'(10415) l=16 f=VM val=1 (0x1) (fd_init.c:116)
[03/13 12:49:31.219] ERRR: AVP: 'Immediate-Response-Preferred'(1412) vend='3GPP'(10415) l=16 f=VM val=1 (0x1) (fd_init.c:116)
[03/13 12:49:31.220] ERRR: AVP: 'Visited-PLMN-Id'(1407) vend='3GPP'(10415) l=12 f=VM val=<00 F1 10> (fd_init.c:116)
[03/13 12:49:31.220] ERRR: AVP: 'Vendor-Specific-Application-Id'(260) l=8 f=-M val=(grouped) (fd_init.c:116)
[03/13 12:49:31.220] ERRR: AVP: 'Vendor-Id'(266) l=12 f=-M val=10415 (0x28af) (fd_init.c:116)
[03/13 12:49:31.221] ERRR: AVP: 'Auth-Application-Id'(258) l=12 f=-M val=16777251 (0x1000023) (fd_init.c:116)
[03/13 12:49:31.221] WARN: ERROR DIAMETER Result Code(3002) (mme_fd_path.c:300)

No downlink traffic

Hi,
I installed Nextepc on Ubuntu 16.04
I'm able to attach to the eNB, but I can't surf the Internet.
I check the traffic log and find out there is no downlink traffic.
How can I solve the problem?

These are the log file and wireshark files.
files.zip
Thanks a lot

About source code

Why source code is coding in C not C++?

C++ oop allows for parallel development / the modular classes are often reusable / the coding is easier to maintain .

The utilized SCTP stream id does not conform with requirement of 36.412

According to 36.412 section 7 :

Within the SCTP association established between one MME and eNB pair:

- a single pair of stream identifiers shall be reserved for the sole use of S1AP
  elementary procedures that utilize non UE-associated signalling.

- At least one pair of stream identifiers shall be reserved for the sole use of S1AP
  elementary procedures that utilize UE-associated signallings. 
  However a few pairs (i.e. more than one) should be reserved.

- A single UE-associated signalling shall use one SCTP stream and the stream 
  should not be changed during the communication of the UE-associated signalling.

In S1AP messages recorded between OAI eNB and NextEPC :

  1. eNB launches non UE-associated procedure S1Setup using SCTP stream id 0.

non ue-associated procedure - s1setup procedure use stream id 0

  1. Afterward, eNB launches UE-associated procedure Initial UE Message with another SCTP stream id, i.e. id 1. This is correct.

ue-associated procedure initial ue message correctly use stream id 1 which is other than id 0

  1. NextEPC launches UE-associated procedure Downlink NAS Transport with SCTP stream id 0, this is incorrect because it conflicts with the stream id used by non UE-associated procedure.

ue-associated procedure downlink nas transport should not use stream id 0

all binaries linked against extra / unneeded programs

It seems that pgw, hss, mme, pcrf and sgw are all linked against libraries whose symbols they don't use:

dpkg-shlibdeps:` warning: package could avoid a useless dependency if debian/nextepc-pgw/usr/bin/nextepc-pgwd was not linked against libsnappy.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pgw/usr/bin/nextepc-pgwd was not linked against libgcrypt.so.20 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pgw/usr/bin/nextepc-pgwd was not linked against libssl.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pgw/usr/bin/nextepc-pgwd was not linked against libz.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pgw/usr/bin/nextepc-pgwd was not linked against libcrypto.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-hss/usr/bin/nextepc-hssd was not linked against libgcrypt.so.20 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-hss/usr/bin/nextepc-hssd was not linked against libz.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-hss/usr/bin/nextepc-hssd was not linked against libcrypto.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-hss/usr/bin/nextepc-hssd was not linked against libsnappy.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-hss/usr/bin/nextepc-hssd was not linked against libssl.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-mme/usr/bin/nextepc-mmed was not linked against libsnappy.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-mme/usr/bin/nextepc-mmed was not linked against libssl.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-mme/usr/bin/nextepc-mmed was not linked against libz.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-mme/usr/bin/nextepc-mmed was not linked against libcrypto.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-mme/usr/bin/nextepc-mmed was not linked against libgcrypt.so.20 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pcrf/usr/bin/nextepc-pcrfd was not linked against libgcrypt.so.20 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pcrf/usr/bin/nextepc-pcrfd was not linked against libsnappy.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pcrf/usr/bin/nextepc-pcrfd was not linked against libz.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pcrf/usr/bin/nextepc-pcrfd was not linked against libcrypto.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-pcrf/usr/bin/nextepc-pcrfd was not linked against libssl.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libsnappy.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libcrypto.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libgnutls.so.30 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libgcrypt.so.20 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libz.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libssl.so.1.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against librt.so.1 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libdl.so.2 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/nextepc-sgw/usr/bin/nextepc-sgwd was not linked against libidn.so.11 (it uses none of the library's symbols)

can't decode message

[03/14 12:18:00.841] ERRR: Unknown procedure ID (8) for initiating message (s1ap_decoder.c:185)
200 bytes hex:
00080800 00000000 20080200 80200802 00802008 02008020 00080200 80200802
00802008 02008020 08020000 80200802 00802008 00020080 20080200 80200802
00802008 02008040 04004004 00400400 40040040 04004004 00400400 40040040
04004004 00400400 40040040 04004004 00400400 40040040 04004004 00400400
40040040 04004002 00800000 00200802 00802010 0201a002 0e330357 58826014
00523068 0090d031 f1af3432 b259666c 01000360 026f8b19 9b004000 d800bbe8
c666c010 00360000
[03/14 12:18:00.841] ASSERT: !(0). Can't decode S1AP_PDU (mme_sm.c:184)

Unable to install it on CentOS 7

Hello,

It's a promising effort you did guys to see such EPC freeware available.

I tried to install nextEPC software on CenOS 7 VM and after applying the "./test/testepc" command, I got the following errors.

[root@vepc-lab nextepc-master]# ./test/testepc
File Logging : '/root/nextepc-master/install/var/log/nextepc/nextepc.log'
MongoDB URI : 'mongodb://localhost/nextepc'
Configuration : '/root/nextepc-master/install/etc/nextepc/nextepc.conf'
[02/02 19:50:47.682] ERRR: ERROR: in '(bind( *sock, sa, salen ))' : Address already in use (fd_init.c:116)
[02/02 19:50:47.682] ERRR: ERROR: in '(fd_tcp_create_bind_server( &cnx->cc_socket, sa, ( (socklen_t) ( (((struct sockaddr *)sa)->sa_family == 2) ? (sizeof(struct sockaddr_in)) : ((((struct sockaddr *)sa)->sa_family == 10) ? (sizeof(struct sockaddr_in6)) : 0 ) ) ) ))' : Address already in use (fd_init.c:116)
[02/02 19:50:47.682] ERRR: ERROR: in '(s->conn = fd_cnx_serv_tcp(fd_g_config->cnf_port, sa->sa_family, ep))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:47.682] ERRR: ERROR: in '((fd_servers_start()))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:47.682] ERRR: ERROR: in '(fd_core_start())' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:48.016] ASSERT: !(ret == 0). (pcrf_fd_path.c:15)
[02/02 19:50:48.016] ASSERT: !(rv == CORE_OK). Failed to intialize PCRF (epc.c:53)
[02/02 19:50:48.583] ERRR: ERROR: in '(bind( *sock, sa, salen ))' : Address already in use (fd_init.c:116)
[02/02 19:50:48.584] ERRR: ERROR: in '(fd_tcp_create_bind_server( &cnx->cc_socket, sa, ( (socklen_t) ( (((struct sockaddr *)sa)->sa_family == 2) ? (sizeof(struct sockaddr_in)) : ((((struct sockaddr *)sa)->sa_family == 10) ? (sizeof(struct sockaddr_in6)) : 0 ) ) ) ))' : Address already in use (fd_init.c:116)
[02/02 19:50:48.584] ERRR: ERROR: in '(s->conn = fd_cnx_serv_tcp(fd_g_config->cnf_port, sa->sa_family, ep))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:48.584] ERRR: ERROR: in '((fd_servers_start()))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:48.584] ERRR: ERROR: in '(fd_core_start())' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:48.704] ASSERT: !(ret == 0). (pgw_fd_path.c:1021)
[02/02 19:50:48.704] ASSERT: !(rv == CORE_OK). Failed to intialize PGW (epc.c:101)
[02/02 19:50:50.574] ERRR: ERROR: in '(bind( *sock, sa, salen ))' : Address already in use (fd_init.c:116)
[02/02 19:50:50.574] ERRR: ERROR: in '(fd_tcp_create_bind_server( &cnx->cc_socket, sa, ( (socklen_t) ( (((struct sockaddr *)sa)->sa_family == 2) ? (sizeof(struct sockaddr_in)) : ((((struct sockaddr *)sa)->sa_family == 10) ? (sizeof(struct sockaddr_in6)) : 0 ) ) ) ))' : Address already in use (fd_init.c:116)
[02/02 19:50:50.575] ERRR: ERROR: in '(s->conn = fd_cnx_serv_tcp(fd_g_config->cnf_port, sa->sa_family, ep))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:50.575] ERRR: ERROR: in '((fd_servers_start()))' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:50.575] ERRR: ERROR: in '(fd_core_start())' : Transport endpoint is not connected (fd_init.c:116)
[02/02 19:50:50.799] ASSERT: !(ret == 0). (hss_fd_path.c:682)
[02/02 19:50:50.800] ASSERT: !(rv == CORE_OK). Failed to intialize HSS (epc.c:203)
s1ap_message_test : SUCCESS
nas_message_test : SUCCESS
gtp_message_test : |[02/02 19:50:51.883] ASSERT: !(desc->child_descs[0]). TLV message descriptor has no members (tlv_msg.c:278)
\Line 171: expected <0>, but saw <-1>
Segmentation fault (core dumped)
[root@vepc-lab nextepc-master]# ifconfig pgwtun
pgwtun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 45.45.0.1 netmask 255.255.0.0 destination 45.45.0.1
inet6 cafe::1 prefixlen 64 scopeid 0x0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@vepc-lab nextepc-master]#

Thanks for help in advance.

Best Regards,

Mina Gerges

Nextepc in a Docker Container

I really like NextEPC design, and tried to dockerize it. Besides freediameter docker instruction, I couldn't find a Docker file for NextEPC.

I tried to use Ubuntu base image and applied same installation instructions as you described, but got following:

invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Setting up mongodb (1:2.6.10-0ubuntu1) ...
Setting up nextepc-core:amd64 (0.3.2~xenial) ...
Setting up nextepc-mme:amd64 (0.3.2~xenial) ...
Setting up nextepc-sgw:amd64 (0.3.2~xenial) ...
Setting up nextepc-pgw:amd64 (0.3.2~xenial) ...
open: No such file or directory
Failed to bring up pgwtun.
dpkg: error processing package nextepc-pgw:amd64 (--configure):
 subprocess installed post-installation script returned error exit status 1
Setting up nextepc-hss:amd64 (0.3.2~xenial) ...
Setting up nextepc-pcrf:amd64 (0.3.2~xenial) ...
dpkg: dependency problems prevent configuration of nextepc:amd64:
 nextepc:amd64 depends on nextepc-pgw (= 0.3.2~xenial); however:
  Package nextepc-pgw:amd64 is not configured yet.

dpkg: error processing package nextepc:amd64 (--configure):
 dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Processing triggers for systemd (229-4ubuntu21) ...
Errors were encountered while processing:
 nextepc-pgw:amd64
 nextepc:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Then, I tried to copy /install dir into image, after building nextepc directly, but I got error on symbolic links. I tried to re-link them, but didn't work either. My knowledge in shared libs is not great and probably that is one of reason.

Do you have any tips/pointers on how I can create a container? Am I missing something obvious?

Thanks

Regarding Enodeb setup

Hi ,
i am watching your project for the last one year.
I am new to this area, i had worked on IMS solution. Now i am planning to built VOLTE, can you please suggest how can i get enodeb in cheaper way to intergate nextEPC with my IMS solution.

Thanks in advance

Error Can't get a cell phone to Auth on a Network

pr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:15:39.409] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:15:49.493] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:23:24.649] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:23:34.769] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:23:44.989] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:23:55.110] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:24:05.229] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:27:49.589] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:27:59.669] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)
Apr 14 18:28:19 SpeedFI-CORE-EPC nextepc-mmed[32118]: [04/14 18:28:09.749] WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)

IP configuration

**Cool project,

Please forgive if this is a stupid question. Currently on my 4th day of learning mobile telecoms.**

In the configuration guide you state..
IP Connectivity between Network Entities

The minimum requirement of having IP connectvity is to modify the configuration files of MME and SGW. Once NextEPC has been installed, you can find YAML-format configuration files in /etc/nextepc/*.conf.

Note that /etc/nextepc/nextepc.conf is just a manual. If you use nextepc-epcd in a build environment, this configuration file could be used, but if you installed it with the package manager, modifying this configuration file has no effect.

Anyway, before setting up, please decide a network interface to run NextEPC, and then the IP address of the interface needs to be recorded in the configuration files.

Modification of MME config

Open /etc/nextepc/mme.conf file, and find an item in mme โ†’ s1ap. Please set your IP address with putting addr: keyword.

mme:
freeDiameter: mme.conf
s1ap:
addr:
...

Save and exit.

Modification of SGW config


Open /etc/nextepc/sgw.conf file, and find an item in sgw โ†’ gtpu. Please set your IP address with putting addr: keyword.

sgw:
gtpc:
addr: 127.0.0.2
gtpu:
addr:
...

Save and exit.

Adding a route for UE to have Internet connectivity

By default, a LTE UE will receive a IP address with the network address of 45.45.0.0/16. If you have a NAT router (e.g., wireless router, cable modem, etc), the LTE UE can reach Internet in uplink, but it cannot in downlink. It's because the NAT router has no idea on 45.45.0.0/16, so adding a route is required. Please refer to the user manual to know how to add a static route in your router.

Add a route of both 45.45.0.0/16 and cafe::0/64 to go the PGW IP address. For example, a command for Linux will be:

sudo ip route add 45.45.0.0/16 via
sudo ip route add cafe::0/64 via

If you have no NAT router, there is another option for you. iptables can solve the problem. You execute the following command in NextEPC installed host. The eth0 shown below is just an example. Do not miss out on modifying your interface name(e.g enp0s25, wls3).

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -I INPUT -i pgwtun -j ACCEPT

Authentication failure (Synch failure)

I used nextepc and srsenb to set up a 4G experimental network. When a commercial UE(USIM with custom information and had been added to HSS) accesses the network, Authentication failure (Synch failure) is triggered during authentication procedure . According to 3GPP TS 24.301 5.4.2.6 (c) and 5.4.2.7 (e), Upon the first receipt of an AUTHENTICATION FAILURE message from the UE with the EMM cause #21 "synch failure", the network shall use the returned AUTS parameter from the authentication failure parameter IE in the AUTHENTICATION FAILURE message, to re-synchronise.
So, I suggest that this procedure should be implemented in nextepc.

about donation

I think a well-maintained and functioned LTE EPC is very important for me.

So I will looking for more maintainers, and you could create a donation PayPal account for this project and post it to GitHub.

About the Tutorial "Your First LTE"

Hi Sukchan,

first of all thank you for NextEPC, so far working great, but I have a question regarding your tutorial.
I reproduced your tutorial with a Quad-Core i5 and a B210 (unfortunately without a GPSDO) for srseNB and NextEPC and another laptop with a commercial LTE dongle as UE. The setup works and the connection works too, but if I run iperf to test downlink it the connection will fail sooner or later (reconnection sometimes fails), while in uplink it works fine for several hours (including reconnections). Did your setup work without any problems? I wonder what might be the problem, did your setup work differently without the GPSDO?

Kind regards,
Richard

HSS only supports OP value, not card-individual OPc

The current HSS (at least on the web interface) offers to enter the following fields for each card:

  • K
  • OP
  • AMF

This doesn't match reality and/or the specs, as far as I can tell.
3GPP USIM either have

  • card-individual K + card-individual OPC value
  • card-individual K + "global" OP value
    ** global means, OP is the same for all cards, or at the very least for all cards of the same production batch

nextepc HSS appears to implement something like a mix of the two: No card-individual OPc, but a card-individual OP. I cannot find any spec reference of this combination.

Please let me know if I misunderstand something, and my apologies for that case.

UE Can't connect

MME Log
[01/18 20:31:41.915] WARN: [NAS] EMM status(95) : UE[311980000016984] --> EMM (emm_handler.c:429)
[01/18 20:32:06.867] WARN: [NAS] EMM status(95) : UE[311980000016984] --> EMM (emm_handler.c:429)
[01/18 20:32:16.256] WARN: Not implmented (radioNetwork cause : 21) (s1ap_handler.c:427)
[01/18 20:32:31.873] WARN: [NAS] EMM status(95) : UE[311980000016984] --> EMM (emm_handler.c:429)
[01/18 20:32:41.555] WARN: Not implmented (radioNetwork cause : 21) (s1ap_handler.c:427)
[01/18 20:32:56.862] WARN: [NAS] EMM status(95) : UE[311980000016984] --> EMM (emm_handler.c:429)
[01/18 20:33:06.153] WARN: Not implmented (radioNetwork cause : 21) (s1ap_handler.c:427)
[01/18 20:33:21.870] WARN: [NAS] EMM status(95) : UE[311980000016984] --> EMM (emm_handler.c:429)
[01/18 20:33:31.152] WARN: Not implmented (radioNetwork cause : 21) (s1ap_handler.c:427)
[01/18 20:33:45.338] WARN: Not implemented(choice:3, proc:9) (s1ap_sm.c:176)
[01/18 20:33:56.251] WARN: Not implmented (radioNetwork cause : 21) (s1ap_handler.c:427)
[01/18 20:34:07.825] WARN: Unknown message(type:65) (emm_sm.c:505)
[01/18 20:34:31.284] WARN: Unknown message(type:65) (emm_sm.c:505)
[01/18 20:34:57.084] WARN: Unknown message(type:65) (emm_sm.c:505)

UEs emulation

How does NextEPC emulate UEs? Is it possible to emulate a large number of UEs?

GTP Messages

Hello,
Please, i would like to know where i can find the list of implemented gtp messages ?
Can i have support/guidance to implement more GTP messages ?
Best regards,

UE in Roaming

Hello,

I build an install of the NextEPC here in the lab, but all UE that register in the NextEPC don't reconize the network as Home network, always appear in roaming. I already check the begin of the IMSI and the MCC and MNC code and they are the same.

I dump the signal between the UE and NextEPC to try found some option to change this, but I can't found.

Can you help with this?

Thanks

"make check" fails for "testepc"

"make check" fails on the testepc step when executed on Debian unstable:

FAIL: testepc
============================================================================
Testsuite summary for NEXTEPC 0.1.1
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See test/test-suite.log
Please report to [email protected]
============================================================================

I think the tests seem to assume that /etc/nextepc.conf is a valid config file and /var/log/nextepc.log exists and is writable. This is a bit of a chicken-and-egg situation:

You want to test before or without installing the program, so config + log should come from a temporary directory below the build directory, not system-wide paths.

Different UEs can not reach each other

I have successfully set up NextEPC with srs-eNB on a PC, which is now disconnected from the internet.
I have two UEs (45.45.0.2 and 45.45.0.3) attached, both can ping the eNB (45.45.0.1), and I can ping both from the eNB. But unfortunately I can not ping one UE from the other, which I need.
So to sum it up:
45.45.0.2 <-> 45.45.0.1 works fine
45.45.0.3 <-> 45.45.0.1 works finde
45.45.0.2 <-> 45.45.0.3 does not work
Any idea how to solve this problem?

inter-MME handover

Does NextEPC support inter-MME handover with SGW relocated? Where the serving MME/SGW changed during the handover

EPC will not auth UE's

We are running the 1 week old version

[03/09 09:24:45.994] ERRR: Decoding of IE s1apENBUES1APID failed (s1ap_ies_decoder.c:822)
98 bytes hex:^M
000c405e 00000500 08000340 0837001a 00353407 41710839 11890000 10864102^M
e0e00023 02d3d011 271d8080 21100100 00108106 00000000 83060000 0000000a^M
00000d00 00100000 43000600 13f18900 01006440 080013f1 894009f1 30008640^M
0130^M
[03/09 09:24:46.004] ASSERT: !(0). Can't decode S1AP_PDU (mme_sm.c:184)
[03/09 09:24:57.657] ASSERT: !(clbuf). No more free clbuf. (unix/pkbuf.c:144)
[03/09 09:24:57.657] ASSERT: !(clbuf). Can't allocate clbuf(length:8) (unix/pkbuf.c:232)
[03/09 09:24:57.657] ASSERT: !(p). pkbuf_alloc failed(headroom:8, size:8) (unix/pkbuf.c:542)
[03/09 09:24:57.657] ERRR: Decoding of IE s1apENBUES1APID failed (s1ap_ies_decoder.c:822)
98 bytes hex:^M
000c405e 00000500 08000340 0838001a 00353407 41710839 11890000 10864102^M
e0e00023 02d4d011 271d8080 21100100 00108106 00000000 83060000 0000000a^M
00000d00 00100000 43000600 13f18900 01006440 080013f1 894009f1 30008640^M
0130^M
[03/09 09:24:57.657] ASSERT: !(0). Can't decode S1AP_PDU (mme_sm.c:184)
[03/09 09:25:31.115] ASSERT: !(clbuf). No more free clbuf. (unix/pkbuf.c:144)
[03/09 09:25:31.115] ASSERT: !(clbuf). Can't allocate clbuf(length:8) (unix/pkbuf.c:232)
[03/09 09:25:31.115] ASSERT: !(p). pkbuf_alloc failed(headroom:8, size:8) (unix/pkbuf.c:542)
[03/09 09:25:31.115] ERRR: Decoding of IE s1apENBUES1APID failed (s1ap_ies_decoder.c:822)
98 bytes hex:^M
000c405e 00000500 08000340 0839001a 00353407 41710839 11890000 10864102^M
e0e00023 02d5d011 271d8080 21100100 00108106 00000000 83060000 0000000a^M
00000d00 00100000 43000600 13f18900 01006440 080013f1 894009f1 30008640^M
0130^M
[03/09 09:25:31.115] ASSERT: !(0). Can't decode S1AP_PDU (mme_sm.c:184)
[03/09 09:27:25.234] ASSERT: !(clbuf). No more free clbuf. (unix/pkbuf.c:144)
[03/09 09:27:25.234] ASSERT: !(clbuf). Can't allocate clbuf(length:8) (unix/pkbuf.c:232)
[03/09 09:27:25.234] ASSERT: !(p). pkbuf_alloc failed(headroom:8, size:8) (unix/pkbuf.c:542)
[03/09 09:27:25.234] ERRR: Decoding of IE s1apENBUES1APID failed (s1ap_ies_decoder.c:822)
98 bytes hex:^M

NextEPC (eNodeB) Test Client

I wanted to test NextEPC with some scenarios like establishing connection, making and receiving a VoLTE call, etc. Having a CLI Test Client that I can script (e.g call from within my script), would be great!

I see that NExtEPC has very similar function tests in test directory and it is well structured and automated.

However all IP addresses are hardcoded that requires code change and rebuild if I want to test a specific deployment.

How I can do that? Is there similar eNB Test Client available I can use (and with no need to have eNB node up and running)? Should I write something based on test code?

Thanks in advance.

IMSI unknow in HSS

WARN: Cannot find IMSI in DB : 208930000000003 (hss_context.c:386)
WARN: ERROR DIAMETER Result Code(5001) (mme_fd_path.c:300)

/nextepc-master$ mongod --dbpath data/db
2018-02-08T19:28:07.829+0800 [initandlisten] MongoDB starting : pid=20703 port=27017 dbpath=data/db 64-bit host=pan
2018-02-08T19:28:07.830+0800 [initandlisten] db version v2.6.10
2018-02-08T19:28:07.830+0800 [initandlisten] git version: nogitversion
2018-02-08T19:28:07.830+0800 [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2018-02-08T19:28:07.830+0800 [initandlisten] build info: Linux lgw01-12 3.19.0-25-generic #26
14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 BOOST_LIB_VERSION=1_58
2018-02-08T19:28:07.830+0800 [initandlisten] allocator: tcmalloc
2018-02-08T19:28:07.830+0800 [initandlisten] options: { storage: { dbPath: "data/db" } }
2018-02-08T19:28:07.871+0800 [initandlisten] journal dir=data/db/journal
2018-02-08T19:28:07.871+0800 [initandlisten] recover : no journal files present, no recovery needed
2018-02-08T19:28:07.932+0800 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
2018-02-08T19:28:07.932+0800 [initandlisten] ERROR: addr already in use
2018-02-08T19:28:07.934+0800 [initandlisten] now exiting
2018-02-08T19:28:07.934+0800 [initandlisten] dbexit:
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: going to close listening sockets...
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: going to flush diaglog...
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: going to close sockets...
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: waiting for fs preallocator...
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: lock for final commit...
2018-02-08T19:28:07.934+0800 [initandlisten] shutdown: final commit...
2018-02-08T19:28:07.955+0800 [initandlisten] shutdown: closing all files...
2018-02-08T19:28:07.956+0800 [initandlisten] closeAllFiles() finished
2018-02-08T19:28:07.956+0800 [initandlisten] journalCleanup...
2018-02-08T19:28:07.956+0800 [initandlisten] removeJournalFiles
2018-02-08T19:28:08.005+0800 [initandlisten] shutdown: removing fs lock...
2018-02-08T19:28:08.005+0800 [initandlisten] dbexit: really exiting now

How to solve this question ? thanks

No way to discuss NextEPC between users

Hi,

First, kudos to acetcom for this project,

I think a lot of questions here are related to the user's installations but there's no way for your users to interact.

Wouldn't it be nice to have a Slack Workspace so we can discuss our projects and your roadmap ?
I have seen that nextepc.slack.com isn't taken (yet).

Thanks,

Arthur

Does nextEPC supports S1-handover?

Hi!
I am wondering whether nextEPC supports S1-handover or not.
I am testing the handover function with 2 small cell, Huawei LTE dongle and the latest version of nextEPC.
Should I modify any parameters? E.g., different TAC for each small cell.

EPC log when I am testing handover:
ho_canceled
pcapng for S1 interface:
image
nextEPC_handoverCanceled.zip

Bearer Contect Modification

Hi,

I want to know if bearer context modification is implemented and how to perform this operation.
Thanks in advance,

Gus

Assign static IPs to specific IMSIs?

Hi,
I use srseNB+NextEPC and have different UEs. EPC has 172.16.0.1 and the different UEs 172.16.0.2 (UE-1) and 172.16.0.3 (UE-2) for example. If I restart UE-1 it gets assigned 172.16.0.4. Also the IP addresses will be given in the order of connection. Is it possible to assign static IPs to the UEs (e.g. specify it via the IMSI)? So that UE-1 will always get 172.16.0.2?

Kind regards,
Richard

Re-synch MAC failed during UE attach process

Hi,
I have some trouble with the Re-sync process of nextepc. This issue seems very close from this one #11 . But I don't understand why I'm facing it, given it seems to have been fixed in v0.3.0

My setup is the following : Amarisoft eNodeB + NextEpc.

Here is the message I got each time I want to connect my UE to the network :

[02/06 16:05:21.837] ERRR: Re-synch MAC failed for IMSI:001010123456789 (hss_fd_path.c:120)
MAC_S: 8 bytes hex:
64465b1c 258f5bef
8 bytes hex:
00000000 00000000
SQN: 6 bytes hex:
18d8673f 7706
[02/06 16:05:21.838] WARN: ERROR DIAMETER Result Code(4181) (mme_fd_path.c:300)

And if that can help, here is the content of the Mongo DB I use and a part of my config :

{ "_id" : ObjectId("5a79c0ea69df3306ec9f3ec6"), "imsi" : "001010123456789", "pdn" : [ { "apn" : "internet", "_id" : ObjectId("5a79ba3208aedf206943a44c"), "pcc_rule" : [ ], "qos" : { "qci" : 9, "arp" : { "priority_level" : 8, "pre_emption_vulnerability" : 1, "pre_emption_capability" : 1 } }, "type" : 2 } ], "ambr" : { "downlink" : NumberLong(1024000), "uplink" : NumberLong(1024000) }, "subscribed_rau_tau_timer" : 12, "network_access_mode" : 2, "subscriber_status" : 0, "access_restriction_data" : 32, "security" : { "k" : "0682309B783C78988C174C9C69DAD88A", "amf" : "9001", "op" : null, "opc" : "398153093661279FB1FC74BE07059FEF", "rand" : "A5E316DA 079E9D32 9BF01B77 0F118EB1", "sqn" : NumberLong(320) }, "__v" : 0 }

nextepc.conf :

gummei:
    plmn_id:
      mcc: 001
      mnc: 01
    mme_gid: 2
    mme_code: 1
tai:
    plmn_id:
      mcc: 001
      mnc: 01
    tac: 1

  security:
      integrity_order : [ EIA1, EIA2, EIA0 ]
      ciphering_order : [ EEA0, EEA1, EEA2 ]

mme.conf

mme:
    freeDiameter: mme.conf
    s1ap:
    gtpc:
    gummei:
      plmn_id:
        mcc: 001
        mnc: 01
      mme_gid: 8001
      mme_code: 01
    tai:
      plmn_id:
        mcc: 001
        mnc: 01
      tac: 1
    security:
        integrity_order : [ EIA1, EIA2, EIA0 ]
        ciphering_order : [ EEA0, EEA1, EEA2 ]

Maybe I missed something in the config ?
Could you help me to understand why this error pops-up ? I do not really understand it to be honest...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.