nextepc as lte core network · member • sukchan lee-seoul, ministry of unification(2011~),...
TRANSCRIPT
About NextEPC• NextEPC is a C-language Open Source implementation of
the 3GPP Evolved Packet Core, i.e. the core network of an LTE network
• NextEPC provides MME/SGW/PGW/HSS/PCRF
• NextEPC has been tested on GNU/Linux distributions(Debian, Ubuntu, CentOS, Fedora, openSUSE), FreeBSD, and Mac OS X.
• Package Support : Debian/Ubuntu(by Harald), openSUSE(by Martin Hauke), Fedora?
Member• Sukchan Lee
- Seoul, Ministry of Unification(2011~), Software Engineer in Security(2000~2002), L2/L3 Switch(2003~2004), and Wireless Network(2004~2009)
• Jinyoung Park- Seattle, Software Engineer in Juni Global Networks. eNodeB femtocell
• Brandon Jihoon Lee- Denver, Professor in Colorado University Boulder
• We are from the same university from POSTECH
• We are very close friends who have worked for many hours.
libcore• In 2010, the core library is designed by Sukchan Lee,
Jinyoung Park, and Gwangseok Kim
• Refer to Apache Runtime Library(libapr) for OS Abstraction Layer- Thread, Proc, Mutex/Semaphore, Signal, File, Time, …
• Refer to OpenSSL for AES, SHA2, CMAC/HMAC
• Add Thread Queue, Timer, Finite State Machine, and TLV Library for Control Plane.
Memory Pool
• It’s just Array Unlike apr_pool(libapr), talloc(samba)
• No parent/child structure. Inconvenient to use
• Expand to Index Array. (e.g TEID, MME-UE-S1AP-UD)
Packet Buffer• Refer to mBuf in FreeBSD network subsystem
• Every packet sent/received is handled using pkbuf structure (Zero-Copy)
Implementation• Use Static Array Pool
• Cluster Buffer - 128,256,512,1024,2048,8192
• pkbuf_t *pkbuf = pkbuf_alloc(headroom, len)
• pkbuf_free(pkbuf)
• Expand to core_malloc()/core_realloc()/core_calloc()/core_free()
• UNIX-like functions : core_XXX()
Network Interface
• Support TCP/UDP/SCTP and IPv4/IPv6
• SCTP Server uses SOCK_STREAM method. (Mac OS X uses SOCK_SEQPACKET with libusrsctp)
• All UDP use Bounded Socket. NOT sendto() BUT send().
• All Socket use Non-blocking mode. And also, one process uses only one select loop.
S1AP
• Use asn1c Library from @vlm
• Previously use ‘asn1tostruct.py’. Now remove the generated code from this script.
• Recently @velichkov and @brchiu improve ‘asn1c’ to support S1AP
• NextEPC has adopted the new S1AP.
GTPv2-C & NAS
• For message encoder/decoder, we decided to use specification document.
• Use python-docs of python-pip to parse specification document.
• We encountered some problem for this approach. Lots of text errata.
• Some chart need to merge cell.
freeDiameter
• Very good library to implement Diameter Protocol
• Weak Point : No maintenance
• NextEPC git repository includes the source code of freeDiameter directly
Modules• Context - Maintain Data Structure
• Event - Define Message & Timer Event
• Build - Control Plane Message Encoder
• Handler - Message & Timer Handler
• State Machine - Main Routine
• Path - S1AP/GTP/Diameter Data Path
WebUI & DB• Database : MongoDB
• Backend : node.js/express, Frontend : react
• Framework : next.js
• Data Handling : redux-saga
• Authentication : passport
• User Interface : styled-component
Test Code• libcore is tested with Unit-Test manner.
• 5 elements(MME/SGW/PGW/HSS/PCRF) are tested with Automated Test manner Like TTCN-3. But Use C-language.
- UE/eNB Test Packet is hard-corded raw packet from Wireshark pcapng.
- Some Test Packet created by S1AP encoder
• For VoLTE, P-CSCF Protocol Stack is minimally implemented
My Current Working
• Cannot Test VoLTE with IMS network- Mobile(or USIM) does not initiate SIP packet
• Which interface is better between HSS/PCRF and WebUI- HSS-initiated UE detach from WebUI
- Between C language based processor and Node.js
NextEPC Status• Where we are?
- The basic features including Handover seem to work reliable in the LAB.
- 4 eNB and 8 UE is used with Maximum Throughput and EDGE Environment
- NextEPC could be mainly used as a TestEPC for developing eNB or UE.
• Missing- Unit Test, Automated Test is available
- No End-to-End test Suite, No CI(Continuous Integration)
- No Subscriber-based Logging for Service Provider
• Business(or Commercial) is NOT YET.
What we want to do?
• Make the Open Source Community stronger and stronger
• In the roadmap,- CS Fallback, SRVCC, Inter-RAT handover(from 2G/3G)
- ePDG Gateway(from WiFI)
- eMBMS, NB-IoT
- OCS/OFCS(from Service Provider)
• When anyone comes to us, we will do it first.