Compare commits

...

745 Commits

Author SHA1 Message Date
Sukchan Lee
10d9159dc5 rename pkgconfig 2019-07-11 22:45:43 +09:00
Sukchan Lee
e03c1436fb Release v0.5.0 2019-07-11 22:26:56 +09:00
Sukchan Lee
aa4ea44c2c [OGSLIB] Use NEW Version v1.1.0 2019-07-11 22:25:20 +09:00
Sukchan Lee
e023be67e7 [OGSLIB] Use NEW version v1.1.0 2019-07-11 22:24:20 +09:00
Sukchan Lee
0a96d446b8 [Indentation] All source code changed 2019-07-11 22:22:22 +09:00
Sukchan Lee
97afc2db60 fix identation in HSS 2019-07-11 22:16:32 +09:00
Sukchan Lee
27d5208ea3 fix indentation in PGW 2019-07-11 22:09:30 +09:00
Sukchan Lee
7e08f7fc45 fix indentation in SGW 2019-07-11 22:01:52 +09:00
Sukchan Lee
19a01bdda4 Add CSFB TestSuite 2019-07-11 21:56:34 +09:00
Sukchan Lee
cb369daaea fix indentation in MME 2019-07-11 21:53:54 +09:00
Sukchan Lee
cd814afcff [CSFB] MT-Active-Test done 2019-07-11 21:39:44 +09:00
Sukchan Lee
de59488e2e [CSFB] MT-Active-Mode (Not Done) 2019-07-11 18:14:32 +09:00
Sukchan Lee
d9b7e966e1 [CSFB] Add MO in Active-mode 2019-07-10 22:04:52 +09:00
Sukchan Lee
9dbca85c1f [CSFB] Idle-mode done 2019-07-09 09:27:45 +09:00
Sukchan Lee
87cdd71582 Add Cause in Bearer IE (#215) 2019-07-08 23:08:15 +09:00
Sukchan Lee
0e1bd64646 fix indentation 2019-07-08 22:58:41 +09:00
Sukchan Lee
346e67b7de more sleep is needed in the test code 2019-07-08 22:42:10 +09:00
Sukchan Lee
ecfac8fe3b Add Delay for testcode 2019-07-08 22:20:25 +09:00
Sukchan Lee
40ae23aca4 Paging rollback 2019-07-08 21:44:03 +09:00
Sukchan Lee
979fd96a84 [CSFB] Fix the MacOSX 2019-07-08 21:03:39 +09:00
Sukchan Lee
16a8bea96b [CSFB] MT in idle-mode 2019-07-08 18:15:19 +09:00
Sukchan Lee
5e0c10bcb4 [CSFB] Rename test-name 2019-07-08 09:18:17 +09:00
Sukchan Lee
9863635342 [SGsAP] Add SGsAP-RESET-INDCIATON/ACK 2019-07-07 10:16:21 +09:00
Sukchan Lee
bc9cf078a5 [CSFB] Add MO-CSFB-Indication 2019-07-07 09:47:32 +09:00
Sukchan Lee
65cb21ce05 [SGsAP] clarify P_TMSI availablity 2019-07-06 23:30:05 +09:00
Sukchan Lee
0bbc5124e7 rename filename 2019-07-06 22:52:09 +09:00
Sukchan Lee
89ed2dda88 [SGsAP] TestCode for CS fallback in idle-mode 2019-07-06 22:45:15 +09:00
Sukchan Lee
a6eb646b76 [SGsAP] MO CS fallback in idle-mode 2019-07-06 22:16:13 +09:00
Sukchan Lee
5164b51607 [SGsAP] waiting for running the SCTP test server 2019-07-05 18:16:58 +09:00
Sukchan Lee
cc83c6a586 [SGsAP] DETACH-INDICATOIN/ACK is done 2019-07-05 18:13:32 +09:00
Sukchan Lee
a372bd2949 [SGsAP] Start to implement XXX-DETACH-INDICATION 2019-07-05 17:25:12 +09:00
Sukchan Lee
4f7aa2d5b7 [SGsAP] Location Update Reject 2019-07-05 15:55:07 +09:00
Sukchan Lee
334c678995 Fix the Security Command Reject (#214) 2019-07-04 22:48:26 +09:00
Sukchan Lee
0717b57465 Debian package name changed 2019-07-04 13:12:09 +00:00
Sukchan Lee
b440d59ce7 Update documentation 2019-07-04 20:30:58 +09:00
Nick
770d1cdba6 Reordered and updated MME details 2019-07-04 21:10:25 +10:00
Nick
cd2b420470 Created doc "NextEPC Splitting Network Elements"
Outlining basic requirements of each network element and interfaces and how to break up the network.
2019-07-04 21:09:05 +10:00
Sukchan Lee
f9f1ac7aac fix the docker-compose build error (#211) 2019-07-02 22:02:43 +09:00
Sukchan Lee
fd66c4023e Merge pull request #209 from laf0rge/master
freeDiameter: Fix compilation on Linux without SCTP_SEND_FAILED_EVENT
2019-07-02 15:15:52 +09:00
Harald Welte
6fc412dba7 fix 'no rule to make target "-L/usr/local/lib" compilation errors
When building (at least) on Debian unstable, I get the following type of errors:

make[4]: Entering directory '/space/home/laforge/projects/git/nextepc/lib/base'
make[4]: *** No rule to make target '-L/usr/local/lib', needed by 'libbase.la'.  Stop.

The cause seems to be that some target_DEPENDENCIES includes
@OGSCORE_LIBS@ or @OGSCRYPT_LIBS@, whcih both expand to "-L${libdir}
-lpthread -logscore-1.0" as per the pkg-config files.

I believe DEPENDENCIES should not list external library dependencies,
but only dependencies inside the repository.

Closes: #210
2019-07-02 13:58:40 +08:00
Harald Welte
95091210ff freeDiameter: Fix compilation on Linux without SCTP_SEND_FAILED_EVENT
The fallback to the old SCTP API must be made if either SCTP_SEND_FAILED_EVENT
or SCTP_NOTIFICATIONS_STOPPED_EVENT are undeclared.

This fixes building nextepc on e.g. Debian unstable.

Closes: #208
2019-07-02 13:42:33 +08:00
Sukchan Lee
9abc8575f6 fix the testcase error 2019-07-01 10:00:50 +09:00
Sukchan Lee
3ebe749bb2 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-06-30 22:58:48 +09:00
Sukchan Lee
baa35843fc Update document for v0.4.4 2019-06-30 22:58:30 +09:00
Sukchan Lee
d9e0b0eeaf Release v0.4.4 in Ubuntu(bionic) 2019-06-30 13:24:00 +00:00
Sukchan Lee
6e5ab199af Release v0.4.4 in Ubuntu(xenial) 2019-06-30 13:22:19 +00:00
Sukchan Lee
e2af4473dd Release v0.4.4 2019-06-30 12:05:30 +00:00
Sukchan Lee
e704295811 fix the testsuite 2019-06-30 20:48:51 +09:00
Sukchan Lee
8e53e82913 fix identation 2019-06-30 20:46:15 +09:00
Sukchan Lee
db348156e2 fix indentation 2019-06-30 20:29:25 +09:00
Sukchan Lee
de8ae9823a Create Multiple Session for same IMSI (#203) 2019-06-30 12:46:02 +09:00
Sukchan Lee
16fdc0d989 Update identation 2019-06-30 12:14:04 +09:00
Sukchan Lee
971f41d951 Missing file (#203) 2019-06-29 16:04:25 +09:00
Sukchan Lee
7747a4e32a Change MME-UE-S1AP-ID and eNB-UE-S1AP-ID (#203) 2019-06-29 15:51:42 +09:00
Sukchan Lee
44710d3f63 Add simulator to solve (#203) problem 2019-06-29 15:40:52 +09:00
Sukchan Lee
a4d18c2d96 Move enb_ostream_id from mme_ue to enb_ue (#206) 2019-06-28 18:11:16 +09:00
Sukchan Lee
6901278816 Fix the setting of the SCTP ostream-id (#206) 2019-06-26 23:06:31 +09:00
Sukchan Lee
7492ec734b Oops! change github_username 2019-06-26 21:38:33 +09:00
Sukchan Lee
4af3fea81b Fix the MME crash (#205) 2019-06-26 20:52:28 +09:00
Sukchan Lee
148c109d05 Fix the SGW crash for "context not found" (#204) 2019-06-25 23:04:41 +09:00
Sukchan Lee
acd77a8ad6 Fix the MME crash (#203) 2019-06-25 10:55:00 +09:00
Sukchan Lee
f380af44c3 Fix the service reject handling (#201) 2019-06-24 09:44:05 +09:00
Sukchan Lee
5f8d609d0c Handle SR and TAU in security-mode state (#202) 2019-06-23 21:15:59 +09:00
Sukchan Lee
db83b1e004 fix identation 2019-06-23 20:43:23 +09:00
Sukchan Lee
fe15600e02 Remove S1 check in Downlink NAS transport (#201) 2019-06-23 20:17:44 +09:00
Sukchan Lee
9177ad4ee0 When STCP send failed, clear related context (#200) 2019-06-23 13:39:44 +09:00
Sukchan Lee
660ebc823f mme_sctp_event_push() interface introduced 2019-06-23 04:22:22 +00:00
Sukchan Lee
9d0b419085 Create new interface : s1ap_event_push() 2019-06-23 12:47:22 +09:00
Sukchan Lee
79cbd8fb24 Update document for Release v0.4.3 2019-06-22 16:51:28 +09:00
Sukchan Lee
f9ea5a9136 OGSLIB Version check >= 1.0.2 2019-06-22 07:10:23 +00:00
Sukchan Lee
6f65f9b5ec Release v0.4.3 in Ubuntu(Xenial) 2019-06-22 06:57:30 +00:00
Sukchan Lee
e688667b9f Release v0.4.3 in Ubuntu(Bionic) 2019-06-22 06:56:10 +00:00
Sukchan Lee
2ac74ef6ac Release v0.4.3 2019-06-22 04:05:09 +00:00
Sukchan Lee
aeedf01d6a Fix the package error 2019-06-22 03:53:03 +00:00
Sukchan Lee
8902411afe Release v0.4.3 2019-06-22 03:32:00 +00:00
Sukchan Lee
1a26354f29 Release v0.4.3 2019-06-22 03:30:34 +00:00
Sukchan Lee
712b9c8334 [SGsAP] Add TMSI-REALLOCATION-COMPLETE 2019-06-22 12:11:07 +09:00
Sukchan Lee
693afa922f [SGsAP] Location Update process is done 2019-06-22 11:16:22 +09:00
Sukchan Lee
058ebc747d Follow OGSlib updates 2019-06-22 10:14:01 +09:00
Sukchan Lee
5ca6d79590 Running ./tests/testcsfb without an installation 2019-06-22 09:24:46 +09:00
Sukchan Lee
652cfa70d5 [SGsAP] Basic operation done 2019-06-22 00:28:21 +09:00
Sukchan Lee
bbc594330b [SGsAP] update it 2019-06-21 18:23:29 +09:00
Sukchan Lee
c284ef7429 [SGsAP] build LOCATION-UPDATE-REQUEST 2019-06-20 21:22:51 +09:00
Sukchan Lee
95586eaf09 [SGsAP] Not tested 2019-06-20 18:20:32 +09:00
Sukchan Lee
eca47a2773 [SGsAP] update it 2019-06-19 18:04:57 +09:00
Sukchan Lee
0e0a69ed7c [SGsAP] server/client connected in test-code 2019-06-18 17:38:25 +09:00
Sukchan Lee
5ce95f94ee [SGsAP] contine to test code 2019-06-18 15:32:01 +09:00
Sukchan Lee
6b0561681f remove s1ap_recv() 2019-06-18 14:04:11 +09:00
Sukchan Lee
d0417d353a [SGsAP] fix the CSFB test 2019-06-17 12:51:25 +00:00
Sukchan Lee
4013d9203c [SGsAP] Add linger option in usrsctp 2019-06-17 21:40:34 +09:00
Sukchan Lee
fba54b09eb [SGsAP] fix the MacOSX 2019-06-17 20:56:52 +09:00
Sukchan Lee
8a711191b3 [SGsAP] add configuration and fix the testcode 2019-06-17 13:28:39 +09:00
Sukchan Lee
f53e80eec7 [SGsAP] fix the bug in handling memory 2019-06-17 10:36:44 +09:00
Sukchan Lee
fa454209a9 [SGsAP] continue to work 2019-06-16 23:33:23 +09:00
Sukchan Lee
7ee0b3324b [SGsAP] continue to work 2019-06-16 22:22:07 +09:00
Sukchan Lee
bfa526d221 [SGsAP] continue to work 2019-06-16 22:17:38 +09:00
Sukchan Lee
6816400247 [SGsAP] continue to work 2019-06-16 21:26:22 +09:00
Sukchan Lee
3b26983db9 fix identation 2019-06-16 19:09:31 +09:00
Sukchan Lee
eab4958a81 [SGsAP] client program in linux 2019-06-16 09:31:29 +00:00
Sukchan Lee
e2aa8ec198 [SGsAP] Client program 2019-06-16 18:20:40 +09:00
Sukchan Lee
ec7d9f2917 [SGsAP] continue to implement it 2019-06-16 17:33:45 +09:00
Sukchan Lee
0be339e52d [SGSAP] start this feature 2019-06-16 16:47:20 +09:00
Sukchan Lee
fa81c86e22 [CSFB] Create a state machine 2019-06-16 15:40:26 +09:00
Sukchan Lee
1f838c0f68 Move New Indentation with LINUX-style 2019-06-16 11:25:41 +09:00
Sukchan Lee
aa0001c78b more delay needed in MacOSX 2019-06-15 23:34:42 +09:00
Sukchan Lee
c49bda5173 CSFB Test framework done 2019-06-15 23:28:52 +09:00
Sukchan Lee
bb703243c6 Update gitignore 2019-06-15 21:19:38 +09:00
Sukchan Lee
f3a6620a65 CSFB test code update 2019-06-15 21:18:16 +09:00
Sukchan Lee
cb00bf848e Create CSFB test framework 2019-06-15 19:37:34 +09:00
Sukchan Lee
343c72b288 Option for NODELAY 2019-06-15 16:58:52 +09:00
Sukchan Lee
bcd784b1f0 Apply ogslib changes 2019-06-15 16:54:49 +09:00
Sukchan Lee
c855546d77 add delay for volte test 2019-06-15 16:21:18 +09:00
Sukchan Lee
f550919df1 more faster test code 2019-06-15 16:16:32 +09:00
Sukchan Lee
f6a8985267 remove delay in test code 2019-06-15 16:02:52 +09:00
Sukchan Lee
1542d70af6 nodelay for MacOSX 2019-06-15 15:37:05 +09:00
Sukchan Lee
3d154cc423 Apply ogslib changes 2019-06-15 15:21:34 +09:00
Sukchan Lee
fbc73230b0 enb_ue assertion is fixed (#198) 2019-06-15 00:11:30 +09:00
Sukchan Lee
55164b4a1f Turn on SCTP_NODELAY (#198) 2019-06-15 00:03:05 +09:00
Sukchan Lee
c52cf33c3c fix the bug (#195) 2019-06-14 18:10:59 +09:00
Sukchan Lee
eb0d8075ef Continue to fix the crash error (#195) 2019-06-14 17:04:04 +09:00
Sukchan Lee
d3476eca6d Fix PCRF Session Control (#195)
- If PCRF Session is NULL and CC-Request-Type is Terminate,
   the result code is DIAMETER_UNKNOWN_SESSION_ID
2019-06-14 16:55:16 +09:00
Sukchan Lee
9e3ebf9a16 fix the bug (#195), But more work is needed 2019-06-14 14:24:17 +09:00
Sukchan Lee
88217ff11e test framework for crash 2019-06-13 18:22:34 +09:00
Nick
a550cf5b1d Merge pull request #196 from open5gs/nick-docs-update
Update 01-quickstart.md
2019-06-12 19:31:03 +10:00
Nick
d7131dc2e1 Update 01-quickstart.md 2019-06-12 19:15:11 +10:00
Sukchan Lee
22c3d66bc3 More log for analyzing #195 2019-06-11 23:20:49 +09:00
Sukchan Lee
f28f3003c5 change code indentation 2019-06-11 23:16:54 +09:00
Sukchan Lee
c530e1cbcf Fix the bug (#194) 2019-06-11 22:39:23 +09:00
Sukchan Lee
3c61858f21 add missing file 2019-06-11 22:21:45 +09:00
Sukchan Lee
477f16ad0b rename project done 2019-06-11 22:10:47 +09:00
Sukchan Lee
75a18a30cf Add missing files 2019-06-11 18:28:57 +09:00
Sukchan Lee
a32465ed07 Rename library 2019-06-11 18:28:25 +09:00
Sukchan Lee
7bc245028a change directory name test to tests 2019-06-11 14:26:04 +09:00
Sukchan Lee
56567fec12 rename filename 2019-06-11 14:12:31 +09:00
Sukchan Lee
dc7f9d8e12 Change sample pcap from testing with my iphone-XS 2019-06-09 22:00:07 +09:00
Sukchan Lee
57af70fab9 refine GTP interface (#190) 2019-06-09 00:50:02 +09:00
Sukchan Lee
71f1b1cfa4 SGW packet buffer is changed to 65536 2019-06-09 00:03:53 +09:00
Sukchan Lee
60dc4402c6 gtp_path interface changes 2019-06-08 23:42:12 +09:00
Sukchan Lee
d4f00da662 continue to add a buffer configuration 2019-06-08 08:44:22 +09:00
Sukchan Lee
0ff388fb19 apply configuration related to MAX number 2019-06-07 15:19:09 +09:00
Sukchan Lee
ca742661f6 Add configuration related to memory support (#190) 2019-06-07 11:56:37 +09:00
Sukchan Lee
c849cc802c Add libusrsctp work-around for MacOSX 2019-06-06 23:25:32 +09:00
Sukchan Lee
4fc1e0e22c VLR configuration done 2019-06-05 22:23:45 +09:00
Sukchan Lee
d41ce4d8b1 ogs_socknode_new() interface changed 2019-06-05 22:07:37 +09:00
Sukchan Lee
8dc5211448 update it 2019-06-05 21:21:19 +09:00
Sukchan Lee
24da20bdc8 GTP interface changes 2019-06-05 21:13:18 +09:00
Sukchan Lee
70b2e51f79 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-06-04 21:01:45 +09:00
Sukchan Lee
9e4d3cb824 add enb IP address to the log message 2019-06-04 21:01:23 +09:00
Sukchan Lee
10675caf89 Add SGsAP configuration 2019-06-02 21:55:24 +09:00
Sukchan Lee
fb1908410e rename s1ap filename 2019-06-02 11:35:44 +09:00
Sukchan Lee
b9c0feb40e Update configuration 2019-06-02 11:25:13 +09:00
Sukchan Lee
29a50892b5 Let me introduce SGSAP configuration 2019-06-02 11:09:01 +09:00
Sukchan Lee
f7ef0f3aab FAQ update 2019-06-02 00:50:46 +09:00
Sukchan Lee
5f4b42cbfc changes iptable usage 2019-06-02 00:32:32 +09:00
Sukchan Lee
681a7c87a4 usrsctp done 2019-06-01 21:30:13 +09:00
Sukchan Lee
a03df8d656 Document update for MacOSX 2019-06-01 19:53:57 +09:00
Sukchan Lee
a7053eb926 add workaround for MacOSX 2019-06-01 19:51:56 +09:00
Sukchan Lee
fe91a72271 fix the volte test in MacOSX 2019-06-01 19:49:06 +09:00
Sukchan Lee
5693c0c730 Merge branch 'socket' 2019-06-01 19:09:07 +09:00
Sukchan Lee
eb8b7e96d7 update ogslib 2019-06-01 19:08:53 +09:00
Sukchan Lee
85bedf1e35 this project is done 2019-06-01 19:04:34 +09:00
Sukchan Lee
8f8caf5177 remove USRSCTP macro in mme context 2019-06-01 09:57:29 +00:00
Sukchan Lee
756859d05c rename filename for s1ap-path 2019-06-01 09:52:38 +00:00
Sukchan Lee
d4023da087 continue to refine 2019-06-01 09:43:33 +00:00
Sukchan Lee
f384bdef3d fix the linux 2019-06-01 09:33:42 +00:00
Sukchan Lee
4cdc891898 rename source code 2019-06-01 18:20:02 +09:00
Sukchan Lee
7abd6b5ab9 continue to integrate MaxOSX 2019-06-01 18:19:00 +09:00
Sukchan Lee
8a7634d00c the MacOSX porting 2019-06-01 18:06:47 +09:00
Sukchan Lee
1f752e51e8 usrsctp work-around 2019-06-01 17:20:46 +09:00
Sukchan Lee
282936f215 support usrsctp 2019-06-01 16:59:38 +09:00
Sukchan Lee
60bfaa2c41 fix to compile MacOSX 2019-06-01 08:38:57 +09:00
Sukchan Lee
937f0319e3 handler type changes 2019-05-31 23:30:46 +09:00
Sukchan Lee
32c9c512d8 socknode includes pollset 2019-05-31 23:22:22 +09:00
Sukchan Lee
163bc4a040 update it 2019-05-31 13:55:05 +00:00
Sukchan Lee
58faa7bcac apply ogslib changes 2019-05-31 12:05:35 +00:00
Sukchan Lee
61d0573686 ogs_sockopt_t is added 2019-05-31 16:33:09 +09:00
Sukchan Lee
f0c84d3037 move s1ap_lksctp to ogs-lksctp 2019-05-31 14:05:45 +09:00
Sukchan Lee
69cfb3280c rename file 2019-05-31 13:58:08 +09:00
Sukchan Lee
d597912abb sctp configuration update 2019-05-31 11:34:49 +09:00
Sukchan Lee
34e2b4d44a add sctp configuration interface 2019-05-31 11:20:30 +09:00
Sukchan Lee
241efaf581 Change SCTP interface 2019-05-31 10:18:43 +09:00
Sukchan Lee
335e8513e9 fix the MacOSX 2019-05-30 21:51:25 +09:00
Sukchan Lee
cbb819f6b9 apply ogslib changes 2019-05-30 21:30:31 +09:00
Sukchan Lee
2267a59cc3 UDP interface is changed 2019-05-30 21:14:54 +09:00
Sukchan Lee
550be1cd95 apply ogslib interface changes 2019-05-30 20:14:19 +09:00
Sukchan Lee
338f359285 apply new ogslib interface 2019-05-30 19:58:27 +09:00
Sukchan Lee
3da632dd1e rename sa_family and sin_port 2019-05-30 13:50:53 +09:00
Sukchan Lee
8b782eb370 Merge branch 'master' into socket 2019-05-30 12:52:09 +09:00
Sukchan Lee
5bca0920b9 update code indentation 2019-05-29 21:27:22 +09:00
Sukchan Lee
bd1c505024 apply socknode interface changes 2019-05-29 21:05:42 +09:00
Sukchan Lee
1ed22fe7b2 Update document 2019-05-29 20:20:55 +09:00
Sukchan Lee
71367627a8 Fix mistypo 2019-05-29 20:17:12 +09:00
Sukchan Lee
88d0a53956 Release Notes - v0.4.2 2019-05-28 21:19:32 +09:00
Sukchan Lee
4d7b6c04c5 Fix errata for the document 2019-05-28 21:09:56 +09:00
Sukchan Lee
e032565991 Update debian changelog for ubuntu(xenial) 2019-05-28 20:12:02 +09:00
Sukchan Lee
f19f714136 Update debian changelog for ubuntu(bionic) 2019-05-28 20:09:15 +09:00
Sukchan Lee
94797e7d7a Update debian package 2019-05-28 20:05:07 +09:00
Sukchan Lee
581f4feb97 struct name update 2019-05-28 17:46:19 +09:00
Sukchan Lee
7c1c320141 gtp interface update 2019-05-28 14:47:06 +09:00
Sukchan Lee
244770de65 mistypo 2019-05-28 11:36:23 +09:00
Sukchan Lee
68ac111bd5 update document 2019-05-26 17:18:56 +09:00
Sukchan Lee
56556195a9 Document update 2019-05-26 17:15:14 +09:00
Sukchan Lee
9be8d1fd00 change new struct definition 2019-05-26 16:10:06 +09:00
Sukchan Lee
cdffdcaa78 update it 2019-05-26 15:27:09 +09:00
Sukchan Lee
ed803b27cb Update it 2019-05-26 12:57:29 +09:00
Sukchan Lee
314642fe1a Update it 2019-05-26 12:22:43 +09:00
Sukchan Lee
d58ddcb3ae Fix the crash error (#187) 2019-05-25 19:39:37 +09:00
Sukchan Lee
60277dcf05 Enable all s1ap message test 2019-05-19 20:26:33 +09:00
Sukchan Lee
77b8656dc3 Fix the PIDFile of the systemd service file (#182) 2019-05-19 00:42:16 +09:00
Sukchan Lee
0f892f6e84 Support a different APN for each PGW (#183) 2019-05-19 00:24:15 +09:00
Sukchan Lee
8ae096f77e Document: Fix the method of uninstalling nextepc 2019-05-18 21:08:25 +09:00
Sukchan Lee
6c99b7c187 Release Notes - v0.4.1 2019-05-18 19:32:14 +09:00
Sukchan Lee
fe68841456 Update debian changelog for ubuntu(bionic) 2019-05-18 09:59:30 +00:00
Sukchan Lee
314a1cd4be Update debian changelog for ubuntu(xenial) 2019-05-18 09:58:03 +00:00
Sukchan Lee
179df88c32 Update debian changelog 2019-05-18 08:19:39 +00:00
Sukchan Lee
bc180c3ffc Improve sanity check for queue-push fail 2019-05-06 23:13:26 +09:00
Sukchan Lee
ab81e38487 Fix the ./testsimple crash in MacOSX 2019-05-06 22:49:58 +09:00
Sukchan Lee
2d7438313d Change initialization sequence 2019-05-06 20:43:50 +09:00
Sukchan Lee
bb67705a66 BUGFIX: if SCTP uses SEQPACKET, sock should not use hash key. 2019-05-06 19:22:43 +09:00
Sukchan Lee
f097364d52 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-05-03 12:43:17 +00:00
Sukchan Lee
0992fbe7f3 Fix the bug of segmentation fault in test program (#175) 2019-05-03 12:41:57 +00:00
Sukchan Lee
9bef56806e Merge pull request #178 from medeiros405/master
Change in the Log about the address use for the UE.
2019-05-03 12:27:37 +10:00
medeiros405
2ef9718209 Change in the Log about the address use for the UE. 2019-05-02 21:40:10 -03:00
Sukchan Lee
d744893fba Update document to fix the WebUI installation URL (#176) 2019-05-02 16:34:05 +10:00
Sukchan Lee
0291d97dd5 Update document for changing debian repository 2019-05-01 18:13:21 +09:00
Sukchan Lee
a5f764544f Remove net-select in debian docker 2019-05-01 17:43:42 +09:00
Sukchan Lee
39766bc379 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-05-01 17:25:29 +09:00
Sukchan Lee
bf1c6c00fe change fedora latest version 2019-05-01 17:24:59 +09:00
Sukchan Lee
c8ed909f46 Remove __DATE__/__TIME due to reproduce same binary 2019-05-01 07:56:46 +00:00
Sukchan Lee
49adabdc70 Fix the compile error for CentOS (#175) 2019-04-30 21:22:35 +00:00
Sukchan Lee
e5523342d4 Set submodule to ogslib master 2019-05-01 00:22:43 +09:00
Sukchan Lee
08efe857a0 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-04-30 15:19:03 +00:00
Sukchan Lee
aec51b399a add xenial package 2019-04-30 15:18:50 +00:00
Sukchan Lee
ce2590d6fc fix the warning 2019-04-30 00:04:43 +09:00
Sukchan Lee
157d5fd739 Update NEWS document 2019-04-29 23:47:33 +09:00
Sukchan Lee
1e2ca81ae3 update ogslib changeset 2019-04-29 23:37:32 +09:00
Sukchan Lee
de2cadd926 update changelog for ubuntu 2019-04-29 14:30:51 +00:00
Sukchan Lee
dacfb7d209 Reset debian changelog 2019-04-29 14:09:29 +00:00
Sukchan Lee
f87ecc9e2c ubuntu release tag 2019-04-29 13:53:10 +00:00
Sukchan Lee
1300a4f0e7 add ubuntu release script 2019-04-29 13:50:50 +00:00
Sukchan Lee
16ea21d4a0 update document 2019-04-29 22:26:52 +09:00
Sukchan Lee
92733e71be Add Google Analytics 2019-04-28 23:20:33 +09:00
Sukchan Lee
8a5ef1ac1a Update Document 2019-04-28 20:28:52 +09:00
Sukchan Lee
6294ae3349 Merge branch 'master' of https://github.com/open5gs/nextepc 2019-04-28 20:20:27 +09:00
Sukchan Lee
59cd4aaa2e Set OGSLib master 2019-04-28 20:19:39 +09:00
Sukchan Lee
b9e3d76783 version update in webui 2019-04-28 09:16:18 +00:00
Sukchan Lee
3defa0974c Merge branch 'r0.3.11' 2019-04-28 09:14:50 +00:00
Sukchan Lee
bb2e976958 nextepc release v0.3.11 2019-04-28 05:17:14 +00:00
Sukchan Lee
9b53988ab6 Update document 2019-04-28 13:42:14 +09:00
Sukchan Lee
af1b87002a Update document 2019-04-28 00:45:07 +09:00
Sukchan Lee
75b09fe410 fix gitignore since test progname is changed 2019-04-28 00:11:48 +09:00
Sukchan Lee
c47f065e1a fix the baseurl to nextepc 2019-04-28 00:10:50 +09:00
Sukchan Lee
48bfe83c0f Add a Document 2019-04-28 00:01:51 +09:00
Sukchan Lee
3ff9c6bbb5 add gitsubmodule 2019-04-28 00:00:02 +09:00
Sukchan Lee
1b62f07684 remove gitmodules 2019-04-27 23:57:29 +09:00
Sukchan Lee
0ebd85f364 Integration with OGSLib 2019-04-27 23:54:30 +09:00
Sukchan Lee
4165ec1264 Release v0.3.11 2019-04-27 14:00:29 +00:00
Sukchan Lee
540a3956bb Merge pull request #171 from toldjuuso/patch-1
typo: trace log message on s11
2019-04-19 06:15:52 +09:00
Juuso Haavisto
9919e7dc86 typo: trace log message on s11 2019-04-18 20:10:18 +03:00
Sukchan Lee
6bd8411fc1 Add log message if EIA0 is used (#167) 2019-04-02 11:11:24 +09:00
Sukchan Lee
8fea12643a nas_plmn_id_t structure for NAS message. (#166)
/**********************************
 * NAS PLMN_ID Structure             */
typedef struct _nas_plmn_id_t {
ED2(uint8_t mcc2:4;,
    uint8_t mcc1:4;)
ED2(uint8_t mnc3:4;,
    uint8_t mcc3:4;)
ED2(uint8_t mnc2:4;,
    uint8_t mnc1:4;)
} __attribute__ ((packed)) nas_plmn_id_t;

/**********************************
 * PLMN_ID Structure             */
typedef struct _plmn_id_t {
ED2(c_uint8_t mcc2:4;,
    c_uint8_t mcc1:4;)
ED2(c_uint8_t mnc1:4;,
    c_uint8_t mcc3:4;)
ED2(c_uint8_t mnc3:4;,
    c_uint8_t mnc2:4;)
} __attribute__ ((packed)) plmn_id_t;
2019-03-31 14:26:18 +09:00
Sukchan Lee
c964d1df3c Increase packet memory buffer (#161) 2019-03-22 16:59:37 +09:00
Sukchan Lee
ddaea685b3 Notify mailing list 2019-03-17 21:37:48 +09:00
Sukchan Lee
e1ad9c43d7 Fix the source code (#159) 2019-03-17 01:58:14 +00:00
Sukchan Lee
0b91d42cb1 Merge pull request #159 from laf0rge/laforge/typo
nas_message.py: Fix copy+paste error
2019-03-17 10:57:37 +09:00
Harald Welte
653701abdb nas_message.py: Fix copy+paste error
Files are not generated by gtpv2c_tlv.py but by nas_message.py
2019-03-16 20:55:54 +01:00
Sukchan Lee
58bcda332b Set ENB-ID to zero in S1AP message. (#156) 2019-03-10 10:32:26 +09:00
Sukchan Lee
8cb620e477 refine exit routine for nextepc-epcd 2019-03-03 21:11:50 +09:00
Sukchan Lee
5cac796e46 Support 4-byte RES in auth (#147) 2019-02-07 20:53:01 +09:00
Sukchan Lee
8c68560ccd fix the timezone in EMM & GTP encoding 2019-01-20 15:36:11 +09:00
Sukchan Lee
b2c6c8f856 Merge pull request #129 from EugeneBogush/patch-1
maybe this more logically?
2018-12-05 06:46:03 +09:00
EugeneBogush
f753d38338 maybe this more logically? 2018-12-04 18:00:46 +02:00
Sukchan Lee
c711e788d2 Add TimeZone in the docker environment 2018-11-13 10:03:24 +09:00
Sukchan Lee
26f4081979 Merge pull request #109 from brchiu/add_missing_c_namespace 2018-10-12 20:49:48 +09:00
Bi-Ruei, Chiu
3427835ecc Add missing C namespace 2018-10-12 14:59:30 +08:00
Sukchan Lee
7312dd1974 Change configuration description (#100) 2018-09-23 14:41:55 +09:00
Sukchan Lee
f5599896ff SGW selection mode is added (#100) 2018-09-23 14:29:19 +09:00
Sukchan Lee
aea1d83026 Create mme_sgw_t and mme_pgw_t for configuration (#100) 2018-09-23 13:16:40 +09:00
Jihoon Brandon Lee
3dc2d396db S1AP PWS(public warning system) support
S1AP Write Replace Warning Request/Response
S1AP Kill Request/Response
CBC integration (SBc-AP) is required to initiate a PWS procedure.
2018-09-13 20:38:33 -06:00
Sukchan Lee
d004770e17 Release v0.3.10 2018-08-17 11:54:36 +00:00
Sukchan Lee
f049ffb945 Release v0.3.10 2018-08-17 04:28:50 +00:00
Sukchan Lee
3b66bf09aa Renew freeDiameter Certification #93, #94 2018-08-17 10:00:15 +09:00
Sukchan Lee
0e7cf76f8a Change directory src/app to src/common 2018-08-14 17:28:22 +09:00
Sukchan Lee
0ce11e3a7c Remove 'app_name' global variable 2018-08-14 17:01:46 +09:00
Sukchan Lee
d96efc6ea9 Re-arrange function declaration on Test Code 2018-08-13 17:49:49 +09:00
Sukchan Lee
a5dd751817 update packet-lock.json 2018-08-13 16:55:21 +09:00
Sukchan Lee
334de68d85 update package-lock.json 2018-08-13 15:46:09 +09:00
Sukchan Lee
295213dd62 Add Attach-Request handler in all EMM state.
If signal is low, UE cannot send an appropriate NAS message.

In this case, the eNB either sends a NASNonDelivery message or
sends the message back according to UE's NAS timer.

At this point, NextEPC did not implement NAS-Specification exactly. The
NASNonDelivery message will be ignored, and a timer of NAS is not yet in
need.

However, since necessary to recover, it is now implemented to
accept an Attach Request in all EMM state. The other features will be
added later if we decide that it is really necessary.
2018-08-11 12:27:50 +09:00
James Park
0a93c886ad Merge branch 'master' of https://github.com/acetcom/cellwire 2018-08-10 17:09:39 -07:00
James Park
f91b872d0b Do not resolve remote peer, which may results in the failure of running
nextepcd.
2018-08-10 17:04:34 -07:00
Sukchan Lee
283e37ca26 update package-lock.json 2018-08-09 20:55:20 +09:00
Sukchan Lee
e2afb6b2fc fix package-lock 2018-07-31 19:40:04 +09:00
Sukchan Lee
51b07a496e Show reason string for YAML parser error (#40) 2018-07-23 20:28:38 +09:00
Sukchan Lee
c3e5bdba53 fix the indentation 2018-07-04 18:05:30 +09:00
Sukchan Lee
271949ad86 Merge pull request #73 from giuliol/master
fixed TLV uint32 bug
2018-07-04 18:04:08 +09:00
Sukchan Lee
7ed6d53604 update it 2018-07-02 22:35:36 +09:00
Sukchan Lee
85a100c69d udpate it 2018-07-02 22:34:59 +09:00
Sukchan Lee
3327420b6f Change discussion channel from slack to discord 2018-07-02 22:31:59 +09:00
Sukchan Lee
64a9fef969 upgrade NPM package 2018-07-02 22:20:13 +09:00
Sukchan Lee
95079a8e90 fix the slack invite link 2018-07-02 21:02:51 +09:00
Sukchan Lee
1c658c1e45 add make in fedora dockerfile 2018-06-23 22:12:57 +09:00
Sukchan Lee
06e56a4509 fix the compile error in MacOSX 2018-06-23 22:10:39 +09:00
Sukchan Lee
2295636f36 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-06-23 13:00:01 +00:00
Sukchan Lee
8f9219bef0 fix the compile error for GCC 8.1 2018-06-23 12:59:40 +00:00
Sukchan Lee
b2f957dc8e fix the compiler error in the mongo-c-driver 1.11 2018-06-23 21:14:03 +09:00
Sukchan Lee
71c7508047 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-06-20 17:57:17 +09:00
Sukchan Lee
bc87fc9c18 remove unnecessary code 2018-06-20 17:57:02 +09:00
Sukchan Lee
50fdf5474f Add log for UE IP (#71) 2018-06-19 22:43:13 +09:00
giuliol
51fde0acd8 fixed TLV uint32 bug 2018-06-18 10:34:17 +01:00
Sukchan Lee
5ee7cdd3f8 Release v0.3.9 2018-06-03 01:42:05 +00:00
Sukchan Lee
048eb3f2b2 Change default DISPLAY environment.
We set the DISPLAY=docker.for.mac.localhost:0
If you want to use wireshark in Linux, you need to set DISPLAY to :0.
2018-06-03 10:32:28 +09:00
Sukchan Lee
352b02fc3e Fix the Dockerfile error 2018-06-03 10:17:56 +09:00
Sukchan Lee
9d8695fa31 Update logging message 2018-05-31 09:40:34 +09:00
Sukchan Lee
9415f5215c Fix SCTP for Mac OS X 2018-05-30 22:17:46 +09:00
Sukchan Lee
8c674aa134 Update logging 2018-05-30 21:58:10 +09:00
Sukchan Lee
3b9b1108b1 Configure Outbound streams on SCTP_COMM_UP 2018-05-30 21:49:17 +09:00
Sukchan Lee
9aed43075c SCTP recv interface will be changed. (Progressing...) 2018-05-30 17:45:14 +09:00
Sukchan Lee
3d78f285be Install wireshark in docker 2018-05-30 15:05:47 +09:00
Sukchan Lee
749d632b86 Change the name of docker image 2018-05-29 17:41:11 +09:00
Sukchan Lee
37ecb9a63b Change debian package in docker 2018-05-29 16:03:29 +09:00
Sukchan Lee
0d3af830bb Unlink debian from ubuntu 2018-05-29 13:05:37 +09:00
Sukchan Lee
7c7cfd1cbf Support bionic in Docker 2018-05-29 11:20:48 +09:00
Sukchan Lee
4f1efbb521 Add wireshark in Docker 2018-05-29 11:15:18 +09:00
Sukchan Lee
2fb37ad797 Change the assert to warning
- When UEContextReleaseComplete is received,
    It could be unknown MME-UE-S1AP-ID.
- So, we change the log from assert to warning
2018-05-23 20:40:46 +09:00
Sukchan Lee
ffa6c2c15b Fix the bug of invalid TAU update result.
- MME should set TAU update result in TAU accept message. TAU udpate
result should be derived from TAU request message.
2018-05-22 19:21:34 +09:00
Sukchan Lee
c906b243a2 fix the encryption bug 2018-05-22 17:39:43 +09:00
Sukchan Lee
056fc43d34 Fix the bug for EIA2 (#64) 2018-05-22 11:31:09 +09:00
Sukchan Lee
76c84bdaa4 Fix the bug in building TAU accept message (#29)
- TAU accept should be integrity protected
2018-05-21 15:17:34 +09:00
Sukchan Lee
6ae20c9d1c refine code 2018-05-19 06:16:53 +09:00
Sukchan Lee
fe84604fa0 Oops! Change inbound_streams to outbound_streams (#63) 2018-05-19 06:06:02 +09:00
Sukchan Lee
85a2a64b65 Support Mac OS X for SCTP streams negotiations 2018-05-18 23:08:57 +09:00
Sukchan Lee
f5c203d3ac remove redundant code 2018-05-18 17:32:56 +09:00
Sukchan Lee
9a0afe035a Negociate SCTP stream ID with eNodeB (#63) 2018-05-18 17:14:29 +09:00
Sukchan Lee
76d8df3879 remove d_error 2018-05-18 15:52:47 +09:00
Sukchan Lee
550a606306 Update error message if SGW is not running (#59) 2018-05-14 21:46:19 +09:00
Sukchan Lee
1b21c21395 change warning to trace 2018-05-13 21:14:51 +09:00
Sukchan Lee
157dab73c7 fix the linux for SCTP streams 2018-05-13 18:31:01 +09:00
Sukchan Lee
7dba30b1e6 S1AP sends SCTP packet with stream id (#54) 2018-05-13 18:02:24 +09:00
Sukchan Lee
55fa0115e8 Merge branch 'master' into stream 2018-05-13 17:01:36 +09:00
Sukchan Lee
2142d406f0 fix the timezone for GTPv2 message 2018-05-13 17:00:57 +09:00
Sukchan Lee
9d84d4d43a Fix the timezone error 2018-05-13 16:45:49 +09:00
Sukchan Lee
57ef9697c3 Merge branch 'stream' of https://github.com/acetcom/nextepc into stream 2018-05-13 10:04:12 +09:00
Sukchan Lee
280aaf9fe1 Add SCTP output stream generator (#54) 2018-05-10 11:19:05 +09:00
Sukchan Lee
529b55c16b Introduce new configuration for SCTP streams (#54)
SCTP initmsg
 - Number of output streams : configured(default:30)
 - Maximum input streams : 65535
 - Maximum attempts : 4
 - Maximum initial timeout : 8 seconds
2018-05-10 10:35:15 +09:00
Sukchan Lee
10f59c850b Generate SCTP output stream identifier 2018-05-09 23:09:04 +09:00
Sukchan Lee
e18467889c Introduce new configuration for SCTP streams
SCTP initmsg
 - Number of output streams : configured(default:30)
 - Maximum input streams : 65535
 - Maximum attempts : 4
 - Maximum initial timeout : 8 seconds
2018-05-09 22:11:25 +09:00
Sukchan Lee
3148d4cd67 Support Ubuntu 18.04 LTS (bionic) 2018-05-05 22:52:03 +09:00
Sukchan Lee
de92fdd5c7 Update debian changelog for ubuntu 18.04(bionic)
We've release ubuntu 18.04 LTS(bionic)
2018-05-05 21:51:50 +09:00
Sukchan Lee
f3ddfaec44 Fix the docker development environment 2018-05-02 22:11:02 +09:00
Sukchan Lee
2d5f9d0d26 Release v0.3.8 2018-04-29 21:48:27 +09:00
Sukchan Lee
765eb2ada0 update it 2018-04-20 10:48:52 +02:00
Sukchan Lee
ee3c2d29bf Merge branch 'master' of https://github.com/acetcom/nextepc 2018-04-20 09:06:50 +02:00
Sukchan Lee
60aca81a1f fix the bug for handover command in case of no indirect tunnel 2018-04-20 09:06:17 +02:00
Sukchan Lee
e60a3d567d fix memory-leak when s1ap decode is failed 2018-04-18 22:21:58 +09:00
James Park
c968067829 -Initialize enb_ue_s1ap_id to invalid value
-Use mme_ue_s1apid if enb_ue_s1ap_id is not valid when encoding
ue_context_release_command
2018-04-17 14:35:15 -07:00
James Park
553804dd94 Fix bug: Paging message should be copied before sending 2018-04-17 11:46:20 -07:00
Sukchan Lee
38a252bbf0 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-04-15 18:37:58 +09:00
Sukchan Lee
ae1660c436 add warning 2018-04-15 18:37:45 +09:00
Sukchan Lee
d2aed88ac6 Release 0.3.7 2018-04-14 15:04:04 +09:00
James Park
e5a0b1ff69 Reduce the number of buffered packets when UE is in idle.
FIXME: Need to be adjusted when the number of clbuf is increased.
2018-04-12 10:11:17 -07:00
Sukchan Lee
539d0c7bc5 fix the bug about wrong size value when calling core_calloc 2018-04-11 06:47:28 +09:00
James Park
a1e06c919f Fix bug : wrong size vlaue when calling core_calloc 2018-04-10 14:35:18 -07:00
Sukchan Lee
935e4b56ef Use common S1AP library for UERadioCapability
- Use S1AP_STORE/CLEAR macros for storing/retrieving UERadioCapability
- UERadioCapability will be stored in UECapabilityInfoIndication
- InitialContextSetupRequest use the stored UERadioCapability
2018-04-09 21:52:16 +09:00
Sukchan Lee
2a1feae83f add the log in initial_context_setup_request 2018-04-06 09:38:11 +09:00
Sukchan Lee
b1055f703a if Unknown GUTI in TAU request, MME sends TAU-reject (#42) 2018-03-27 09:42:23 +09:00
Sukchan Lee
dab5bae4ed add constraint for safety 2018-03-25 22:51:30 +09:00
Sukchan Lee
8ff9a7cf4c eNB/MME Configuration Transfer with new S1AP library 2018-03-24 10:08:55 +09:00
Sukchan Lee
82dee88309 change d_assert to d_error if target eNB is not found 2018-03-23 13:14:56 +09:00
Sukchan Lee
6ff80f4457 Apply velichkov's s1ap branch update 2018-03-22 15:55:52 +09:00
Sukchan Lee
62eed38e63 mistypo 2018-03-22 14:57:46 +09:00
Sukchan Lee
e66c8270d8 update readme 2018-03-22 14:55:03 +09:00
Sukchan Lee
ab6f48193b readme updated 2018-03-22 14:53:18 +09:00
Sukchan Lee
f3b4a9b70f Move new S1AP encoder/decoder 2018-03-22 14:12:03 +09:00
Sukchan Lee
80b14b85f0 Merge branch 's1ap' 2018-03-22 13:53:52 +09:00
Sukchan Lee
db1d139364 add debug message for s1ap(trace_level:25) 2018-03-21 21:15:01 +09:00
Sukchan Lee
03644bdb0c Release 0.3.6 2018-03-21 08:05:56 +00:00
Sukchan Lee
c944e87d5a Release 0.3.6 2018-03-21 16:49:39 +09:00
Sukchan Lee
778d23e717 Reset is done 2018-03-21 16:37:15 +09:00
Sukchan Lee
ef9d5948a8 s1 reset encoder/decoder is added 2018-03-21 16:10:20 +09:00
Sukchan Lee
13ece7f4d4 Merge branch 'master' into s1ap 2018-03-21 14:06:20 +09:00
Sukchan Lee
a9e5283db3 fix compile error trusty 32bit 2018-03-20 15:12:24 +09:00
Sukchan Lee
87b6896128 fix compile error 2018-03-18 18:50:36 +09:00
Sukchan Lee
6c692e05f5 Oops! 2018-03-16 13:29:36 +09:00
Sukchan Lee
bf6e3cdc8c change assert to warning 2018-03-16 13:13:56 +09:00
Sukchan Lee
8a2699b81f increase recv buffer size to 8192 (#35) 2018-03-15 21:54:50 +09:00
Sukchan Lee
d503fadd55 fix the testvolte 2018-03-15 17:39:41 +09:00
Sukchan Lee
463e40d41b test initial context setup failure and handover failure 2018-03-15 17:22:45 +09:00
Sukchan Lee
4b32d7f448 Merge branch 'master' into s1ap 2018-03-15 14:14:43 +09:00
Sukchan Lee
25c90c0e96 Increase SCTP recv buffer from 2048 to 4096 2018-03-15 10:50:32 +09:00
Sukchan Lee
1cd740704e update it 2018-03-14 18:12:07 +09:00
Sukchan Lee
9434c751cb merge master branch 2018-03-14 17:59:56 +09:00
Sukchan Lee
0414f19684 Merge branch 'master' into s1ap 2018-03-14 17:45:54 +09:00
Sukchan Lee
5d21ae4071 Sends ErrorIndication if S1 context has already been removed (#29) 2018-03-14 17:24:04 +09:00
Sukchan Lee
f89358dc03 add handover failure 2018-03-14 16:36:56 +09:00
Sukchan Lee
4c8123f771 ENB Status Transfer is added with s1ap_copy_ie() 2018-03-14 14:03:43 +09:00
Sukchan Lee
637d8613ba fix the 32bit S1AP problem 2018-03-14 13:40:45 +09:00
Sukchan Lee
d881f8c2ed handover test 2018-03-13 23:42:55 +09:00
Sukchan Lee
dbdd6bfdcf handover test 2018-03-13 23:16:01 +09:00
Sukchan Lee
99a8e06ccf Oops. rollback 2018-03-13 17:52:00 +09:00
Sukchan Lee
a11f6e431c S1AP handover is added. (Not tested) 2018-03-13 17:50:11 +09:00
Sukchan Lee
8e52447a53 ErrorIndication is added 2018-03-12 23:06:14 +09:00
Sukchan Lee
5172d2034a Path Switch Request is added 2018-03-12 22:47:10 +09:00
Sukchan Lee
49fba95ebb update README 2018-03-12 20:58:31 +09:00
Sukchan Lee
74834c0eb4 change s1ap asn1c to velichkov 2018-03-12 11:55:44 +00:00
Sukchan Lee
422d1c2f8f Merge branch 's1ap-brchiu' of https://github.com/acetcom/nextepc into s1ap-brchiu 2018-03-12 11:38:40 +00:00
Sukchan Lee
98a317b4b9 port linux 2018-03-12 11:38:21 +00:00
Sukchan Lee
ff3dc862b3 paging is tested 2018-03-11 21:24:26 +09:00
Sukchan Lee
9e55f1c78a Paging is added 2018-03-11 20:57:18 +09:00
Sukchan Lee
c7d24c804b E-RAB Setup/Release is added 2018-03-11 20:41:37 +09:00
Sukchan Lee
308c6f1e66 all attach test is successful 2018-03-11 16:36:51 +09:00
Sukchan Lee
6480689da4 ue context release is added 2018-03-11 14:38:35 +09:00
Sukchan Lee
2c1d70de3c new s1ap : attach done 2018-03-10 22:52:21 +09:00
Sukchan Lee
d40bf0463d continue to move new s1ap library 2018-03-10 12:21:02 +09:00
Sukchan Lee
e10d358a2b Merge branch 'master' into s1ap-brchiu 2018-03-09 21:02:17 +09:00
Sukchan Lee
bb844434f2 MME Configuration Transfer is added (#29) 2018-03-08 23:29:02 +09:00
Sukchan Lee
6c3390bf30 MME can support S1-handover without creating indirect tunnel 2018-03-07 22:32:31 +09:00
Sukchan Lee
c31dfb507d eNB Configuration Transfer is added (#29) 2018-03-07 21:53:53 +09:00
Sukchan Lee
5fad2f0e5c Release 0.3.5 2018-03-06 12:43:34 +00:00
James Park
e69cea9b5b Ignore UCS2 bit to encode UIA 2018-03-05 11:02:36 -08:00
Sukchan Lee
1c8d10a696 remove s1ap2 2018-03-05 23:33:29 +09:00
Sukchan Lee
0d073fbb73 s1setup encoder is implemented 2018-03-05 23:32:14 +09:00
Sukchan Lee
c5689b3f66 update it 2018-03-05 23:01:07 +09:00
Sukchan Lee
0c9b034f12 move s1ap3 to s1ap 2018-03-05 22:17:22 +09:00
Sukchan Lee
16b69865ac remove s1ap 2018-03-05 22:14:38 +09:00
Sukchan Lee
fa981b8028 update it 2018-03-04 23:34:40 +09:00
Sukchan Lee
0628b76296 update it 2018-03-04 23:23:35 +09:00
Sukchan Lee
0d8928ff05 re-add s1ap 2018-03-04 16:30:03 +09:00
Sukchan Lee
da04290a62 encoder/decoder sample code is added 2018-03-04 13:35:06 +09:00
Sukchan Lee
6f9e45a332 Modify the security capability length (#27)
If octet 5 is included, then also octet 6 shall be included and octet 7
may be included.
2018-03-03 14:18:33 +09:00
Sukchan Lee
9357381839 Fix the bug of secuirty capability in security command (#27) 2018-03-03 14:10:24 +09:00
Sukchan Lee
8ab602e6d2 update it 2018-02-27 18:35:57 +09:00
Sukchan Lee
84e7f50b3f update test code (#22) 2018-02-27 12:01:01 +09:00
Sukchan Lee
2bc92c5ac8 fix the indentation
* VIM
set sw=4
set ts=4
set expandtab

* Limited with 80 Column
2018-02-27 11:59:08 +09:00
Sukchan Lee
2429a4e363 fix the presentmask and change default configuration (#22) 2018-02-27 11:56:10 +09:00
Sukchan Lee
dab0f3ef3a Merge pull request #22 from medeiros405/master 2018-02-27 11:08:55 +09:00
medeiros405
144548f4c0 src/mme/emm_handler.c 2018-02-26 13:48:26 -03:00
medeiros405
1f44efbc3d src/mme/emm_handler.c 2018-02-26 13:46:28 -03:00
Sukchan Lee
6df88862f9 mistypo 2018-02-26 22:36:51 +09:00
Sukchan Lee
f49a66dfc5 script update 2018-02-26 14:59:51 +09:00
Sukchan Lee
7e8718e346 update it 2018-02-26 11:57:49 +09:00
medeiros405
02712a38e6 src/mme/emm_handler.c
src/mme/mme_context.c
src/mme/mme_context.h
support/config/mme.conf.in
2018-02-25 18:33:36 -03:00
Sukchan Lee
888cbfbdb8 S1-reset encoder/decoder is added 2018-02-22 22:52:59 +09:00
Sukchan Lee
cdf7fb94bf S1-Setup failure is added 2018-02-22 22:23:16 +09:00
Sukchan Lee
e4989c7aa3 fix the README.md 2018-02-22 11:27:38 +09:00
Sukchan Lee
5365893c34 Release 0.3.4 2018-02-22 02:17:11 +00:00
Sukchan Lee
3c65414135 Release 0.3.4 2018-02-22 02:14:31 +00:00
Sukchan Lee
80bcfcf646 Release 0.3.4 2018-02-22 02:10:52 +00:00
Sukchan Lee
7e460fbcb4 dput is added 2018-02-22 10:47:21 +09:00
Sukchan Lee
62fe796d41 fix check.sh 2018-02-22 09:51:38 +09:00
Sukchan Lee
0104543f7d add manpage for dev 2018-02-22 00:48:42 +09:00
Sukchan Lee
39c30cb908 fix it 2018-02-22 00:32:11 +09:00
Sukchan Lee
c09b272e53 fix the base image for docker-dev 2018-02-22 00:30:28 +09:00
Sukchan Lee
92d8bde84a change dependency docker-dev 2018-02-22 00:18:31 +09:00
Sukchan Lee
e2bb5706fa update Dockerfile 2018-02-21 23:55:44 +09:00
Sukchan Lee
d74afc5bc7 for old version gcc compiler, we fix the size of child_desc in TLV message library 2018-02-21 14:48:41 +00:00
Sukchan Lee
c8a65b6b18 add other OS for docker 2018-02-21 23:20:48 +09:00
Sukchan Lee
f5582c97b5 NULL-pointer sgw_ue context is accessed (#18) 2018-02-21 17:29:47 +09:00
Sukchan Lee
b8cc130bf5 update check.sh 2018-02-21 14:35:46 +09:00
Sukchan Lee
12d65e92d1 re-arrange package between base and dev 2018-02-21 14:11:41 +09:00
Sukchan Lee
2904284405 Dockerfile cache invalidating for nextepc build 2018-02-21 13:16:11 +09:00
Sukchan Lee
f1b0cd5748 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-02-21 12:35:19 +09:00
Sukchan Lee
91c9586561 update docker configuration 2018-02-21 12:35:05 +09:00
Sukchan Lee
05cfcf4cc3 Override configuration if DB_URI environment variable is existed 2018-02-21 03:25:48 +00:00
Sukchan Lee
c827701824 update it 2018-02-20 23:57:06 +09:00
Sukchan Lee
5fcc7e2ee6 runtime is testedwq 2018-02-20 23:49:24 +09:00
Sukchan Lee
bd1dff2dc5 missing files 2018-02-20 22:47:56 +09:00
Sukchan Lee
f1ad0b11ae change network configuration for docker 2018-02-20 22:29:46 +09:00
Sukchan Lee
9a86d4cb7c Initial Proposal for Docker (#16) 2018-02-20 19:36:34 +09:00
Sukchan Lee
38cccb8a85 move new directory 2018-02-17 15:15:17 +09:00
Sukchan Lee
2d72eaa24d Docker for MongoDB and WebUI recommended by Issue (#16) 2018-02-17 14:47:06 +09:00
Sukchan Lee
f915820f3a network script update for linux 2018-02-15 16:59:27 +09:00
Sukchan Lee
1009ac5e47 add masquerading for Mac OS X 2018-02-14 20:09:04 +09:00
Sukchan Lee
536138457e fix the warning for Mac OS X 2018-02-14 10:22:36 +09:00
Sukchan Lee
730053cef4 update README.md 2018-02-14 10:07:20 +09:00
Sukchan Lee
4a01623d6e update README.md 2018-02-14 00:34:14 +09:00
Sukchan Lee
0cf0e73bf9 update README.md 2018-02-14 00:33:18 +09:00
Sukchan Lee
87e7992450 update docker README.md 2018-02-14 00:29:22 +09:00
Sukchan Lee
75aaf632b8 Dockerfile updated 2018-02-13 23:48:44 +09:00
Sukchan Lee
5c3c99acda update Dockerfile for including Web User Interface 2018-02-13 17:16:17 +09:00
Sukchan Lee
081170a86e add template Dockerfile for NextEPC 2018-02-13 16:15:11 +09:00
Sukchan Lee
c9b4a20223 Release v0.3.3 2018-02-13 04:50:34 +00:00
Sukchan Lee
926e73e87d We use deb-systemd-invoke instead of systemdctl (#16) 2018-02-13 03:38:33 +00:00
Sukchan Lee
61f796d341 update README.md 2018-02-12 22:11:27 +09:00
Sukchan Lee
03715c84be update README.md 2018-02-12 21:47:36 +09:00
Sukchan Lee
72d28286ea update README.md 2018-02-12 21:23:12 +09:00
Sukchan Lee
c2d68cf4b6 update it 2018-02-12 16:43:05 +09:00
Sukchan Lee
e99f6c7789 update README 2018-02-12 08:48:05 +09:00
Sukchan Lee
340b3cb69c Release v0.3.3 Update 2018-02-11 16:10:22 +00:00
Sukchan Lee
5d8231e6c2 Relase v0.3.3 2018-02-11 23:43:55 +09:00
Sukchan Lee
1e5313c230 fix the compile error in CentOS 2018-02-11 12:07:09 +00:00
Sukchan Lee
d488bc3ed7 fix the conflict between PDN disconnect and Detach Request 2018-02-10 23:59:03 +09:00
Sukchan Lee
0de9185545 change debug level 2018-02-10 17:08:51 +09:00
Sukchan Lee
9563e49f48 update nextepc-pgwd.service for systemd-networkd (#16) 2018-02-10 06:53:38 +00:00
Sukchan Lee
881196cde2 Debian package update for docker issue (#16)
* Previously, pgwtun is setup with ifupdown package.
* Now, we'll use the systemd-networkd.
2018-02-10 11:15:39 +09:00
Sukchan Lee
c096cce571 update print-out 2018-02-09 23:14:30 +09:00
Sukchan Lee
3c33206dee update comment 2018-02-09 16:43:28 +09:00
Sukchan Lee
382c52a481 clear sgw s1u path if delete session response is received 2018-02-09 16:26:55 +09:00
Sukchan Lee
f904b63053 Authentication failure should be handled based on EMM_CAUSE(#17)
* Synch failure(EMM_CAUSE:21)
  - Re-authorization. Send authentication request again.

* MAC failure(EMM_CAUSE:20)
  - Send Authentication Reject
  - Send UE Context Release Command

* Non-EPS authentication failure(EMM_CAUSE:26)
  - Send Authentication Reject
  - Send UE Context Release Command

* Others
  - Send Authentication Reject
  - Send UE Context Release Command
2018-02-07 14:12:40 +09:00
Sukchan Lee
7769ded65a remove installcheck 2018-02-06 03:45:08 +00:00
Sukchan Lee
0170166b6b update docker manual 2018-02-06 12:32:39 +09:00
Sukchan Lee
935e81f9c9 test directory re-factor 2018-02-06 12:18:11 +09:00
Sukchan Lee
9fbcb45171 testsuite is added. (refer to libosmocom) 2018-02-06 11:59:49 +09:00
Sukchan Lee
c9596d82f7 add cleanfiles 2018-02-05 14:29:13 +00:00
Sukchan Lee
598b711c01 make check is added. 2018-02-05 23:21:37 +09:00
Sukchan Lee
f9096d55f5 for make check, sample configuration is added 2018-02-05 22:45:14 +09:00
Sukchan Lee
0e87056e2e share common files for test programs 2018-02-05 20:57:06 +09:00
Sukchan Lee
ad10c84ffe volte test configuration is updated 2018-02-05 17:26:20 +09:00
Sukchan Lee
7b99cc7d7c Changes default IP configuration (#14)
* NextEPC will not use 127.0.0.1 address for Diameter and GTP-U

* MME
  S1AP: Auto-Detect
  GTP-C: Auto-Detect
  DIAMETER: 127.0.0.2

* SGW
  GTP-C: 127.0.0.2
  GTP-U: Auto-Detect

* PGW
  GTP-C: Both 127.0.0.3 and [::1]
  GTP-U: Both 127.0.0.3 and [::1]
  DIAMETER: 127.0.0.3

* HSS
  DIAMETER: 127.0.0.4

* PCRF
  DIAMETER: 127.0.0.5
2018-02-05 08:08:41 +00:00
Sukchan Lee
75cc9bbb47 update bearer context status in tracking area update 2018-02-04 23:48:49 +09:00
Sukchan Lee
3a57990cbc T3402 is redundant. Remove it in Attach/TAU Accept 2018-02-04 23:41:44 +09:00
Sukchan Lee
14ef938fb9 SGW sends End Marker if GTP Node changes. Previously, ULI's cell ID 2018-02-04 23:15:20 +09:00
Sukchan Lee
5c1a3d54e3 rename it 2018-02-04 17:05:30 +09:00
Sukchan Lee
2defa5c868 add simualtor for the active flag 2018-02-04 16:58:56 +09:00
Sukchan Lee
4371084af4 Tracking Area Update with considering Initial UE message and active flag 2018-02-04 16:01:09 +09:00
Sukchan Lee
c0d4f25717 tracking area update request's active flag 2018-02-04 13:12:26 +09:00
Sukchan Lee
aacaa83eea rollback paging check routine 2018-02-03 23:44:04 +09:00
Sukchan Lee
de04e1de45 introduce ECM_IDLE and ECM_CONNECTED 2018-02-03 23:23:50 +09:00
Sukchan Lee
95551de5f9 tracking area update is handling based on UE ECM status 2018-02-03 22:55:05 +09:00
Sukchan Lee
bb4339de2a rename it 2018-02-03 18:29:32 +09:00
Sukchan Lee
831b3e8985 Error Indication is added 2018-02-03 11:48:15 +09:00
Sukchan Lee
f37b3cbfd3 rollback it 2018-02-03 09:18:22 +09:00
Sukchan Lee
23998862f2 update it 2018-02-03 08:49:46 +09:00
Sukchan Lee
e72d79a328 rollback it 2018-02-03 04:18:31 +09:00
Sukchan Lee
66d16ae1bb update it 2018-02-03 03:44:14 +09:00
Sukchan Lee
00178ff65e fix the bug in X2 handover TAI/E_CGI 2018-02-03 02:08:43 +09:00
Sukchan Lee
582c771605 fix the bug : TAU after S1 Handover 2018-02-03 02:00:38 +09:00
Sukchan Lee
52a1e05f41 change warn to trace level 5 2018-02-02 23:36:03 +09:00
Sukchan Lee
c293bef05a add IP address log if No TEID 2018-02-02 21:29:02 +09:00
Sukchan Lee
ebddb2ad9f rename it 2018-02-02 21:09:37 +09:00
Sukchan Lee
7c2dd5e462 add simulator for S1 holding timer 2018-02-02 20:32:13 +09:00
Sukchan Lee
f61233e627 update it 2018-02-02 19:59:26 +09:00
Sukchan Lee
b97597ae7c change S1 release scheme with holding timer(30sec) 2018-02-02 19:37:36 +09:00
Sukchan Lee
57f3baa273 UE-initiated detach_request is handled in every EMM-state 2018-02-02 15:59:21 +09:00
Sukchan Lee
d944bca038 context(tai, e_cgi) transfer during S1-handover 2018-02-02 15:30:25 +09:00
Sukchan Lee
857a250e4f add to trace for testing tracking area update 2018-02-02 13:46:49 +09:00
Sukchan Lee
34986be707 rollback implicit S1 release 2018-02-02 04:26:01 +09:00
Sukchan Lee
cb7132a2fa fix the bug 2018-02-02 04:20:02 +09:00
Sukchan Lee
5397cfd2d8 Send UE Context Release Command instead of Implicit S1 release 2018-02-02 02:48:55 +09:00
Sukchan Lee
0cd0221b29 rollback conflict between service request and downlink notification 2018-02-01 23:21:20 +09:00
Sukchan Lee
8bd186adad tracking area update accept with ue context release command 2018-02-01 23:06:35 +09:00
Sukchan Lee
4e5d156a6a ECM-IDLE/CONNECTED state is added in MME Context Library 2018-02-01 22:48:59 +09:00
Sukchan Lee
c9e44579d8 refine code 2018-02-01 21:38:59 +09:00
Sukchan Lee
4648dc05d5 log update 2018-02-01 16:54:52 +09:00
Sukchan Lee
ca79c05fe6 Update TAU Accept & Initial Context Setup Failure 2018-02-01 16:39:42 +09:00
Sukchan Lee
b040214364 add U-plane TEID trace log 2018-02-01 14:07:01 +09:00
Sukchan Lee
c3afd65ff3 fix the bug for FSM library 2018-02-01 11:56:01 +09:00
Sukchan Lee
f4baa62209 explicit S1 release for initial contexgt setup failure 2018-01-31 06:24:23 +00:00
Sukchan Lee
03cf945f95 fix the memroy leak in SGW Downlink Notification Ack 2018-01-31 15:01:13 +09:00
Sukchan Lee
01d7f157ff modify release access bearer regardless ue context release request's cause 2018-01-31 12:54:59 +09:00
Sukchan Lee
e49e1d2331 Use explict S1 release for initial context setup failure 2018-01-30 22:14:12 +09:00
Sukchan Lee
67393d0160 Implicit S1 Release immediately if Older S1 context is found. 2018-01-30 22:10:28 +09:00
Sukchan Lee
7ca9ead4b9 refine code 2018-01-30 21:57:19 +09:00
Sukchan Lee
3f7c3d3041 Prevent GUTI re-allocation for every attach_request 2018-01-30 07:25:42 +09:00
Sukchan Lee
cf6df20ad7 refine code 2018-01-29 13:44:25 +00:00
Sukchan Lee
b77c9b8ff6 refine code 2018-01-29 22:38:53 +09:00
Sukchan Lee
795ecc8cf8 Implicit S1 Release 2018-01-29 19:10:54 +09:00
Sukchan Lee
b704e94efa fix the memory leak t3413 paging timer in MME_UE Context 2018-01-29 16:47:07 +09:00
Sukchan Lee
ae6e747e52 ECM_IDLE/CONNECTED is introduced 2018-01-29 14:48:51 +09:00
Sukchan Lee
60cfbed747 Update state machine 2018-01-28 22:08:53 +09:00
Sukchan Lee
597fcfbad9 rollback implict S1 release 2018-01-28 16:13:48 +09:00
Sukchan Lee
762431cb6f GUTI is suppressed in Attach accept if GUTI is not changed. 2018-01-28 15:32:45 +09:00
Sukchan Lee
21a130bc16 Implicitly S1 release without sending UE context release command 2018-01-28 15:08:52 +09:00
Sukchan Lee
5774aeb62d Change Cause value in UE Context Release Command 2018-01-28 14:11:17 +09:00
Sukchan Lee
7b2355a40f MME_UE Context is not deleted even thought Detach Request(switch-off case) 2018-01-28 13:50:21 +09:00
Sukchan Lee
28237ea6af clean security context if KSI is INVALID(7) 2018-01-26 09:08:50 +09:00
Sukchan Lee
09969e859d update log 2018-01-26 07:10:41 +09:00
Sukchan Lee
9451928786 remove INVALID ASSERT in SGW 2018-01-26 06:52:30 +09:00
Sukchan Lee
c6bfed6628 Debian Release 0.3.2 2018-01-24 08:12:43 +00:00
Sukchan Lee
20efdd5639 update the GTP TLV trace 2018-01-24 14:17:24 +09:00
Sukchan Lee
dfb9755295 update data plane trace 2018-01-24 02:59:23 +00:00
Sukchan Lee
6272d170e0 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-01-24 02:55:14 +00:00
Sukchan Lee
e31976e505 fix the linux compile error 2018-01-24 02:54:56 +00:00
Sukchan Lee
4c98dae79e fix the bug indirect tunnel 2018-01-24 11:54:04 +09:00
Sukchan Lee
94145fec62 fix the bug for finding indirect tunnel 2018-01-24 11:32:46 +09:00
Sukchan Lee
bba98cf066 s1ap_encoder/s1ap_decoder module use d_trace() instead of printf() 2018-01-24 10:17:50 +09:00
Sukchan Lee
9503c8efdc chage debug buffer size to HUGE_STRING_LEN(8192) for avoiding buffer overflow 2018-01-24 10:08:59 +09:00
Sukchan Lee
f5f4e42be9 update ATTACH_ACCEPT message for solving the problem of EMM_STATUS 2018-01-24 00:03:44 +09:00
Sukchan Lee
afafce6760 update gitignore 2018-01-23 20:20:19 +09:00
Sukchan Lee
49cfb51a65 fix the open-ims test configuration 2018-01-23 17:54:25 +09:00
Sukchan Lee
02a11b6c50 Oops! check the trace level 2018-01-23 08:52:10 +00:00
Sukchan Lee
859322cb22 fix the freediameter logger from d_trace() to printf() 2018-01-23 08:49:33 +00:00
Sukchan Lee
b1c61cfcbf state name changes detached/attached -> de_registered/registered 2018-01-23 17:18:18 +09:00
Sukchan Lee
ed92c30b26 adjust trace_level 2018-01-23 17:11:21 +09:00
Sukchan Lee
610292fb5c dp log added 2018-01-23 16:48:40 +09:00
Sukchan Lee
66d71924ce update trace level 2018-01-23 16:10:46 +09:00
Sukchan Lee
b37a74416a trace name gtp -> gtpv2, others -> app 2018-01-23 16:02:35 +09:00
Sukchan Lee
35a95fd4ac update trace level 2018-01-23 15:38:07 +09:00
Sukchan Lee
d66e25dda3 refine tun error log 2018-01-23 14:36:52 +09:00
Sukchan Lee
6850e3b2a3 update log 2018-01-22 15:12:36 +00:00
Sukchan Lee
225e1ba07f refine GTP/Diameter Log 2018-01-23 00:00:57 +09:00
Sukchan Lee
67870af84f update trace log for S1AP/NAS 2018-01-22 23:14:20 +09:00
Sukchan Lee
17cbd61552 add emm_state_exception if identity response cannot find IMSI 2018-01-22 17:08:53 +09:00
Sukchan Lee
ebd8d2f571 update state machin 2018-01-22 16:53:47 +09:00
Sukchan Lee
7d43bd870e refine attached/detached state handler 2018-01-22 16:35:12 +09:00
Sukchan Lee
f94553bc8a update state machine 2018-01-22 12:24:18 +09:00
Sukchan Lee
6e6eb7a355 refine code 2018-01-22 11:40:26 +09:00
Sukchan Lee
b678d9e9a2 change the log level for conflict M-TMSI 2018-01-21 22:46:48 +09:00
Sukchan Lee
4c8e2add2f fix the bug M-TMSI generator 2018-01-21 22:36:49 +09:00
Sukchan Lee
8557d50341 rename hss_kdf -> hss_auc 2018-01-21 20:46:02 +09:00
Sukchan Lee
e785d4ca4e refine S1ap_Cause related source code 2018-01-21 20:31:28 +09:00
Sukchan Lee
32d62805df changes trace level 2018-01-21 17:40:06 +09:00
Sukchan Lee
4eb314d781 In emm_state_attached state, if NAS MAC is failed, service reject is sent out 2018-01-21 17:36:59 +09:00
Sukchan Lee
1d947c5698 M-TMSI is generated by Random Number for protecting security attach 2018-01-21 16:53:39 +09:00
Sukchan Lee
05f631f0ac change service_request test packet 2018-01-21 15:44:30 +09:00
Sukchan Lee
9b9bfdc0b0 add head logger for indicating configuration file path 2018-01-21 11:21:56 +09:00
Sukchan Lee
f93d367eee update EMM state machine 2018-01-20 15:09:30 +09:00
Sukchan Lee
6bcd72cf45 update state machine 2018-01-20 12:42:58 +09:00
Sukchan Lee
2a6102d207 fix the bug 2018-01-20 12:16:08 +09:00
Sukchan Lee
734ac953a7 Oops! remove comment out 2018-01-20 09:57:24 +09:00
Sukchan Lee
56dd6b6a28 fix the memory leak when SGW cannot find tunnel 2018-01-20 09:35:03 +09:00
Sukchan Lee
3be652701e update EMM state machine 2018-01-20 08:52:59 +09:00
Sukchan Lee
862571c8ed rollback state machine 2018-01-20 04:29:58 +09:00
Sukchan Lee
907c3f2f3c rollback previous commit 2018-01-20 04:07:20 +09:00
Sukchan Lee
baf273c06e add simulator for verifying NAS MAC 2018-01-20 03:11:20 +09:00
Sukchan Lee
cb50821aa8 if TAU_REQUEST is received, update keNB. 2018-01-19 22:21:06 +09:00
Sukchan Lee
1830b0bc75 add authentication failure exception 2018-01-19 17:43:46 +09:00
Sukchan Lee
d02763dde5 security mode reject is added 2018-01-19 17:30:18 +09:00
Sukchan Lee
ee0d7fe7d8 add error handling if ue context release request is radio network 2018-01-19 17:00:37 +09:00
Sukchan Lee
e4c189fec2 if TAU_REJECT or SERVICE_REJECT, MME UE Context is removed. 2018-01-19 16:29:21 +09:00
Sukchan Lee
2701add779 if EMM_STATUS is received, EMM state will be recovered to an initial state 2018-01-19 15:37:25 +09:00
Sukchan Lee
9b8eef2545 rollback previous commit 2018-01-19 14:03:27 +09:00
Sukchan Lee
52c6504c65 for test..disable NAS MAC check 2018-01-19 04:49:41 +09:00
Sukchan Lee
f35aa2178f fix the abort-cause value 2018-01-19 01:32:01 +09:00
Sukchan Lee
46f85d9fc8 Volte QoS is basically derived by IMS instead of EPC.
If the QoS informaton is provided from IMS, we'll use WEBUI QoS value
2018-01-19 01:23:13 +09:00
Sukchan Lee
131babeddc Turn off IPv6 in default setting. But UE network can support both IPv4 and IPv6 2018-01-18 10:21:13 +09:00
Sukchan Lee
6acdff21bb fix the bug for initial context setup failiure 2018-01-18 10:04:55 +09:00
Sukchan Lee
e0504dcf12 check enb_ue context before paging message is sent out 2018-01-18 08:36:56 +09:00
Sukchan Lee
95708a6ce4 fix the memory leak 2018-01-18 08:03:37 +09:00
Sukchan Lee
c9b4a1023b add missing files 2018-01-17 14:13:19 +00:00
Sukchan Lee
8025f10586 diameter log level is fixed 2018-01-17 23:08:20 +09:00
Sukchan Lee
e2f1872ea7 loglevel is adjusted 2018-01-17 22:55:52 +09:00
Sukchan Lee
8ae6f82aee fix linux compile error 2018-01-17 13:37:11 +00:00
Sukchan Lee
2620a4bd44 missing files 2018-01-17 22:35:35 +09:00
Sukchan Lee
3334afe891 refine it 2018-01-17 22:26:48 +09:00
Sukchan Lee
ab4c8f3e9e test code name changes from testrx to testvolte 2018-01-17 22:16:47 +09:00
Sukchan Lee
c56f75299c if WEBUI activates state dedicated bearer, modify bearer will be initiated 2018-01-17 21:47:59 +09:00
Sukchan Lee
8537aaee1b ASR/ASA is done 2018-01-17 21:22:30 +09:00
Sukchan Lee
d13b735d26 rx_sess_data is changed to list structure 2018-01-17 20:31:49 +09:00
Sukchan Lee
3662ad423e add simulation code for testing LTE disconnect during Voice Call 2018-01-17 17:17:22 +09:00
Sukchan Lee
d8f23bed1a mme_ue_remove() if detach request is switch-off 2018-01-17 16:53:49 +09:00
Sukchan Lee
131fb3ac79 modify dedicated bearer is done 2018-01-17 16:01:11 +09:00
Sukchan Lee
fffd654391 NAS modify bearer request/accept is done 2018-01-17 15:41:45 +09:00
Sukchan Lee
c12e76e32d Update Bearer Request is added in PGW 2018-01-17 13:49:08 +09:00
Sukchan Lee
f1e41050c3 re-factoring Gx/Rx diameter to apply modification 2018-01-17 12:41:57 +09:00
Sukchan Lee
4acc21093b add time information to the d_trace() 2018-01-17 10:09:06 +09:00
James Park
543753d0d1 Merge branch 'master' of https://github.com/acetcom/cellwire 2018-01-16 16:33:46 -08:00
James Park
2bb9446fa2 Fix bug: Wrong assignment of teid 2018-01-16 16:33:06 -08:00
Sukchan Lee
73a352657d print raw packet if S1AP decoder is failed 2018-01-17 08:52:58 +09:00
Sukchan Lee
47407e4855 deactivate dedicated bearer is done 2018-01-16 22:14:59 +09:00
Sukchan Lee
60b59babe0 deactivate bearer context request is added 2018-01-16 20:49:39 +09:00
Sukchan Lee
733f598f24 PCC Rule Remove is added in RAR/RAA 2018-01-16 16:11:30 +09:00
Sukchan Lee
521b18ea2a STR/STA is added 2018-01-15 17:25:14 +09:00
Sukchan Lee
5457e4042e suppport P-CSCF session state maintained mode 2018-01-15 14:57:39 +09:00
Sukchan Lee
4b0565c2e9 refine code 2018-01-15 12:52:05 +09:00
Sukchan Lee
d1303a60e4 refine code 2018-01-15 11:54:22 +09:00
Sukchan Lee
257d58d999 Add Detach Request Log 2018-01-14 23:02:16 +09:00
Sukchan Lee
059a71822c P-CSCF simulator is done(Only Call Initiating). Later we will implement 'Call Terminating' 2018-01-14 22:49:29 +09:00
Sukchan Lee
d77be669a9 update it 2018-01-14 22:02:37 +09:00
Sukchan Lee
c1848e03a1 update it 2018-01-14 21:31:16 +09:00
Sukchan Lee
ee770398c2 RAR/RAA is mostly done 2018-01-14 19:54:50 +09:00
Sukchan Lee
11b4463ce4 continue to implement RAR 2018-01-14 18:15:38 +09:00
Sukchan Lee
4b1c4b598b Gx/Rx interface is changed 2018-01-14 13:51:35 +09:00
Sukchan Lee
2884430c57 remove Specific-Action/Abort-Cause in Gx message 2018-01-14 13:00:41 +09:00
Sukchan Lee
853913b31d fix the bug for initial context setup failure 2018-01-13 23:06:21 +09:00
Sukchan Lee
8c3d4ca0de core_free -> CORE_FREE. We need to know which function raise this
exception
2018-01-13 22:03:30 +09:00
Sukchan Lee
63562dd63a add log message 2018-01-13 21:19:43 +09:00
Sukchan Lee
4417578210 RS/RA bug is fixed.
RA dst IP address is dervied from RA's src IP address
RA prefix address is used subnet address instead of UE IPv6 address
2018-01-13 14:15:00 +09:00
Sukchan Lee
694c39c69e fix the bug related UE context release request(transport error) 2018-01-12 08:54:58 +09:00
Sukchan Lee
9675c3bf8c initiate GTP delete session request if EPC received initial context setup failure 2018-01-12 08:32:33 +09:00
Sukchan Lee
8753879a93 Oops! remove unneeded code 2018-01-12 08:29:25 +09:00
Sukchan Lee
f41559c55f fix the bug releated the handler for UE context release request(transport:1) 2018-01-12 08:25:30 +09:00
Sukchan Lee
7e2488035e update .gitignore 2018-01-11 23:25:36 +09:00
Sukchan Lee
b424213768 add ErrorIndication(Proceduer ID : 15, initiating message) decoder 2018-01-11 22:33:36 +09:00
Sukchan Lee
3503fda431 clarify attach/tau/service reject interface 2018-01-11 22:25:35 +09:00
Sukchan Lee
47dc5eec38 change UE context release command/complete interface.
- Before : Based on EMM state, we decided call mme_ue_remove() or not
- After : Explictly, user should set about calling the mme_ue_remove().
2018-01-11 22:12:48 +09:00
Sukchan Lee
1498f6c015 GTP ECHO-REQ/RSP log level chaged to 5 2018-01-11 14:39:12 +09:00
Sukchan Lee
7a771173bc refine log 2018-01-11 14:06:02 +09:00
Sukchan Lee
9ec0867941 log refine for GTP 2018-01-11 13:42:33 +09:00
Sukchan Lee
f360d20f01 PCRF(RAR) message is done 2018-01-10 23:41:56 +09:00
Sukchan Lee
2059341d4f Diameter Gx Code Refine 2018-01-10 22:09:08 +09:00
Sukchan Lee
58f501d397 For IMS, WebUI behavior is changed.
If Flow is not added in PCC_Rule, this PCC_Rule will not be installed in PGW.
In this case, AF function will give the Flow Description.
If Rx(Media-Type) is set to "AUDIO" type, PCC_Rule(QCI=1) will be associated,
And then, the PCC_Rule will be installed in PGW
2018-01-10 21:44:23 +09:00
Sukchan Lee
95aaf2f8f1 AAR is done 2018-01-10 19:56:10 +09:00
Sukchan Lee
e24856eb0e GX RAR/RAA(PGW-PCRF) is added 2018-01-10 16:06:19 +09:00
Sukchan Lee
e7c14242c7 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-01-10 14:15:17 +09:00
Sukchan Lee
0a490cf819 MME/HSS diameter code refine 2018-01-10 14:15:00 +09:00
Sukchan Lee
b25082cb06 PGW/PCRF diameter code refine 2018-01-10 12:45:58 +09:00
James Park
81a957172b Merge branch 'master' of https://github.com/acetcom/cellwire 2018-01-09 18:09:08 -08:00
James Park
a5057c1488 Change the number of cluster 2018-01-09 18:08:33 -08:00
Sukchan Lee
60b82c75e6 fix linux compile error 2018-01-09 14:11:21 +00:00
Sukchan Lee
1f0452d37d add RAR handler in PGW 2018-01-09 23:06:48 +09:00
Sukchan Lee
e9da026495 PCRF RX/GX session association 2018-01-09 22:53:09 +09:00
Sukchan Lee
b99c266533 P-CSCF simulator adds Frame-IP-Address and Frame-IPv6-Prefix.
This is used to test PCRF Rx/Gx dimaeter session assoication
2018-01-09 21:25:52 +09:00
Sukchan Lee
b80b295af4 if eNB initiated UE Context Release Request with Transport Error, MME sends NAS UE Context Release Command with NAS detach cause 2018-01-09 18:02:56 +09:00
Sukchan Lee
a15b60024b ignore delete session in UEContextReleaseComplete
if MME re-started, there is no MME_UE context. In this case, we ignore
delete sessoin process in UEContextReleaseComplete
2018-01-09 17:38:06 +09:00
Sukchan Lee
1a9ba2680b change assert to warning when PGW cannot find subnet 2018-01-09 17:04:10 +09:00
Sukchan Lee
06a4a09d08 gtp code refine 2018-01-09 16:37:05 +09:00
Sukchan Lee
20f45a455e name changes for gtp_connect_to_node to gtp_add_node_with_teid 2018-01-09 15:25:49 +09:00
James Park
2406bf8d19 Fix bug : wrong assigment of gtp length in header 2018-01-08 20:14:59 -08:00
Sukchan Lee
13a06479a9 add hash for associating Gx/Rx interface by
Framed-IP-Address/Framed-IPv6-Address
2018-01-08 22:42:44 +09:00
Sukchan Lee
38e245d467 PCRF session state is added 2018-01-08 21:20:19 +09:00
Sukchan Lee
e4397176cf support pcrf gx session maintained mode 2018-01-08 20:09:13 +09:00
Sukchan Lee
779d5e88d0 PCRF freeDiameter module disunite to Gx module and Rx module 2018-01-08 18:34:51 +09:00
Sukchan Lee
e95dcf192d refine pgw freeDiameter code 2018-01-08 09:54:19 +09:00
Sukchan Lee
69a880b5fe support session state maintained mode in PGW freeDiameter 2018-01-07 21:56:44 +09:00
Sukchan Lee
64268232b1 Session-Id diameter encoder is added 2018-01-07 21:29:53 +09:00
Sukchan Lee
5ca708deab fix the bug for diameter session memory management 2018-01-07 15:26:17 +09:00
Sukchan Lee
7e63ab488d fix the gcc 7.2.0 compile warning 2018-01-06 22:50:56 +09:00
Sukchan Lee
229a56f85d for debugging subnet assert, add packet log in this situation 2018-01-06 14:25:05 +09:00
Sukchan Lee
d2e54482c1 Update S1P ASN for GUMMEIType in InitialUEMessage 2018-01-06 12:36:47 +09:00
Sukchan Lee
5a96013bf8 Merge branch 'master' of https://github.com/acetcom/nextepc 2018-01-06 01:00:15 +00:00
Sukchan Lee
8e8d0c2978 add assert log 2018-01-06 00:59:42 +00:00
Jihoon Brandon Lee
a13f21b115 bugfix on length check of GTP echo 2018-01-05 12:44:43 -07:00
Sukchan Lee
09eceddd97 fix compile error in linux 2018-01-05 15:30:59 +00:00
Sukchan Lee
a630830f0c P-CSCF simualtor is mostly done 2018-01-06 00:23:26 +09:00
Sukchan Lee
cd45d6d2c5 remove AA-Request/Answer in PGW. All P-CSCF stuff is moving to testrx 2018-01-05 23:59:14 +09:00
Sukchan Lee
f717eeb3ae P-CSCF diameter module is added 2018-01-05 23:49:55 +09:00
Sukchan Lee
9e8ced5835 Apply new freeDiameter configuration to all other daemon(HSS, PGW, PCRF) 2018-01-05 23:31:30 +09:00
Sukchan Lee
f945b483e8 MME freeDiameter configuration is done 2018-01-05 23:03:41 +09:00
Sukchan Lee
b166adf3bd fix the memory leak in the fd_config 2018-01-05 22:46:02 +09:00
Sukchan Lee
9cca50b7c7 missing files 2018-01-05 17:01:28 +09:00
Sukchan Lee
add2145851 freeDiameter Config Re-factoring!
For P-CSCF simulation, it is not good if freeDiameter configuartion is
needed. As such, we merged this configuration is in the nextepc
configuration.
2018-01-05 16:25:02 +09:00
Sukchan Lee
65e1a8dbac fix the linux compile warning 2018-01-04 13:10:06 +00:00
Sukchan Lee
b0b7e9f167 add missing files 2018-01-04 22:08:32 +09:00
Sukchan Lee
9d14f5e89d fix the bug the unlimited loop.
if the system is not supported SCTP, mme daemon is to be unlimited loop.
2018-01-04 22:03:59 +09:00
Sukchan Lee
9675c47a10 improve testrx code 2018-01-04 21:22:21 +09:00
Sukchan Lee
627077247c Diameter Rx Test Simualtor is initially implemented. 2018-01-04 20:52:19 +09:00
Sukchan Lee
b8ef9e9e2a Header Refactoring 2018-01-04 20:38:22 +09:00
Sukchan Lee
fe1c368577 move 3gpp_test to core library 2018-01-04 18:02:56 +09:00
Sukchan Lee
1a3f5cf86e add AA Request/Answer Sample code 2018-01-04 12:57:00 +09:00
Sukchan Lee
560204ab46 Router Advertisement Destination IP address changes
from ff::1 to UE IP Address(e.g. cafe::2)
2018-01-04 08:51:07 +09:00
Sukchan Lee
e4bec187fd add Diameter Rx Interface (PCRF - P-CSCF) 2018-01-03 21:45:14 +09:00
Sukchan Lee
9544a79c2c P-CSCF IP address configuration is added in PGW 2018-01-03 15:29:48 +09:00
Sukchan Lee
81be4cca66 PGW dimaeter IP address is changed from 127.0.0.1 to 127.0.0.2
127.0.0.1:3868 could be used by other software. So, we will change the
IP address.
2018-01-03 09:28:23 +09:00
Sukchan Lee
4501a76d96 UE Time Zone is added in Create Session Request(GTP) and CCR(Gx)
I'm not sure where this value should be configured.
At this point, MME estimate UE Time Zone from MME's system.
From this, MME generates UE TIme Zone for Create Session Request.
PGW is just forward this value to the PCRF using CCR(Gx) Message.
2018-01-02 22:14:28 +09:00
Sukchan Lee
408ce293de if initial context setup failure is received, MME_UE context is deleted. 2018-01-02 18:30:17 +09:00
Sukchan Lee
18859c1203 if TAI list is not properly configured, MME sends Attach Reject or TAU
Rejct message.

Attach/TAU Reject contents
 - S1ap_CauseNas_unspecified
 - EMM_CAUSE_TRACKING_AREA_NOT_ALLOWED
 - ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED if session is created.
2018-01-02 18:18:45 +09:00
Sukchan Lee
f40159ea2a relase 0.3.1 2017-12-31 22:20:39 +00:00
Sukchan Lee
8081ea3044 fix the bug 2017-12-20 13:16:16 +09:00
Sukchan Lee
c81e2beee6 fix the error for SCTP Kernel Extension on Mac OS X 10.11(El Capital) 2017-12-19 20:19:50 +09:00
Sukchan Lee
a864b36f44 Default APN is added 2017-12-19 17:05:54 +09:00
Sukchan Lee
0557be8ffd Merge branch 'master' of https://github.com/acetcom/nextepc 2017-12-18 20:57:47 +09:00
Sukchan Lee
7d3ec80f5d YAML version check is set to 0.1.4 2017-12-18 11:54:57 +00:00
Sukchan Lee
7a293e8d3a update manual 2017-12-18 20:47:01 +09:00
Sukchan Lee
72c9ae5d56 Merge branch 'ipv6' 2017-12-18 11:16:27 +00:00
Sukchan Lee
f71b2502ad update changelog 2017-12-18 11:15:41 +00:00
2702 changed files with 262439 additions and 240075 deletions

57
.gitignore vendored
View File

@@ -5,37 +5,59 @@
*.la
*.conf
.deps
.dirstamp
.libs
# generated files
lib/freeDiameter-*/build-aux/*
lib/freeDiameter-*/config.status
lib/freeDiameter-*/m4/*.m4
lib/freeDiameter-*/!m4/ax_*.m4
lib/freeDiameter-*/libfdcore/fdd.tab.[chy]
lib/freeDiameter-*/libfdcore/lex.fdd.[cl]
lib/freeDiameter-*/include/freeDiameter/version.h
lib/freeDiameter-*/include/freeDiameter/config.h.in
lib/freeDiameter-*/include/freeDiameter/config.h.in*
lib/freeDiameter-*/include/freeDiameter/config.h
lib/freeDiameter-*/include/freeDiameter/freeDiameter-host.h
lib/core/include/core.h
support/systemd/nextepc-*.service
support/logrotate/nextepc
# autotools
stamp-h1
config.h
config.in
config.nice
lib/base/nextepc-config.h
lib/base/nextepc-config.h.in*
config.log
config.status
configure
aclocal.m4
config.status
libtool
autom4te.cache
build-aux
build/*
!build/git-version-gen
!build/osc-upload.sh
!build/dput-upload.sh
Makefile
Makefile.in
m4
m4/*.m4
!m4/ax_*.m4
.tarball-version
.version
# autotest
tests/package.m4
tests/atconfig
tests/testsuite
tests/testsuite.dir/
tests/testsuite.log
# executables
lib/core/test/testcore
test/testepc
tests/testunit
tests/testsimple
tests/testcomplex
tests/testvolte
tests/testcsfb
nextepc-mmed
nextepc-pcrfd
nextepc-pgwd
@@ -43,17 +65,6 @@ nextepc-sgwd
nextepc-epcd
nextepc-hssd
# debian
debian/*.debhelper.log
debian/*.debhelper
debian/*.substvars
debian/tmp
debian/files
debian/autoreconf.before
debian/autoreconf.after
debian/nextepc-core
debian/nextepc-mme
debian/nextepc-sgw
debian/nextepc-pgw
debian/nextepc-pcrf
debian/nextepc-hss
# webui
webui/.next/
webui/node_modules/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "lib/ogslib"]
path = lib/ogslib
url = https://github.com/open5gs/ogslib

View File

@@ -1,8 +1,24 @@
## Process this file with automake to produce Makefile.in
# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
# This file is part of Open5GS.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = build/git-version-gen .version README.md LICENSE
SUBDIRS = lib src support test
SUBDIRS = lib src support tests
bin_PROGRAMS = nextepc-mmed nextepc-hssd nextepc-sgwd nextepc-pgwd nextepc-pcrfd nextepc-epcd
@@ -25,8 +41,9 @@ dist_nextepc_epcd_SOURCES = main.c
nextepc_epcd_LDADD = $(top_srcdir)/src/libepc.la
AM_CPPFLAGS = \
-I$(top_srcdir)/lib/core/include \
-I$(top_srcdir)/src/app \
@OGSCORE_CFLAGS@ \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/src \
$(NULL)
install-data-hook:
@@ -38,14 +55,8 @@ install-data-hook:
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-hssd
$(MKDIR_P) $(DESTDIR)/$(localstatedir)/run/nextepc-epcd
CLEANFILES = -R data debian/test
DISTCLEANFILES = $(DIST_ARCHIVES)
MAINTAINERCLEANFILES = \
configure config.in \
aclocal.m4 m4/ltsugar.m4 m4/libtool.m4 m4/ltversion.m4 \
m4/lt~obsolete.m4 m4/ltoptions.m4 \
build-aux/ar-lib build-aux/config.guess build-aux/depcomp \
build-aux/ltmain.sh build-aux/test-driver build-aux/compile \
build-aux/config.sub build-aux/missing build-aux/install-sh \
Makefile.in
MOSTLYCLEANFILES = core *.stackdump
BUILT_SOURCES = $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
dist-hook:
echo $(VERSION) > $(distdir)/.tarball-version

183
README.md
View File

@@ -1,183 +1,26 @@
What's NextEPC
================
## Documentation
NextEPC is a C-language Open Source implementation of the 3GPP Evolved Packet Core, i.e. the core network of an LTE network.
If you don't understand something about NextEPC, the [https://open5gs.org/nextepc/docs/](https://open5gs.org/nextepc/docs/) is a great place to look for answers.
NextEPC provides the MME (Mobility Management Engine), which terminates the S1 interfaces from the eNodeBs cells in the cellular network, and interfaces via S11 to the SGW as well as via S6a to the HSS.
## Support
NextEPC provides the SGW (Serving Gateway) which is situated between the MME and PGW. It implements the S11 interface to the MME, and the S5 interface to the PGW.
Problem with NextEPC can be filed as [issues](https://github.com/open5gs/nextepc/issues) in this repository.
NextEPC provides the PGW or PDN-GW (Packet Data Network Gateway) element of the EPC, i.e. the gateway between the EPC and the external packet data network, such as the public Internet. It implements the S5 interface towards the S-GW, the SGi interface towards the Internet, and the S7 interface towards the PCRF.
Discussions related to this project are happening on the [nextepc@lists.osmocom.org](mailto:nextepc@lists.osmocom.org) mailing list, please see <https://lists.osmocom.org/mailman/listinfo/nextepc> for subscription options and the list archive.
NextEPC provides the HSS (Home Subscriber Server) element of the EPC, i.e. the central database of mobile network subscribers, with their IMSI, MSISDN, cryptographic key materials, service subscription information, etc. It implements the S6a interface towards the MME using the DIAMETER protocol.
Voice and text chat available in NextEPC's [Discord](https://discordapp.com/) workspace. Use [this link](https://discord.gg/GreNkuc) to get started.
NextEPC contains the PCRF (Policy and Charging Rules Function), which controls the service quality (QoS) of individual connections and how to account/charge related traffic. It implements the Gx interface towards the PGW using the DIAMETER protocol.
## Contributing
Installation
============
NextEPC is a pure/classic FOSS project, open to contributions from anyone.
This post will guide you on how to get installed **NextEPC** with your environment. To date, NextEPC has been tested on GNU/Linux distributions(Debian, Ubuntu, CentOS, Fedora, OpenSUSE), FreeBSD, and Mac OS X.
[Pull requests](https://github.com/open5gs/nextepc/pulls) are always welcome, and I appreciates any help the community can give to help make NextEPC better.
Do you want to be a committer? Please [send me an email](mailto:acetcom@gmail.com). You will be added as a committer to this project. However, if someone consistently causes difficulties with these source repositories due to poor behavior or other serious problems then commit access may be revoked.
## License
## Ubuntu
NextEPC source files are made available under the terms of the GNU Affero General Public License (GNU AGPLv3).
To get the latest Ubuntu version, please visit the official Ubuntu website: [https://www.ubuntu.com/download/](https://www.ubuntu.com/download/).
* ### Install with a Package Manager
The Nextepc package is available on the recent versions of Ubuntu.
```bash
sudo add-apt-repository ppa:acetcom/nextepc
sudo apt-get update
sudo apt-get install nextepc
```
This will create a virtual network interface named as *pgwtun*. It is automatically removed by uninstalling NextEPC.
```markdown
ifconfig pgwtun
pgwtun Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:45.45.0.1 P-t-P:45.45.0.1 Mask:255.255.0.0
inet6 addr: fe80::50f6:182c:5aa3:16bb/64 Scope:Link
inet6 addr: cafe::1/64 Scope:Global
...
```
* ### Uninstall NextEPC
```bash
sudo apt-get purge nextepc-core
```
You may need to remove manually /var/log/nextepc unless it is empty.
```bash
sudo rm -Rf /var/log/nextepc
```
## Debian, CentOS, Fedora, OpenSUSE, FreeBSD, and Mac OS X
For these OS, you should build NextEPC from the code. First clone this [repository](https://github.com/acetcom/nextepc.git) and then follow instructions described in the [documentation](http://nextepc.org/docs/).
* ### [FreeBSD](http://nextepc.org/docs/build/1-freebsd)
* ### [Mac OS X](http://nextepc.org/docs/build/2-macosx)
* ### [CentOS](http://nextepc.org/docs/build/3-centos)
* ### [Fedora](http://nextepc.org/docs/build/4-fedora)
* ### [Ubuntu](http://nextepc.org/docs/build/5-ubuntu)
Configuraiton
=============
In LTE, there are tons of configurable parameters. This page will guide you to set essential parameters up. The configuration consists of two parts: IP network connectivity and LTE network settings.
## 1. IP Connectivity between Network Entities
The minimum requirement of having IP connectvity is to add 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 or cafe::0/64. If you have a [NAT](https://en.wikipedia.org/wiki/Network_address_translation) 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 these IP addresses, 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:
```bash
sudo ip route add 45.45.0.0/16 via <PGW IP address>
sudo ip route add cafe::0/64 via <PGW IP address>
```
## 2. LTE Network Settings
By default, LTE PLMN and TAC are set as shown in the following:
```yaml
mme:
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
```
The LTE EnodeBs need to be set to use the same values of PLMN and TAC in NextEPC. If you want to change them, please modifiy in `/etc/nextepc/mme.conf`.
After changing conf files, please restart NextEPC daemons.
```bash
systemctl restart nextepc-mmed
```
Web UI
==================
NextEPC has a number of configuration files corresponding to LTE network entities, which are in [YAML](http://yaml.org/) format. The LTE user subcription information of NextEPC is stored and maintained by [Mongo DB](https://www.mongodb.com/). Configuration files, located in `etc/nextepc/*.conf` can be easily modified using a general text editor such as [vi](http://www.vim.org/) or [emacs](https://www.gnu.org/s/emacs/), while managing the subscriber information requires a [Mongo DB client](https://docs.mongodb.com/ecosystem/tools/).
NextEPC provides an alternative management interface for customers to manage their subscriber information in an easy way, that is **Web User Interface**. The following shows how to install the Web UI of NextEPC.
## 1. Install Node.js and NPM
To get the latest [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/), please visit the official Node.js website:
[https://nodesjs.org/en/download/](https://nodesjs.org/en/download/).
Or, you can install [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) if you're using [Ubuntu](https://www.ubuntu.com):
```bash
sudo apt-get -y install curl gnupg
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get -y install nodejs
```
## 2. Obtain the source code
```bash
git clone https://github.com/acetcom/nextepc
```
## 3. Install the dependencies to build the code
```bash
cd nextepc/webui
npm install
```
## 4. Build
```bash
npm run build
```
## 5. Running
```bash
npm run start
```
Now the web server is running on _http://localhost:3000_.
## 6. Login with the default account
Open _http://localhost:3000_. Login with **admin**.
* Username : admin
* Password : 1423
Please change the password in _Account_ Menu.
## 7. Register a subscriber
Using Web UI, you can add a subscriber without a Mongo DB client.
* Go to Subscriber Menu.
* Click `+` Button to add a new subscriber.
* Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
* Click `SAVE` Button
This addition affects immediately NextEPC without restaring any daemon.
When you contribute code for NextEPC, the same license applies.

View File

@@ -1,108 +0,0 @@
dnl
dnl CORE_SUBST(varname)
dnl
dnl Adds variable with it's value into Makefile, e.g.:
dnl CC = gcc
dnl
AC_DEFUN([CORE_SUBST],[
CORE_VAR_SUBST="$CORE_VAR_SUBST $1"
])
dnl
dnl CORE_SUBST_OLD(varname)
dnl
dnl Same as CORE_SUBST() but also substitutes all @VARNAME@
dnl instances in every file passed to AC_OUTPUT()
dnl
AC_DEFUN([CORE_SUBST_OLD],[
CORE_SUBST($1)
AC_SUBST($1)
])
dnl
dnl CORE_CONFIG_NICE(filename)
dnl
dnl Generates the config.nice file
dnl
AC_DEFUN([CORE_CONFIG_NICE],[
AC_REQUIRE([AC_PROG_EGREP])
AC_REQUIRE([LT_AC_PROG_SED])
CORE_SUBST_OLD(EGREP)
CORE_SUBST_OLD(SED)
test -f $1 && mv $1 $1.old
rm -f $1.old
cat >$1<<EOF
#! /bin/sh
#
# Created by configure
EOF
for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS EXTRA_LDFLAGS_PROGRAM LIBS CC CXX; do
eval val=\$$var
if test -n "$val"; then
echo "$var='$val' \\" >> $1
fi
done
echo "'[$]0' \\" >> $1
if test `expr -- [$]0 : "'.*"` = 0; then
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'"
else
CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0"
fi
for arg in $ac_configure_args; do
if test `expr -- $arg : "'.*"` = 0; then
if test `expr -- $arg : "--.*"` = 0; then
break;
fi
echo "'[$]arg' \\" >> $1
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '[$]arg'"
else
if test `expr -- $arg : "'--.*"` = 0; then
break;
fi
echo "[$]arg \\" >> $1
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS [$]arg"
fi
done
echo '"[$]@"' >> $1
chmod +x $1
CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS"
CORE_SUBST_OLD(CONFIGURE_COMMAND)
CORE_SUBST_OLD(CONFIGURE_OPTIONS)
])
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
# adl_RECURSIVE_EVAL(VALUE, RESULT)
# =================================
# Interpolate the VALUE in loop until it doesn't change,
# and set the result to $RESULT.
# WARNING: It's easy to get an infinite loop with some unsane input.
# For example ${datadir} becomes ${datarootdir}, and then ${prefix}/share, and
# finally ${prefix} is replaced by the prefix.
AC_DEFUN([adl_RECURSIVE_EVAL],
[_lcl_receval="$1"
$2=`(test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
_lcl_receval_old=''
while test "[$]_lcl_receval_old" != "[$]_lcl_receval"; do
_lcl_receval_old="[$]_lcl_receval"
eval _lcl_receval="\"[$]_lcl_receval\""
done
echo "[$]_lcl_receval")`])

69
build/dput-upload.sh Executable file
View File

@@ -0,0 +1,69 @@
#!/bin/sh
for arg in "$@"; do
if [ "$arg" = "-h" ]; then
echo "Usage: ./build/dput-upload.sh [PROJECT]"
echo ""
echo " PROJECT: snapshot(=Default), release"
echo ""
echo " This script is used to upload a source package to OBS(OpenSUSE Build Service)."
echo ""
echo " This script must be called from the base directory of the repository, and"
echo " requires utilites from these packages: git-buildpackage dput git"
echo ""
exit
fi
done
if [ ! -x /usr/bin/dpkg-parsechangelog ]; then
echo "Missing the dpkg-parsechangelog utility from the dpkg-dev package"
exit 1
fi
if [ ! -f debian/changelog ]; then
echo "This script must be called from the base directory of the package"
exit 1
fi
if [ ! -d .git ]; then
echo "This script only works from within a repository"
exit 1
fi
if [ ! -x /usr/bin/gbp ]; then
echo "Missing git-buildpackage"
exit 1
fi
PACKAGE=$(dpkg-parsechangelog | sed -n 's/^Source: //p')
DT="$(date +%Y%m%d)+git$(git rev-parse --short HEAD)"
TOP=$(pwd)
PROJECT=ppa:open5gs/${1-snapshot}
DEB_SRC=$TOP/build/deb-src
DEB_DIR=$DEB_SRC/$PACKAGE
build_package() {
if [ ! -d $DEB_DIR ]; then
mkdir -p $DEB_DIR
fi
./build/git-version-gen . > .tarball-version 2>/dev/null
gbp buildpackage -S -d \
--git-ignore-branch --git-ignore-new "--git-export-dir=$DEB_DIR" \
--git-postexport='cp $GBP_GIT_DIR/../.tarball-version $GBP_TMP_DIR/'
rm -f .tarball-version
cd $DEB_DIR
dput $PROJECT *_source.changes
rm "$DEB_DIR/"*
rmdir "$DEB_DIR/"
rmdir "$DEB_SRC/"
cd $TOP
}
build_package
echo "${1-snapshot} versions of $DT"

227
build/git-version-gen Executable file
View File

@@ -0,0 +1,227 @@
#!/bin/sh
# Print a version string.
scriptversion=2017-09-13.06; # UTC
# Copyright (C) 2007-2017 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/.
# It may be run two ways:
# - from a git repository in which the "git describe" command below
# produces useful output (thus requiring at least one signed tag)
# - from a non-git-repo directory containing a .tarball-version file, which
# presumes this script is invoked like "./git-version-gen .tarball-version".
# In order to use intra-version strings in your project, you will need two
# separate generated version string files:
#
# .tarball-version - present only in a distribution tarball, and not in
# a checked-out repository. Created with contents that were learned at
# the last time autoconf was run, and used by git-version-gen. Must not
# be present in either $(srcdir) or $(builddir) for git-version-gen to
# give accurate answers during normal development with a checked out tree,
# but must be present in a tarball when there is no version control system.
# Therefore, it cannot be used in any dependencies. GNUmakefile has
# hooks to force a reconfigure at distribution time to get the value
# correct, without penalizing normal development with extra reconfigures.
#
# .version - present in a checked-out repository and in a distribution
# tarball. Usable in dependencies, particularly for files that don't
# want to depend on config.h but do want to track version changes.
# Delete this file prior to any autoconf run where you want to rebuild
# files to pick up a version string change; and leave it stale to
# minimize rebuild time after unrelated changes to configure sources.
#
# As with any generated file in a VC'd directory, you should add
# /.version to .gitignore, so that you don't accidentally commit it.
# .tarball-version is never generated in a VC'd directory, so needn't
# be listed there.
#
# Use the following line in your configure.ac, so that $(VERSION) will
# automatically be up-to-date each time configure is run (and note that
# since configure.ac no longer includes a version string, Makefile rules
# should not depend on configure.ac for version updates).
#
# AC_INIT([GNU project],
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
# [bug-project@example])
#
# Then use the following lines in your Makefile.am, so that .version
# will be present for dependencies, and so that .version and
# .tarball-version will exist in distribution tarballs.
#
# EXTRA_DIST = $(top_srcdir)/.version
# BUILT_SOURCES = $(top_srcdir)/.version
# $(top_srcdir)/.version:
# echo $(VERSION) > $@-t && mv $@-t $@
# dist-hook:
# echo $(VERSION) > $(distdir)/.tarball-version
me=$0
version="git-version-gen $scriptversion
Copyright 2011 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING."
usage="\
Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
Print a version string.
Options:
--prefix PREFIX prefix of git tags (default 'v')
--fallback VERSION
fallback version to use if \"git --version\" fails
--help display this help and exit
--version output version information and exit
Running without arguments will suffice in most cases."
prefix=v
fallback=
while test $# -gt 0; do
case $1 in
--help) echo "$usage"; exit 0;;
--version) echo "$version"; exit 0;;
--prefix) shift; prefix=${1?};;
--fallback) shift; fallback=${1?};;
-*)
echo "$0: Unknown option '$1'." >&2
echo "$0: Try '--help' for more information." >&2
exit 1;;
*)
if test "x$tarball_version_file" = x; then
tarball_version_file="$1"
elif test "x$tag_sed_script" = x; then
tag_sed_script="$1"
else
echo "$0: extra non-option argument '$1'." >&2
exit 1
fi;;
esac
shift
done
if test "x$tarball_version_file" = x; then
echo "$usage"
exit 1
fi
tag_sed_script="${tag_sed_script:-s/x/x/}"
nl='
'
# Avoid meddling by environment variable of the same name.
v=
v_from_git=
# First see if there is a tarball-only version file.
# then try "git describe", then default.
if test -f $tarball_version_file
then
v=`cat $tarball_version_file` || v=
case $v in
*$nl*) v= ;; # reject multi-line output
[0-9]*) ;;
*) v= ;;
esac
test "x$v" = x \
&& echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
fi
if test "x$v" != x
then
: # use $v
# Otherwise, if there is at least one git commit involving the working
# directory, and "git describe" output looks sensible, use that to
# derive a version string.
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
&& v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in
$prefix[0-9]*) ;;
*) (exit 1) ;;
esac
then
# Is this a new git that lists number of commits since the last
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
# Older: v6.10-g0f8faeb
vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v
case $vprefix in
*-*) : git describe is probably okay three part flavor ;;
*)
: git describe is older two part flavor
# Recreate the number of commits and rewrite such that the
# result is the same as if we were using the newer version
# of git describe.
vtag=`echo "$v" | sed 's/-.*//'`
commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
|| { commit_list=failed;
echo "$0: WARNING: git rev-list failed" 1>&2; }
numcommits=`echo "$commit_list" | wc -l`
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
test "$commit_list" = failed && v=UNKNOWN
;;
esac
# Change the penultimate "-" to ".", for version-comparing tools.
# Remove the "g" to save a byte.
v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`;
v_from_git=1
elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
v=UNKNOWN
else
v=$fallback
fi
v=`echo "$v" |sed "s/^$prefix//"`
# Test whether to append the "-dirty" suffix only if the version
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
# or if it came from .tarball-version.
if test "x$v_from_git" != x; then
# Don't declare a version "dirty" merely because a timestamp has changed.
git update-index --refresh > /dev/null 2>&1
dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
case "$dirty" in
'') ;;
*) # Append the suffix only if there isn't one already.
case $v in
*-dirty) ;;
*) v="$v-dirty" ;;
esac ;;
esac
fi
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
printf %s "$v"
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

91
build/osc-upload.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/bin/sh
for arg in "$@"; do
if [ "$arg" = "-h" ]; then
echo "Usage: ./build/osc-upload.sh [PROJECT]"
echo ""
echo " PROJECT: snapshot(=Default), release"
echo ""
echo " This script is used to upload a source package to OBS(OpenSUSE Build Service)."
echo ""
echo " This script must be called from the base directory of the repository, and"
echo " requires utilites from these packages: git-buildpackage osc git"
echo ""
exit
fi
done
if [ ! -x /usr/bin/dpkg-parsechangelog ]; then
echo "Missing the dpkg-parsechangelog utility from the dpkg-dev package"
exit 1
fi
if [ ! -f debian/changelog ]; then
echo "This script must be called from the base directory of the package"
exit 1
fi
if [ ! -d .git ]; then
echo "This script only works from within a repository"
exit 1
fi
if [ ! -x /usr/bin/gbp ]; then
echo "Missing git-buildpackage"
exit 1
fi
PACKAGE=$(dpkg-parsechangelog | sed -n 's/^Source: //p')
DT="$(date +%Y%m%d)+git$(git rev-parse --short HEAD)"
TOP=$(pwd)
OGS_REPO=$TOP/build/obs-repo
PROJECT=home:acetcom:open5gs:${1-snapshot}
OBS_DIR=$OGS_REPO/$PROJECT/$PACKAGE
prepare() {
if [ -d $OBS_DIR ]; then
(cd $OBS_DIR && osc up)
else
mkdir -p $OGS_REPO
(cd $OGS_REPO && osc co $PROJECT $PACKAGE)
fi
}
DEB_SRC=$TOP/build/deb-src
DEB_DIR=$DEB_SRC/$PACKAGE
build_package() {
if [ ! -d $DEB_DIR ]; then
mkdir -p $DEB_DIR
fi
./build/git-version-gen . > .tarball-version 2>/dev/null
gbp buildpackage -S --no-sign -d \
--git-ignore-branch --git-ignore-new "--git-export-dir=$DEB_DIR" \
--git-postexport='cp $GBP_GIT_DIR/../.tarball-version $GBP_TMP_DIR/'
rm -f .tarball-version
cd $OBS_DIR
file=$(cd "$DEB_DIR/" ; ls ./*.dsc)
echo $file
if [ -e "$file" ] ; then
osc rm ./* || true
fi
mv "$DEB_DIR/"*.dsc .
mv "$DEB_DIR/"*.tar* .
osc add ./*
rm "$DEB_DIR/"*
rmdir "$DEB_DIR/"
rmdir "$DEB_SRC/"
cd $TOP
}
prepare
build_package
(cd $OBS_DIR && osc ci -m "Snapshot versions of $DT")

View File

@@ -1,47 +1,51 @@
dnl Process this file with autoconf to produce a configure script.
dnl
dnl This file is free software; as a special exception the author gives
dnl unlimited permission to copy and/or distribute it, with or without
dnl modifications, as long as this notice is preserved.
dnl
dnl This program is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_INIT([NEXTEPC], [0.3.0], [acetcom@gmail.com])
# Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
AC_SUBST(LIBVERSION)
LIBVERSION=1:0:0
# This file is part of Open5GS.
CORE_CONFIG_NICE(config.nice)
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
dnl Must come before AM_INIT_AUTOMAKE.
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects])
AC_INIT([NextEPC],
m4_esyscmd([build/git-version-gen .tarball-version]),
[acetcom@gmail.com])
# Where to generate output; srcdir location.
AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_AUX_DIR([build])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_TESTDIR(tests)
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AC_CONFIG_HEADERS([lib/base/nextepc-config.h])
AC_CONFIG_SRCDIR([main.c])
LO_DEV="lo0"
case $host in
*linux*)
OSDIR="unix"
OSCPPFLAGS="-DLINUX=1"
IPFW_CPPFLAGS="-DNEED_SYSCTLBYNAME -DNEED_SIN_LEN"
LO_DEV="lo"
;;
*-apple-darwin*)
OSDIR="unix"
OSCPPFLAGS="-DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK"
;;
*)
OSDIR="unix"
;;
esac
AC_SUBST(OSCPPFLAGS)
AC_SUBST(OSDIR)
AC_SUBST(IPFW_CPPFLAGS)
AC_SUBST(LO_DEV)
@@ -66,16 +70,14 @@ AH_VERBATIM([_REENTRANT],
#endif
])
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl Checks CC and freinds
AC_PROG_MAKE_SET
AC_PROG_MKDIR_P
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AM_PROG_AR
LT_INIT([pic-only disable-static])
LT_INIT
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test "x$PKG_CONFIG" = "xno"; then
@@ -86,172 +88,56 @@ PKG_PROG_PKG_CONFIG([0.20])
dnl Checks for compile flag
AX_CHECK_COMPILE_FLAG([-Wno-unused-result], [CFLAGS="$CFLAGS -Wno-unused-result"])
dnl Checks for pointer size
AC_CHECK_SIZEOF(void*, 4)
dnl Checks for integer size
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(long long, 8)
if test "$ac_cv_sizeof_short" = "2"; then
short_value=short
fi
if test "$ac_cv_sizeof_int" = "4"; then
int_value=int
fi
# Now we need to find what c_int64_t (sizeof == 8) will be.
# The first match is our preference.
if test "$ac_cv_sizeof_int" = "8"; then
int64_literal='#define C_INT64_C(val) (val)'
uint64_literal='#define C_UINT64_C(val) (val##U)'
int64_t_fmt='#define C_INT64_T_FMT "d"'
uint64_t_fmt='#define C_UINT64_T_FMT "u"'
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "x"'
int64_value="int"
long_value=int
int64_strfn="strtoi"
elif test "$ac_cv_sizeof_long" = "8"; then
int64_literal='#define C_INT64_C(val) (val##L)'
uint64_literal='#define C_UINT64_C(val) (val##UL)'
int64_t_fmt='#define C_INT64_T_FMT "ld"'
uint64_t_fmt='#define C_UINT64_T_FMT "lu"'
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "lx"'
int64_value="long"
long_value=long
int64_strfn="strtol"
elif test "$ac_cv_sizeof_long_long" = "8"; then
int64_literal='#define C_INT64_C(val) (val##LL)'
uint64_literal='#define C_UINT64_C(val) (val##ULL)'
# Linux, Solaris, FreeBSD all support ll with printf.
# BSD 4.4 originated 'q'. Solaris is more popular and
# doesn't support 'q'. Solaris wins. Exceptions can
# go to the OS-dependent section.
int64_t_fmt='#define C_INT64_T_FMT "lld"'
uint64_t_fmt='#define C_UINT64_T_FMT "llu"'
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "llx"'
int64_value="long long"
long_value="long long"
int64_strfn="strtoll"
elif test "$ac_cv_sizeof_longlong" = "8"; then
int64_literal='#define C_INT64_C(val) (val##LL)'
uint64_literal='#define C_UINT64_C(val) (val##ULL)'
int64_t_fmt='#define C_INT64_T_FMT "qd"'
uint64_t_fmt='#define C_UINT64_T_FMT "qu"'
uint64_t_hex_fmt='#define C_UINT64_T_HEX_FMT "qx"'
int64_value="__int64"
long_value="__int64"
int64_strfn="strtoll"
else
# int64_literal may be overriden if your compiler thinks you have
# a 64-bit value but CORE does not agree.
AC_ERROR([could not detect a 64-bit integer type])
fi
AC_SUBST(short_value)
AC_SUBST(int_value)
AC_SUBST(long_value)
AC_SUBST(int64_value)
AC_SUBST(int64_t_fmt)
AC_SUBST(uint64_t_fmt)
AC_SUBST(uint64_t_hex_fmt)
AC_SUBST(int64_literal)
AC_SUBST(uint64_literal)
AC_CHECK_SIZEOF(pid_t, 8)
if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
pid_t_fmt='#define C_PID_T_FMT "hd"'
elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then
pid_t_fmt='#define C_PID_T_FMT "d"'
elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then
pid_t_fmt='#define C_PID_T_FMT "ld"'
elif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then
pid_t_fmt='#define C_PID_T_FMT APR_INT64_T_FMT'
else
pid_t_fmt='#error Can not determine the proper size for pid_t'
fi
case $host in
*-solaris*)
if test "$ac_cv_sizeof_long" = "8"; then
pid_t_fmt='#define C_PID_T_FMT "d"'
else
pid_t_fmt='#define C_PID_T_FMT "ld"'
fi
;;
esac
AC_SUBST(pid_t_fmt)
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\1/'`],
[Major version of this package])
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\2/'`],
[Minor version of this package])
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL],
[`echo $PACKAGE_VERSION | $SED 's/^\([[^\.]]\+\)\.\([[^\.]]\+\)\.\([[^\.]]\+\).*/\3/'`],
[Patch version of this package])
##################################
#### Checks for Directories. #####
##################################
adl_RECURSIVE_EVAL(["${bindir}"], [BIN_DIR])
adl_RECURSIVE_EVAL(["${libdir}"], [LIB_DIR])
adl_RECURSIVE_EVAL(["${sysconfdir}"], [SYSCONF_DIR])
adl_RECURSIVE_EVAL(["${localstatedir}"], [LOCALSTATE_DIR])
AX_RECURSIVE_EVAL(["${bindir}"], [BIN_DIR])
AX_RECURSIVE_EVAL(["${libdir}"], [LIB_DIR])
AX_RECURSIVE_EVAL(["${sysconfdir}"], [SYSCONF_DIR])
AX_RECURSIVE_EVAL(["${localstatedir}"], [LOCALSTATE_DIR])
AC_SUBST(BIN_DIR)
AC_SUBST(LIB_DIR)
AC_SUBST(SYSCONF_DIR)
AC_SUBST(LOCALSTATE_DIR)
##################################
#### Checks for header files. ####
##################################
#######################################
#### Checks for library functions. ####
#######################################
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(gethostname, nsl)
AC_SEARCH_LIBS(socket, socket)
AC_SEARCH_LIBS(pthread_barrier_wait, pthread)
AC_SEARCH_LIBS(gnutls_global_set_log_level, gnutls)
AC_CHECK_FILE([lib/ogslib/configure.ac], [have_srclib=yes], [have_srclib=no])
if test x$have_srclib == xyes; then
AC_CONFIG_SUBDIRS([lib/ogslib])
AC_SUBST(OGSCORE_CFLAGS, '-I$(top_srcdir)/lib/ogslib/src')
AC_SUBST(OGSCORE_LIBS, '$(top_srcdir)/lib/ogslib/src/core/libogscore-1.0.la')
AC_SUBST(OGSCRYPT_CFLAGS, '-I$(top_srcdir)/lib/ogslib/src')
AC_SUBST(OGSCRYPT_LIBS, '$(top_srcdir)/lib/ogslib/src/crypt/libogscrypt-1.0.la')
else
PKG_CHECK_MODULES(OGSCORE, ogscore-1.0 >= 1.1.0)
PKG_CHECK_MODULES(OGSCRYPT, ogscrypt-1.0 >= 1.1.0)
fi
AM_CONDITIONAL([WITH_SRCLIB], [test x$have_srclib = xyes])
AC_SEARCH_LIBS([sctp_sendmsg], [sctp], [have_sctp=yes], [have_sctp=no])
if test x$have_sctp == xno; then
AC_SEARCH_LIBS([usrsctp_init], [usrsctp], [have_usrsctp=yes], [have_usrsctp=no])
if test x$have_usrsctp == xno; then
AC_MSG_ERROR([You must install the SCTP libraries and development headers to enable SCTP support.])
else
AC_DEFINE(HAVE_USRSCTP, 1,
[Define if your system supports the usrsctp system calls])
fi
fi
AM_CONDITIONAL([WITH_USRSCTP], [test x$have_usrsctp = xyes])
AC_HEADER_STDC
AC_CHECK_HEADERS( \
arpa/inet.h \
ctype.h \
errno.h \
fcntl.h \
ifaddrs.h \
limits.h \
netdb.h \
pthread.h \
regex.h \
semaphore.h \
signal.h \
stdarg.h \
stdio.h \
stdint.h \
stdlib.h \
string.h \
strings.h \
time.h \
unistd.h \
net/if_dl.h \
net/if.h \
netinet/ether.h \
netinet/in.h \
netinet/in_systm.h \
netinet/udp.h \
netinet/tcp.h \
netinet/sctp.h \
usrsctp.h \
sys/ioctl.h \
sys/param.h \
sys/socket.h \
sys/stat.h \
sys/syslimits.h \
sys/types.h \
sys/time.h \
sys/wait.h \
sys/uio.h \
)
AC_CHECK_HEADERS(netinet/ip.h netinet/ip6.h net/route.h,,,[[
@@ -277,144 +163,7 @@ AC_CHECK_HEADERS(netinet/ip_icmp.h netinet/icmp6.h,,,[[
#include <netinet/ip.h>
]])
##########################################
#### Checks for typedefs, structures, ####
#### and compiler characteristics. ####
##########################################
AC_C_BIGENDIAN
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[
#include <sys/types.h>
#include <time.h>])
AC_CHECK_MEMBER(struct sockaddr.sa_len,
AC_DEFINE(HAVE_SA_LEN, 1, [Define this if your stack has sa_len in sockaddr struct.]),,
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <sys/socket.h>])
AC_CHECK_MEMBER(struct sockaddr_in.sin_len,
AC_DEFINE(HAVE_SIN_LEN, 1, [Define this if your IPv4 has sin_len in sockaddr_in struct.]),,
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <netinet/in.h>])
AC_CHECK_MEMBER(struct sockaddr_in6.sin6_len,
AC_DEFINE(HAVE_SIN6_LEN, 1, [Define this if your IPv6 has sin6_len in sockaddr_in6 struct.]),,
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <netinet/in.h>])
AC_CHECK_MEMBER(struct sockaddr_conn.sconn_len,
AC_DEFINE(HAVE_SCONN_LEN, 1, [Define this if your userland stack has sconn_len in sockaddr_conn struct.]),,
[#include "usrsctplib/usrsctp.h"])
AC_MSG_CHECKING(for socklen_t)
AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <sys/socket.h>],
[socklen_t x; x = 1; return ((int)x);],
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(int)
AC_DEFINE(socklen_t, int, [Define a type for socklen_t.])])
AC_CHECK_FILE(/dev/random,
AC_DEFINE([HAVE_DEV_RANDOM], [1],
[Define to 1 if you have the /dev/random file.]))
AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
[AC_TRY_RUN([
int main()
{
unsigned long val = 1010, tmp, *mem = &val;
if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
return 1;
tmp = val;
if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
return 1;
if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
return 1;
tmp = 3030;
if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
return 1;
if (__sync_lock_test_and_set(&val, 4040) != 3030)
return 1;
mem = &tmp;
if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
return 1;
__sync_synchronize();
if (mem != &val)
return 1;
return 0;
}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
if test "$ap_cv_atomic_builtins" = "yes"; then
AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
fi
#######################################
#### Checks for library functions. ####
#######################################
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(\
atexit \
gettimeofday \
inet_ntop \
inet_pton \
inet_aton \
memmove \
sigaction \
sigwait \
sigsuspend \
stpcpy \
strcasecmp \
strtoul \
stricmp \
strerror \
writev \
utime \
utimes \
sem_timedwait \
pthread_yield \
sched_yield \
)
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(gethostname, nsl)
AC_SEARCH_LIBS(socket, socket)
AC_SEARCH_LIBS(pthread_barrier_wait, pthread)
AC_SEARCH_LIBS(gnutls_global_set_log_level, gnutls)
AC_SEARCH_LIBS([sctp_sendmsg], [sctp], [have_sctp_lib=yes], [have_sctp_lib=no])
if test x$have_sctp_lib == xno; then
AC_SEARCH_LIBS([usrsctp_init], [usrsctp], [have_usrsctp_lib=yes], [have_usrsctp_lib=no])
if test x$have_usrsctp_lib == xno; then
AC_MSG_ERROR([You must install the SCTP libraries and development headers to enable SCTP support.])
else
AC_DEFINE([USE_USRSCTP], [1], [Define to 1 if you have the usrsctp library.])
fi
fi
AM_CONDITIONAL([USRSCTP], [test x$have_usrsctp_lib = xyes])
PKG_CHECK_MODULES([YAML], yaml-0.1 >= 0.1.6)
PKG_CHECK_MODULES([YAML], yaml-0.1 >= 0.1.4)
PKG_CHECK_MODULES([MONGOC], libmongoc-1.0 >= 1.3.1)
FREEDIAMETER_DIR=freeDiameter-1.2.1
AC_SUBST(FREEDIAMETER_DIR)
@@ -425,12 +174,8 @@ AC_SUBST(FREEDIAMETER_DIR)
AC_CONFIG_SUBDIRS([lib/freeDiameter-1.2.1])
AC_CONFIG_FILES([lib/core/include/core.h])
AC_CONFIG_FILES([lib/core/src/Makefile])
AC_CONFIG_FILES([lib/core/test/Makefile])
AC_CONFIG_FILES([lib/core/Makefile])
AC_CONFIG_FILES([lib/s1ap/asn1c/Makefile])
AC_CONFIG_FILES([lib/s1ap/Makefile])
AC_CONFIG_FILES([lib/base/Makefile])
AC_CONFIG_FILES([lib/asn1c/Makefile])
AC_CONFIG_FILES([lib/nas/Makefile])
AC_CONFIG_FILES([lib/fd/Makefile])
AC_CONFIG_FILES([lib/gtp/Makefile])
@@ -466,21 +211,25 @@ AC_CONFIG_FILES([support/logrotate/Makefile])
AC_CONFIG_FILES([support/newsyslog/nextepc.conf])
AC_CONFIG_FILES([support/newsyslog/Makefile])
AC_CONFIG_FILES([support/Makefile])
AC_CONFIG_FILES([test/Makefile])
AC_CONFIG_FILES([tests/sample.conf])
AC_CONFIG_FILES([tests/sample-simple.conf])
AC_CONFIG_FILES([tests/sample-volte.conf])
AC_CONFIG_FILES([tests/sample-csfb.conf])
AC_CONFIG_FILES([tests/Makefile])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
echo "
NextEPC configuration
--------------------
version : ${PACKAGE_VERSION}
host : ${host}
source code location : ${srcdir}
compiler : ${CC}
compiler flags : ${CFLAGS} ${YAML_CFLAGS} ${MONGOC_CFLAGS}
linker flags : ${LDFLAGS} ${LIBS} ${YAML_LIBS} ${MONGOC_LIBS}
bin directory : ${BIN_DIR}
lib directory : ${LIB_DIR}/nextepc
config directory : ${SYSCONF_DIR}/nextepc
log directory : ${LOCALSTATE_DIR}/log/nextepc
"
AC_MSG_NOTICE([NextEPC configuration:
version: ${PACKAGE_VERSION}
compiler: ${CC}
compiler flags: ${CFLAGS} ${OGSLIB_CFLAGS} ${MONGOC_CFLAGS}
linker flags: ${LDFLAGS} ${LIBS} ${OGSCORE_LIBS} ${OGSCRYPT_LIBS} ${MONGOC_LIBS}
path prefix: ${prefix}
binary file: ${BIN_DIR}/nextepc-epcd
library directory: ${LIB_DIR}/nextepc
configuration prefix: ${SYSCONF_DIR}/nextepc
configuration file: ${SYSCONF_DIR}/nextepc/nextepc.conf
pid file: ${LOCALSTATE_DIR}/run/nextepc.pid
logging file: ${LOCALSTATE_DIR}/log/nextepc.log
])

325
debian/changelog vendored
View File

@@ -1,3 +1,328 @@
nextepc (0.5.0) unstable; urgency=medium
* CSFB Supported
* OGSLib package name changed
-- Sukchan Lee <acetcom@gmail.com> Thu, 11 Jul 2019 22:26:35 +0900
nextepc (0.4.4~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 30 Jun 2019 13:23:15 +0000
nextepc (0.4.4~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 30 Jun 2019 13:21:59 +0000
nextepc (0.4.4) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 30 Jun 2019 12:05:12 +0000
nextepc (0.4.3~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 22 Jun 2019 06:57:10 +0000
nextepc (0.4.3~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 22 Jun 2019 06:55:56 +0000
nextepc (0.4.3) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 22 Jun 2019 03:30:10 +0000
nextepc (0.4.2~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:11:51 +0900
nextepc (0.4.2~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:09:02 +0900
nextepc (0.4.2) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Tue, 28 May 2019 20:04:53 +0900
nextepc (0.4.1~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 09:59:17 +0000
nextepc (0.4.1~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 09:57:44 +0000
nextepc (0.4.1) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 18 May 2019 08:18:59 +0000
nextepc (0.4.0) unstable; urgency=medium
* Integration with OGSLIB
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Apr 2019 14:09:03 +0000
nextepc (0.3.11~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 27 Apr 2019 13:59:08 +0000
nextepc (0.3.11~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 27 Apr 2019 13:57:42 +0000
nextepc (0.3.10~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Fri, 17 Aug 2018 04:28:38 +0000
nextepc (0.3.10~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Fri, 17 Aug 2018 04:21:39 +0000
nextepc (0.3.9~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:40:44 +0000
nextepc (0.3.9~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:39:33 +0000
nextepc (0.3.9~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 03 Jun 2018 01:38:15 +0000
nextepc (0.3.8-1~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 05 May 2018 22:37:45 +0900
nextepc (0.3.8~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 05 May 2018 21:48:55 +0900
nextepc (0.3.8~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 29 Apr 2018 21:47:25 +0900
nextepc (0.3.8~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 29 Apr 2018 21:45:36 +0900
nextepc (0.3.7~artful) artful; urgency=medium
* Buf Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 14 Apr 2018 15:02:05 +0900
nextepc (0.3.7~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 14 Apr 2018 14:59:37 +0900
nextepc (0.3.6~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 21 Mar 2018 08:02:52 +0000
nextepc (0.3.6~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 21 Mar 2018 08:00:12 +0000
nextepc (0.3.5~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Tue, 06 Mar 2018 12:41:53 +0000
nextepc (0.3.5~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Tue, 06 Mar 2018 12:40:07 +0000
nextepc (0.3.4-1~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:16:08 +0000
nextepc (0.3.4-1~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:14:43 +0000
nextepc (0.3.4~xenial) xenial; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 02:09:23 +0000
nextepc (0.3.4~artful) artful; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Thu, 22 Feb 2018 01:33:04 +0000
nextepc (0.3.3-3~artful) artful; urgency=medium
* Support Docker
-- Sukchan Lee <acetcom@gmail.com> Tue, 13 Feb 2018 04:47:43 +0000
nextepc (0.3.3-3~xenial) xenial; urgency=medium
* Support Docker
-- Sukchan Lee <acetcom@gmail.com> Tue, 13 Feb 2018 04:44:47 +0000
nextepc (0.3.3-2~xenial) xenial; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 16:08:14 +0000
nextepc (0.3.3-2~artful) artful; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 16:05:44 +0000
nextepc (0.3.3-1~xenial) xenial; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:39:37 +0000
nextepc (0.3.3-1~artful) artful; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:33:57 +0000
nextepc (0.3.3~artful) artful; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:05:08 +0000
nextepc (0.3.3~xenial) xenial; urgency=medium
* Minor bug fixes
-- Sukchan Lee <acetcom@gmail.com> Sun, 11 Feb 2018 15:00:24 +0000
nextepc (0.3.2~zesty) zesty; urgency=medium
* VoLTE Support
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:06:32 +0000
nextepc (0.3.2~xenial) xenial; urgency=medium
* VoLTE Support
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:03:41 +0000
nextepc (0.3.2~artful) artful; urgency=medium
* VoLTE Support
-- Sukchan Lee <acetcom@gmail.com> Wed, 24 Jan 2018 08:00:24 +0000
nextepc (0.3.1-1~zesty) zesty; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:10:52 +0000
nextepc (0.3.1-1~xenial) xenial; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:09:26 +0000
nextepc (0.3.1-1~artful) artful; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Sun, 31 Dec 2017 22:04:50 +0000
nextepc (0.3-3~zesty) zesty; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:18:26 +0000
nextepc (0.3-3~xenial) xenial; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:16:51 +0000
nextepc (0.3-3~artful) artful; urgency=medium
* IPv6 Support (Linux Only)
* Change Configuration File (JSON -> YAML)
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 10:15:18 +0000
nextepc (0.3-2~artful) artful; urgency=medium
* Fix the bug reboot scenario
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Dec 2017 07:06:52 +0000
nextepc (0.3-1~artful) artful; urgency=medium
* IPv6 Support (Linux Only)

38
debian/control vendored
View File

@@ -4,23 +4,27 @@ Section: net
Priority: optional
Build-Depends: debhelper (>= 9),
autotools-dev,
pkg-config,
git,
dh-autoreconf,
dh-systemd,
pkg-config,
autoconf,
automake,
libtool,
flex,
bison,
libsctp-dev,
libogslib-dev (>= 1.1.0),
libgnutls28-dev,
libgcrypt-dev,
libssl-dev,
libidn11-dev,
libmongoc-dev,
libbson-dev,
libyaml-dev
Standards-Version: 3.9.6
Vcs-Browser: https://github.com/acetcom/nextepc
Vcs-Git: git://github.com/acetcom/nextepc
Homepage: http://nextepc.org/
libsctp-dev,
libyaml-dev,
Standards-Version: 3.9.8
Vcs-Browser: https://github.com/open5gs/nextepc
Vcs-Git: git://github.com/open5gs/nextepc
Homepage: https://open5gs.org/nextepc
Package: nextepc-core
Architecture: any
@@ -68,8 +72,8 @@ Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends},
${misc:Depends},
nextepc-core (= ${binary:Version}),
ifupdown
udev,
nextepc-core (= ${binary:Version})
Description: Open Source based 3GPP EPC PGW (Packet Data Network Gateway)
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
Packet Core, i.e. the core network of an LTE network.
@@ -116,8 +120,7 @@ Description: Open Source based 3GPP EPC HSS (Home Subscriber Server)
Package: nextepc
Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends},
${misc:Depends},
Depends: ${misc:Depends},
mongodb,
nextepc-core (= ${binary:Version}),
nextepc-mme (= ${binary:Version}),
@@ -131,3 +134,14 @@ Description: Open Source based 3GPP EPC (metapackage)
.
This is a metapackage that depends on all the nextepc parts.
(MME, SGW, PGW, HSS, PCRF)
Package: nextepc-dbg
Architecture: any
Multi-Arch: same
Depends: ${misc:Depends},
nextepc (= ${binary:Version})
Description: Debug symbols for NextEPC
NextEPC is a C-language Open Source implementation of the 3GPP Evolved
Packet Core, i.e. the core network of an LTE network.
.
This package contains debug symbols for NextEPC.

View File

@@ -3,5 +3,5 @@ etc/nextepc/freeDiameter/pgw.conf
etc/nextepc/freeDiameter/pgw.cert.pem
etc/nextepc/freeDiameter/pgw.key.pem
etc/nextepc/pgw.conf
support/network/nextepc etc/network/interfaces.d
support/network/99-nextepc.* etc/systemd/network
support/systemd/nextepc-pgwd.service lib/systemd/system

View File

@@ -20,12 +20,18 @@ set -e
case "$1" in
configure)
if ! grep "source-directory" /etc/network/interfaces | grep "/etc/network/interfaces.d" > /dev/null; then
echo "source-directory /etc/network/interfaces.d" >> /etc/network/interfaces
fi
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
ifup pgwtun
fi
if test "x`sysctl -n net.ipv6.conf.all.disable_ipv6`" = x1; then
echo "net.ipv6.conf.all.disable_ipv6=0" > /etc/sysctl.d/30-nextepc.conf
sysctl -p /etc/sysctl.d/30-nextepc.conf
fi
if test "x`systemctl is-enabled systemd-networkd`" = xdisabled; then
systemctl enable systemd-networkd
fi
deb-systemd-invoke restart systemd-networkd
if test -f /etc/sysctl.d/30-nextepc.conf && grep "pgwtun" /proc/net/dev > /dev/null; then
echo "net.ipv6.conf.pgwtun.disable_ipv6=0" > /etc/sysctl.d/30-nextepc.conf
sysctl -p /etc/sysctl.d/30-nextepc.conf
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)

View File

@@ -24,6 +24,7 @@ case "$1" in
if grep "pgwtun" /proc/net/dev > /dev/null; then
ip tuntap del name pgwtun mode tun
fi
rm -f /etc/sysctl.d/30-nextepc.conf
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)

10
debian/rules vendored
View File

@@ -14,9 +14,15 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%:
dh $@ --with autoreconf --with systemd
override_dh_strip:
dh_strip --dbg-package=nextepc-dbg
override_dh_auto_test:
sctp_exclude_list=; \
if ! cat /proc/net/protocols | grep SCTP > /dev/null; then \
sctp_exclude_list="-x testsctp"; \
sctp_exclude_list="-x sctp-test"; \
fi; \
lib/core/test/testcore $$sctp_exclude_list || exit; \
tests/testunit -f ./tests/sample.conf $$sctp_exclude_list || exit; \
#override_dh_makeshlibs:
# dh_makeshlibs -V

76
docker/README.md Normal file
View File

@@ -0,0 +1,76 @@
Docker running example
===========================================
* Build Image
$ docker-compose build
* Development
$ docker-compose run dev
* Runtime
$ docker-compose \
-f docker-compose.yml -f docker-compose.run.yml run run
* Test
$ docker-compose \
-f docker-compose.yml -f docker-compose.test.yml run test
* Test(ubuntu:artful)
$ TAG=artful docker-compose build
$ TAG=artful docker-compose \
-f docker-compose.yml -f docker-compose.test.yml run test
* Development(fedora:latest)
$ DIST=fedora docker-compose build
$ DIST=fedora docker-compose run dev
* Runtime(debian:jessie)
$ DIST=debian TAG=jessie docker-compose build
$ DIST=debian TAG=jessie docker-compose
-f docker-compose.yml -f docker-compose.run.yml run run
* All Test with All Environment
$ ./check.sh
* Run WebUI
$ docker-compose up -d
For OpenSUSE Build Service Release
===========================================
* Build Package
$ ./build-aux/git-version-gen . > .tarball-version
$ dpkg-source -b .
$ rm -f .tarball-version
* Get Release Key
$ wget http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
$ sudo apt-key add Release.key
* Setup Repository
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs-latest.list"
$ sudo apt-get update
For Launchpad Release
===========================================
* Run Docker
$ docker-compose run dev
* Setup Debian Environment
export DEBFULLNAME='Sukchan Lee'
export DEBEMAIL='acetcom@gmail.com'
* Transfer GPG key
$ gpg --export-secret-keys --armor --output private.asc
$ gpg --import private.asc
$ gpg --export > public.asc
$ gpg --import public.asc
* Upload LaunchPad
$ dch -i
$ debuild -S
$ dput ppa:acetcom/nextepc *.source.changes
* Build pckage
$ dpkg-buildpackage

24
docker/build/Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
ARG dist=ubuntu
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-nextepc-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
WORKDIR /root
COPY setup.sh /root
ARG USER=open5gs
ARG REPO=nextepc
ARG BRANCH=master
RUN git clone --recursive https://github.com/$USER/$REPO
ADD https://api.github.com/repos/$USER/$REPO/git/refs/heads/$BRANCH /root/nextepc-ver.json
RUN cd nextepc && \
git fetch && git checkout -f -B master origin/master && \
autoreconf -f -i && \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var && \
make -j `nproc` install

10
docker/build/setup.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
ip tuntap add name pgwtun mode tun
fi
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
ip addr add 45.45.0.1/16 dev pgwtun
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
ip addr add cafe::1/64 dev pgwtun
ip link set pgwtun up

View File

@@ -0,0 +1,24 @@
ARG dist=centos
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN yum -y install \
autoconf \
libtool \
gcc \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
iproute
RUN yum -y install epel-release && \
yum -y install mongo-c-driver-devel

View File

@@ -0,0 +1,22 @@
ARG dist=centos
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-nextepc-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN yum -y install \
cscope \
vim \
sudo \
iputils \
net-tools
COPY setup.sh /root
ARG username=acetcom
RUN useradd -m --uid=1000 ${username} && \
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
chmod 0440 /etc/sudoers.d/${username}
WORKDIR /home/${username}

10
docker/centos/7/dev/setup.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
ip tuntap add name pgwtun mode tun
fi
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
ip addr add 45.45.0.1/16 dev pgwtun
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
ip addr add cafe::1/64 dev pgwtun
ip link set pgwtun up

1
docker/centos/latest Symbolic link
View File

@@ -0,0 +1 @@
7

18
docker/check.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
docker-compose build
docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
TAG=artful docker-compose build
TAG=artful docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
DIST=fedora docker-compose build
DIST=fedora docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
DIST=centos docker-compose build
DIST=centos docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
DIST=debian TAG=jessie docker-compose build
DIST=debian TAG=jessie docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm test
docker rm $(docker ps -qa --no-trunc --filter "status=exited")

View File

@@ -0,0 +1,37 @@
ARG dist=debian
ARG tag=jessie
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
autoconf \
automake \
libtool \
gcc \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libyaml-dev \
build-essential \
iproute2 \
ca-certificates \
netbase \
curl \
pkg-config && \
apt-get clean
WORKDIR /root
RUN curl -SLO "https://github.com/mongodb/mongo-c-driver/releases/download/1.9.2/mongo-c-driver-1.9.2.tar.gz"; \
tar xzf mongo-c-driver-1.9.2.tar.gz; \
cd mongo-c-driver-1.9.2; \
./configure --disable-automatic-init-and-cleanup; \
make -j `nproc` install; \
ldconfig;

1
docker/debian/jessie/dev Symbolic link
View File

@@ -0,0 +1 @@
../../ubuntu/bionic/dev

1
docker/debian/latest Symbolic link
View File

@@ -0,0 +1 @@
stretch

1
docker/debian/stable Symbolic link
View File

@@ -0,0 +1 @@
stretch

View File

@@ -0,0 +1,40 @@
ARG dist=debian
ARG tag=stable
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
ARG tag=stable
#RUN apt-get update && \
# apt-get install -y netselect-apt && \
# apt-get clean && \
# if [ "x$tag" = "xlatest" ]; then \
# netselect-apt -o /etc/apt/sources.list; \
# else \
# netselect-apt ${tag} -o /etc/apt/sources.list; \
# fi
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
autoconf \
automake \
libtool \
gcc \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
build-essential \
iproute2 \
ca-certificates \
netbase \
pkg-config && \
apt-get clean

1
docker/debian/stretch/dev Symbolic link
View File

@@ -0,0 +1 @@
../../ubuntu/bionic/dev

View File

@@ -0,0 +1,22 @@
version: '3'
services:
run:
network_mode: "host"
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
depends_on:
- mongodb
- build
cap_add:
- NET_ADMIN
devices:
- "/dev/net/tun:/dev/net/tun"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
volumes:
- config:/etc/nextepc
hostname: nextepc-run
command: /bin/bash -c "/root/setup.sh; /usr/bin/nextepc-epcd"
volumes:
config: {}

View File

@@ -0,0 +1,18 @@
version: '3'
services:
test:
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
depends_on:
- mongodb
- build
environment:
DB_URI: mongodb://mongodb/nextepc
cap_add:
- NET_ADMIN
devices:
- "/dev/net/tun:/dev/net/tun"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
hostname: nextepc-test
command: /bin/bash -c "/root/setup.sh; /usr/bin/testepc"

84
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,84 @@
version: '3'
services:
mongodb:
image: mongo
container_name: nextepc-mongodb
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
webui:
build: webui
image: ${USER}/nextepc-webui
container_name: nextepc-webui
depends_on:
- mongodb
ports:
- "3000:3000"
depends_on:
- mongodb
environment:
DB_URI: mongodb://mongodb/nextepc
base:
build:
context: ./${DIST-ubuntu}/${TAG-latest}/base
args:
dist: ${DIST-ubuntu}
tag: ${TAG-latest}
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-base
command: /bin/bash -c "echo 'base' services"
build:
build:
context: ./build
args:
dist: ${DIST-ubuntu}
tag: ${TAG-latest}
username: ${USER}
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-build
depends_on:
- base
command: /bin/bash -c "echo 'build' services"
dev:
build:
context: ./${DIST-ubuntu}/${TAG-latest}/dev
args:
dist: ${DIST-ubuntu}
tag: ${TAG-latest}
username: ${USER}
image: ${USER}/${DIST-ubuntu}-${TAG-latest}-nextepc-dev
depends_on:
- mongodb
- base
environment:
- DB_URI=mongodb://mongodb/nextepc
- DISPLAY=$DISPLAY
# - DISPLAY=docker.for.mac.localhost:0
cap_add:
- NET_ADMIN
devices:
- "/dev/net/tun:/dev/net/tun"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
volumes:
- home:/home/${USER}
- ${HOME}:/mnt
- /tmp/.X11-unix:/tmp/.X11-unix
# - /etc/localtime:/etc/localtime:ro
# - /usr/share/zoneinfo/Europe/Helsinki:/etc/localtime:ro
hostname: nextepc-dev
user: ${USER}
entrypoint: /bin/bash -c "/bin/bash -c \"$${@}\""
command: |
/bin/bash -c "
sudo chmod 666 /dev/net/tun
sudo /root/setup.sh
/bin/bash || exit 0
"
volumes:
mongodb: {}
home: {}

View File

@@ -0,0 +1,24 @@
ARG dist=fedora
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
autoconf \
libtool \
gcc \
make \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
mongo-c-driver-devel \
openssl-devel \
cyrus-sasl-devel \
snappy-devel \
libyaml-devel \
iproute

View File

@@ -0,0 +1,22 @@
ARG dist=fedora
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-nextepc-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
cscope \
vim \
sudo \
iputils \
net-tools
COPY setup.sh /root
ARG username=acetcom
RUN useradd -m --uid=1000 ${username} && \
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
chmod 0440 /etc/sudoers.d/${username}
WORKDIR /home/${username}

10
docker/fedora/29/dev/setup.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
ip tuntap add name pgwtun mode tun
fi
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
ip addr add 45.45.0.1/16 dev pgwtun
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
ip addr add cafe::1/64 dev pgwtun
ip link set pgwtun up

1
docker/fedora/latest Symbolic link
View File

@@ -0,0 +1 @@
29

10
docker/package/Dockerfile Normal file
View File

@@ -0,0 +1,10 @@
ARG tag=latest
FROM ubuntu:${tag}
RUN apt-get update && \
apt-get -y install software-properties-common && \
add-apt-repository ppa:acetcom/nextepc && \
apt-get update && \
apt-get install -y nextepc
WORKDIR /root

1
docker/ubuntu/artful Symbolic link
View File

@@ -0,0 +1 @@
bionic

View File

@@ -0,0 +1,30 @@
ARG dist=ubuntu
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
autoconf \
automake \
libtool \
gcc \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
build-essential \
iproute2 \
ca-certificates \
netbase \
pkg-config && \
apt-get clean

View File

@@ -0,0 +1,36 @@
ARG dist=ubuntu
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-nextepc-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y --no-install-recommends \
git-buildpackage \
debhelper \
devscripts \
osc \
dput \
dh-autoreconf \
dh-systemd \
manpages-dev \
fakeroot \
cscope \
vim \
sudo \
iputils-ping \
wireshark \
net-tools && \
apt-get clean
COPY setup.sh /root
ARG username=acetcom
RUN useradd -m --uid=1000 ${username} && \
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
chmod 0440 /etc/sudoers.d/${username}
WORKDIR /home/${username}

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "pgwtun" /proc/net/dev > /dev/null; then
ip tuntap add name pgwtun mode tun
fi
ip addr del 45.45.0.1/16 dev pgwtun 2> /dev/null
ip addr add 45.45.0.1/16 dev pgwtun
ip addr del cafe::1/64 dev pgwtun 2> /dev/null
ip addr add cafe::1/64 dev pgwtun
ip link set pgwtun up

1
docker/ubuntu/latest Symbolic link
View File

@@ -0,0 +1 @@
bionic

View File

@@ -0,0 +1,37 @@
ARG dist=ubuntu
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
autoconf \
automake \
libtool \
gcc \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libyaml-dev \
build-essential \
iproute2 \
ca-certificates \
netbase \
curl \
pkg-config && \
apt-get clean
WORKDIR /root
RUN curl -SLO "https://github.com/mongodb/mongo-c-driver/releases/download/1.9.2/mongo-c-driver-1.9.2.tar.gz"; \
tar xzf mongo-c-driver-1.9.2.tar.gz; \
cd mongo-c-driver-1.9.2; \
./configure --disable-automatic-init-and-cleanup; \
make -j `nproc` install; \
ldconfig;

1
docker/ubuntu/trusty/dev Symbolic link
View File

@@ -0,0 +1 @@
../xenial/dev

1
docker/ubuntu/xenial Symbolic link
View File

@@ -0,0 +1 @@
bionic

21
docker/webui/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM node:carbon
MAINTAINER Sukchan Lee <acetcom@gmail.com>
ARG PACKAGE=nextepc
ARG VERSION=0.3.3
RUN set -e; \
cd /usr/src; \
rm -rf ./$PACKAGE; \
curl -SLO "https://github.com/acetcom/$PACKAGE/archive/v$VERSION.tar.gz"; \
tar -xvf v$VERSION.tar.gz; \
mv ./$PACKAGE-$VERSION/ ./$PACKAGE;
WORKDIR /usr/src/nextepc/webui
RUN npm install && \
npm run build
CMD npm run start
EXPOSE 3000

3
docs/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
_site
.sass-cache
.jekyll-metadata

24
docs/Gemfile Normal file
View File

@@ -0,0 +1,24 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 3.8.5"
gem "minima", "~> 2.0"
gem 'jekyll-seo-tag'
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.6"
gem "jekyll-redirect-from"
end

77
docs/Gemfile.lock Normal file
View File

@@ -0,0 +1,77 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
colorator (1.1.0)
concurrent-ruby (1.1.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
ffi (1.10.0)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.8.5)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-feed (0.12.1)
jekyll (>= 3.7, < 5.0)
jekyll-redirect-from (0.15.0)
jekyll (>= 3.3, < 5.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.6.0)
jekyll (~> 3.3)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (1.17.0)
liquid (4.0.3)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
minima (2.5.0)
jekyll (~> 3.5)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (3.0.3)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
rouge (3.3.0)
ruby_dep (1.5.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
PLATFORMS
ruby
DEPENDENCIES
jekyll (~> 3.8.5)
jekyll-feed (~> 0.6)
jekyll-redirect-from
jekyll-seo-tag
minima (~> 2.0)
BUNDLED WITH
2.0.1

108
docs/_config.yml Normal file
View File

@@ -0,0 +1,108 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: NextEPC
email: acetcom@gmail.com
description: >- # this means to ignore newlines until "baseurl:"
An open source implementation of the Evolved Packet Core of LTE networks
supporting 3GPP Release 13.
baseurl: "/nextepc" # the subpath of your site, e.g. /blog
url: "https://open5gs.org" # the base hostname & protocol for your site, e.g. http://example.com
author: "Sukchan Lee"
github_username: open5gs
google_analytics: UA-139225646-2
# Build settings
markdown: kramdown
plugins:
- jekyll-feed
- jekyll-seo-tag
- jekyll-redirect-from
include:
- _pages
# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
# to override the default setting.
exclude:
- Gemfile
- Gemfile.lock
- node_modules
- vendor/bundle/
- vendor/cache/
- vendor/gems/
- vendor/ruby/
# Minima date format
# refer to http://shopify.github.io/liquid/filters/date/ if you want to customize this
minima_reboot:
date_format: "%Y-%m-%d %H:%M"
footer_icons:
- username: open5gs
url: https://open5gs.org
icon: icon-github.svg
header_pages:
- _pages/docs.md
- _pages/faq.md
- _pages/about.md
- _pages/github.md
show_excerpts: true
# Collections
collections:
docs:
output: true
permalink: /:collection/:path/
defaults:
# _pages
- scope:
path: ""
type: pages
values:
layout: page
# _posts
- scope:
path: ""
type: posts
values:
layout: post
# _docs
- scope:
path: ""
type: docs
values:
layout: post
# Archives
# Type
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
# Path (examples)
# - Archive page should exist at path when using Liquid method or you can
# expect broken links (especially with breadcrumbs enabled)
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
# - <base_path/my-awesome-category/index.html ~> path: /
category_archive:
type: liquid
path: /categories/
tag_archive:
type: liquid
path: /tags/

View File

@@ -0,0 +1,268 @@
---
title: Quickstart
---
**Note:** NextEPC supports installation of packages in *Debian/Ubuntu and openSUSE* environments. *CentOS, Fedora, FreeBSD, and Mac OSX* require you to [build with source code]({{ site.url }}{{ site.baseurl }}/docs/guide/02-building-nextepc-from-sources)
{: .notice--warning}
### Install NextEPC with a Package Manager
---
The NextEPC package is available on the recent versions of *Ubuntu*.
```bash
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:open5gs/latest
$ sudo apt update
$ sudo apt install nextepc
```
The NextEPC package is also available on [OBS](https://build.opensuse.org/package/show/home:acetcom:open5gs:snapshot/nextepc). First, install the authentication key as shown below.
```bash
$ sudo apt update
$ sudo apt install wget gnupg
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/Release.key
$ sudo apt-key add Release.key
```
In Debian 9.0(stretch), you can install it as follows:
```bash
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ sudo apt update
$ sudo apt install nextepc
```
Other Linux distributions can be installed by changing the path.
```
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_9.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_16.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_17.10/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.10/
```
[Martin Hauke](https://build.opensuse.org/user/show/mnhauke) packaged NextEPC for *openSUSE* on [OBS](https://build.opensuse.org/package/show/home:mnhauke:nextepc/nextepc).
```bash
$ sudo zypper addrepo -f obs://home:mnhauke:nextepc home:mnhauke:nextepc
$ sudo zypper install nextepc
$ sudo zypper install mongodb-server mongodb-shell
```
### Configure NextEPC
---
Modify [/etc/nextepc/mme.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/mme.conf.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC
```diff
diff -u /etc/nextepc/mme.conf.old /etc/nextepc/mme.conf
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
@@ -8,18 +8,20 @@ parameter:
mme:
freeDiameter: mme.conf
s1ap:
+ addr: 192.168.0.100
gtpc:
+ addr: 192.168.0.100
gummei:
plmn_id:
- mcc: 001
- mnc: 01
+ mcc: 901
+ mnc: 70
mme_gid: 2
mme_code: 1
tai:
plmn_id:
- mcc: 001
- mnc: 01
- tac: 12345
+ mcc: 901
+ mnc: 70
+ tac: 7
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
```
Modify [/etc/nextepc/sgw.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/sgw.conf.in) to set the GTP-U IP address.
```diff
diff -u /etc/nextepc/sgw.conf.old /etc/nextepc/sgw.conf
--- sgw.conf.old 2018-04-15 18:30:25.000000000 +0900
+++ sgw.conf 2018-04-15 18:30:30.000000000 +0900
@@ -14,3 +14,4 @@
gtpc:
addr: 127.0.0.2
gtpu:
+ addr: 192.168.0.100
```
After changing conf files, please restart NextEPC daemons.
```bash
$ sudo systemctl restart nextepc-mmed
$ sudo systemctl restart nextepc-sgwd
```
### Install WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to install WebUI of NextEPC
1. *Debian and Ubuntu* based Linux distributions can install [Node.js](https://nodejs.org/) as follows:
```bash
$ sudo apt update
$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
```
2. To install [Node.js](https://nodejs.org/) on *openSUSE*, run the following:
```bash
$ sudo zypper install nodejs8
```
You can now install WebUI of NextEPC.
```bash
$ curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/install | sudo -E bash -
```
### Register Subscriber Information
---
Connect to `http://localhost:3000` and login with **admin** account.
> Username : admin
> Password : 1423
**Tip:** You can change the password in _Account_ Menu.
{: .notice--info}
To add subscriber information, you can do WebUI operations in the following order:
1. Go to `Subscriber` Menu.
2. Click `+` Button to add a new subscriber.
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
4. Click `SAVE` Button
**Tip:** This addition immediately affects NextEPC without restaring any daemon.
{: .notice--info}
### Adding a route for UE to have Internet connectivity
---
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
```bash
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
```
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
{: .notice--danger}
### Turn on your eNodeB and Phone
---
- Connect your eNodeB to the IP of your server via the standard S1AP port of SCTP 36412 (for MME)
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
- You can view the log at `/var/log/nextepc/*.log`.
### Troubleshooting
---
Problem with NextEPC can be filed as [GitHub Issues](https://github.com/open5gs/nextepc/issues). Please include the following to get help:
- Attach `*.pcapng` file created by wireskark.
- Attach configuration files at `/etc/nextepc/*.conf`.
- Attach log files at `/var/log/nextepc/*.log`.
You can modify the configuration file to record more logs.
```diff
diff -u /etc/nextepc/mme.conf.old /etc/nextepc/mme.conf
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
@@ -2,6 +2,7 @@
logger:
file: @LOCALSTATE_DIR@/log/nextepc/mme.log
+ level: debug
parameter:
```
After changing conf files, please restart NextEPC daemons.
```bash
$ sudo systemctl restart nextepc-mmed
$ sudo systemctl restart nextepc-sgwd
```
### Uninstall NextEPC and WebUI
How to remove NextEPC package:
1. On *Ubuntu*:
```bash
$ sudo apt purge nextepc
$ sudo apt autoremove
```
2. On *openSUSE*:
```bash
$ sudo zypper rm nextepc
```
You may need to remove manually `/var/log/nextepc` unless it is empty.
```bash
$ sudo rm -Rf /var/log/nextepc
```
The WebUI of NextEPC can be removed as follows:
```bash
curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/uninstall | sudo -E bash -
```

View File

@@ -0,0 +1,426 @@
---
title: Building nextepc from Sources
head_inline: "<style> .blue { color: blue; } </style>"
---
This post explains how to compile and install the source code on **Debian/Ubuntu** based Linux Distribution.
{: .blue}
### Getting MongoDB
---
Install MongoDB with package manager.
```bash
$ sudo apt update
$ sudo apt install mongodb
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
```
### Setting up TUN device (No persistent after rebooting)
---
Create the TUN device with the interface name `pgwtun`.
```bash
$ sudo ip tuntap add name pgwtun mode tun
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
$ sudo ip addr add cafe::1/64 dev pgwtun
$ sudo ip link set pgwtun up
```
The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./support/network/restart.sh`
{: .notice--info}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
$ sudo apt install autoconf libtool gcc pkg-config git flex bison libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
```bash
➜ nextepc git:(master) ✗ make check
```
You need to perform the **installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
```bash
➜ nextepc git:(master) ✗ ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
### Configure NextEPC
---
**Note:** In the developer environment, all settings can be managed in one place, such as [$INSTALL_PREFIX/install/etc/nextepc/nextepc.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/nextepc.conf.in).
{: .notice--danger}
Modify [$INSTALL_PREFIX/install/etc/nextepc/nextepc.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/nextepc.conf.in) to set the S1AP/GTP-C/GTP-U IP address, PLMN ID, and TAC
```diff
diff -u ./install/etc/nextepc/nextepc.conf.old ./install/etc/nextepc/nextepc.conf
--- nextepc.conf.old 2018-04-15 18:28:31.000000000 +0900
+++ nextepc.conf 2018-04-15 19:53:10.000000000 +0900
@@ -74,6 +74,7 @@ mme:
# dev: eth0
#
s1ap:
+ addr: 192.168.0.100
#
# <GTP-C Server>>
@@ -87,6 +88,7 @@ mme:
# - addr: ::1
#
gtpc:
+ addr: 192.168.0.100
#
# <GUMMEI>
@@ -110,8 +112,8 @@ mme:
#
gummei:
plmn_id:
- mcc: 001
- mnc: 01
+ mcc: 901
+ mnc: 70
mme_gid: 2
mme_code: 1
@@ -149,9 +151,9 @@ mme:
#
tai:
plmn_id:
- mcc: 001
- mnc: 01
- tac: 12345
+ mcc: 901
+ mnc: 70
+ tac: 7
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
@@ -242,6 +244,7 @@ sgw:
# gtpu:
#
gtpu:
+ addr: 192.168.0.100
pgw:
freeDiameter: pgw.conf
```
### Running NextEPC
---
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
```bash
➜ nextepc git:(master) ✗ ./nextepc-epcd
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
MongoDB URI: 'mongodb://localhost/nextepc'
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
...
```
Several command line options are provided.
```bash
➜ nextepc git:(master) ✗ ./nextepc-epcd -h
Password:
NextEPC daemon v0.4.0.67-078c - Apr 6 2019 17:20:24
Usage: ./nextepc-epcd [arguments]
Arguments:
-v Show version
-h Show help
-D Start as daemon
-f Set configuration file name
-l log_file Log file path to be logged to
-p pid_file PID file path
-d core:gtp:event Enable debugging
-t sock:mem: Enable trace
```
### Building WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
```bash
$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
```
Install the dependencies to run WebUI
```bash
➜ nextepc git:(master)cd webui
➜ webui git:(master) ✗ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
➜ webui git:(master) ✗ npm run dev
```
### Register Subscriber Information
---
Connect to `http://localhost:3000` and login with **admin** account.
> Username : admin
> Password : 1423
**Note:**
You can change the password in _Account_ Menu.
{: .notice--info}
To add subscriber information, you can do WebUI operations in the following order:
1. Go to `Subscriber` Menu.
2. Click `+` Button to add a new subscriber.
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
4. Click `SAVE` Button
**Tip:** This addition immediately affects NextEPC without restaring any daemon.
{: .notice--warning}
### Adding a route for UE to have internet connectivity
---
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
```bash
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
```
**Note:** It is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
### Turn on your eNodeB and Phone
---
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
- You can view the log at `$INSTALL_PREFIX/var/log/nextepc/*.log`.
### Troubleshooting
---
Debugging tools can help you troubleshoot problems.
- [GDB](https://www.gnu.org/software/gdb/) can be used as below:
```bash
➜ nextepc git:(master) ✗ sudo apt install gdb
➜ nextepc git:(master) ✗ ./libtool --mode=execute gdb ./nextepc-epcd
```
- On *Mac OS X*, you can use the [LLDB](https://lldb.llvm.org/).
```bash
➜ nextepc git:(master) ✗ ./libtool --mode=execute sudo lldb ./nextepc-epcd
```
You can use the command line option[`-d`] to record more logs.
```bash
➜ nextepc git:(master) ✗ ./nextepc-epcd -d
04/07 16:46:23.982: [core] INFO: NextEPC daemon start (main.c:169)
PID[5185]: '/Users/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
File Logging: '/Users/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
MongoDB URI: 'mongodb://localhost/nextepc'
Configuration: '/Users/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
04/07 16:46:23.996: [core] INFO: PCRF try to initialize (epc.c:37)
04/07 16:46:24.033: [core] INFO: PCRF initialize...done (epc.c:40)
04/07 16:46:24.035: [core] INFO: PGW try to initialize (epc.c:84)
04/07 16:46:24.132: [thread] DEBUG: [0x10d4df908] thread started (ogs-thread.c:101)
04/07 16:46:24.132: [thread] DEBUG: [0x10d4df908] worker signal (ogs-thread.c:66)
04/07 16:46:24.132: [fd] INFO: CONNECTED TO 'pgw.localdomain' (TCP,soc#11): (fd_logger.c:113)
04/07 16:46:24.133: [core] INFO: PGW initialize...done (epc.c:87)
04/07 16:46:24.133: [pgw] DEBUG: pgw_state_initial(): INIT (pgw_sm.c:15)
04/07 16:46:24.133: [fd] INFO: CONNECTED TO 'pcrf.localdomain' (TCP,soc#11): (fd_logger.c:113)
04/07 16:46:24.134: [pgw] DEBUG: pgw_state_operational(): ENTRY (pgw_sm.c:33)
04/07 16:46:24.135: [core] INFO: SGW try to initialize (epc.c:133)
04/07 16:46:24.136: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.136: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.137: [sock] DEBUG: socket bind 127.0.0.3:2123 (ogs-socket.c:107)
04/07 16:46:24.138: [sock] DEBUG: udp_server() [127.0.0.3]:2123 (ogs-udp.c:55)
04/07 16:46:24.139: [gtp] INFO: gtp_server() [127.0.0.3]:2123 (gtp_path.c:35)
04/07 16:46:24.140: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.140: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.141: [sock] DEBUG: socket bind 127.0.0.3:2152 (ogs-socket.c:107)
04/07 16:46:24.142: [sock] DEBUG: udp_server() [127.0.0.3]:2152 (ogs-udp.c:55)
04/07 16:46:24.143: [gtp] INFO: gtp_server() [127.0.0.3]:2152 (gtp_path.c:35)
04/07 16:46:24.158: [thread] DEBUG: [0x10d4df408] worker signal (ogs-thread.c:66)
04/07 16:46:24.158: [thread] DEBUG: [0x10d4df408] thread started (ogs-thread.c:101)
04/07 16:46:24.159: [sgw] DEBUG: sgw_state_initial(): INIT
(sgw_sm.c:12)
04/07 16:46:24.159: [core] INFO: SGW initialize...done (epc.c:136)
04/07 16:46:24.160: [sgw] DEBUG: sgw_state_operational(): ENTRY
(sgw_sm.c:30)
04/07 16:46:24.161: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.162: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.162: [sock] DEBUG: socket bind 127.0.0.2:2123 (ogs-socket.c:107)
04/07 16:46:24.162: [core] INFO: HSS try to initialize (epc.c:184)
04/07 16:46:24.163: [sock] DEBUG: udp_server() [127.0.0.2]:2123 (ogs-udp.c:55)
04/07 16:46:24.164: [gtp] INFO: gtp_server() [127.0.0.2]:2123 (gtp_path.c:35)
04/07 16:46:24.164: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.165: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.166: [sock] DEBUG: socket bind 192.168.0.3:2152 (ogs-socket.c:107)
04/07 16:46:24.166: [sock] DEBUG: udp_server() [192.168.0.3]:2152 (ogs-udp.c:55)
04/07 16:46:24.167: [gtp] INFO: gtp_server() [192.168.0.3]:2152 (gtp_path.c:35)
04/07 16:46:24.254: [core] INFO: HSS initialize...done (epc.c:187)
04/07 16:46:24.255: [core] INFO: MME try to initialize (epc.c:217)
04/07 16:46:24.366: [fd] INFO: CONNECTED TO 'mme.localdomain' (TCP,soc#9): (fd_logger.c:113)
04/07 16:46:24.367: [fd] INFO: CONNECTED TO 'hss.localdomain' (TCP,soc#17): (fd_logger.c:113)
04/07 16:46:24.367: [thread] DEBUG: [0x10d4dfe08] thread started (ogs-thread.c:101)
04/07 16:46:24.367: [core] INFO: MME initialize...done (epc.c:220)
04/07 16:46:24.367: [thread] DEBUG: [0x10d4dfe08] worker signal (ogs-thread.c:66)
NextEPC daemon v0.4.0.67-078c - Apr 6 2019 17:20:24
04/07 16:46:24.368: [mme] DEBUG: mme_state_initial(): INIT
(mme_sm.c:23)
04/07 16:46:24.368: [mme] DEBUG: mme_state_operational(): ENTRY
(mme_sm.c:43)
04/07 16:46:24.368: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.368: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.368: [sock] DEBUG: socket bind 192.168.0.3:2123 (ogs-socket.c:107)
04/07 16:46:24.368: [sock] DEBUG: udp_server() [192.168.0.3]:2123 (ogs-udp.c:55)
04/07 16:46:24.368: [gtp] INFO: gtp_server() [192.168.0.3]:2123 (gtp_path.c:35)
04/07 16:46:24.368: [sock] DEBUG: socket create(2:2:17) (ogs-socket.c:82)
04/07 16:46:24.368: [sock] DEBUG: udp socket(2) (ogs-udp.c:32)
04/07 16:46:24.368: [sock] DEBUG: socket connect 127.0.0.2:2123
(ogs-socket.c:132)
04/07 16:46:24.368: [sock] DEBUG: udp_client() [127.0.0.2]:2123 (ogs-udp.c:89)
04/07 16:46:24.368: [gtp] INFO: gtp_client() [127.0.0.2]:2123 (gtp_path.c:49)
04/07 16:46:24.368: [mme] DEBUG: Old INITMSG (numout:10 maxin:2048 maxattempt:8 maxinit_to:60000) (s1ap_usrsctp.c:283)
04/07 16:46:24.368: [mme] DEBUG: New INITMSG (numout:30 maxin:65535 maxattempt:4 maxinit_to:8000) (s1ap_usrsctp.c:311)
04/07 16:46:24.368: [mme] INFO: s1ap_server() [192.168.0.3]:36412 (s1ap_usrsctp.c:69)
04/07 16:46:24.609: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010f2296 (pgw_ipfw.c:277)
04/07 16:46:24.610: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010f2296 0053756b (pgw_ipfw.c:280)
04/07 16:46:25.611: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010f3a6d (pgw_ipfw.c:277)
04/07 16:46:25.612: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010f3a6d 0053756b (pgw_ipfw.c:280)
04/07 16:46:26.607: [pgw] DEBUG: [PGW] PROTO:17 SRC:2d2d0001 2d2d0001 d683d683 010fa451 (pgw_ipfw.c:277)
04/07 16:46:26.608: [pgw] DEBUG: [PGW] HLEN:20 DST:2d2d0001 d683d683 010fa451 0053756b (pgw_ipfw.c:280)
...
...
...
^C04/07 16:46:27.013: [core] INFO: SIGINT received (main.c:60)
04/07 16:46:27.013: [core] INFO: NextEPC daemon terminating... (main.c:185)
04/07 16:46:27.013: [core] INFO: DB-Client try to terminate (application.c:116)
04/07 16:46:27.019: [core] INFO: DB-Client terminate...done (application.c:118)
04/07 16:46:27.019: [core] INFO: MME try to terminate (epc.c:229)
04/07 16:46:27.019: [event] DEBUG: interrupt all (ogs-queue.c:260)
04/07 16:46:27.019: [thread] DEBUG: [0x10d4dfe08] thread running(1) (ogs-thread.c:111)
04/07 16:46:27.019: [mme] DEBUG: mme_state_operational(): EXIT
(mme_sm.c:43)
04/07 16:46:27.020: [mme] DEBUG: mme_state_final(): INIT
(mme_sm.c:32)
04/07 16:46:27.020: [thread] DEBUG: [0x10d4dfe08] worker done (ogs-thread.c:72)
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread destroy (ogs-thread.c:123)
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread join (ogs-thread.c:132)
04/07 16:46:27.021: [thread] DEBUG: [0x10d4dfe08] thread done (ogs-thread.c:138)
04/07 16:46:27.022: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
04/07 16:46:27.148: [core] INFO: MME terminate...done (epc.c:231)
04/07 16:46:27.148: [core] INFO: HSS try to terminate (epc.c:194)
04/07 16:46:27.149: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
04/07 16:46:27.257: [core] INFO: HSS terminate...done (epc.c:196)
04/07 16:46:27.257: [core] INFO: SGW try to terminate (epc.c:143)
04/07 16:46:27.258: [event] DEBUG: interrupt all (ogs-queue.c:260)
04/07 16:46:27.258: [thread] DEBUG: [0x10d4df408] thread running(1) (ogs-thread.c:111)
04/07 16:46:27.258: [sgw] DEBUG: sgw_state_operational(): EXIT
(sgw_sm.c:30)
04/07 16:46:27.259: [sgw] DEBUG: sgw_state_final(): INIT
(sgw_sm.c:21)
04/07 16:46:27.260: [thread] DEBUG: [0x10d4df408] worker done (ogs-thread.c:72)
04/07 16:46:27.260: [thread] DEBUG: [0x10d4df408] thread destroy (ogs-thread.c:123)
04/07 16:46:27.261: [thread] DEBUG: [0x10d4df408] thread join (ogs-thread.c:132)
04/07 16:46:27.261: [thread] DEBUG: [0x10d4df408] thread done (ogs-thread.c:138)
04/07 16:46:27.263: [core] INFO: SGW terminate...done (epc.c:145)
04/07 16:46:27.263: [core] INFO: PGW try to terminate (epc.c:94)
04/07 16:46:27.264: [event] DEBUG: interrupt all (ogs-queue.c:260)
04/07 16:46:27.265: [thread] DEBUG: [0x10d4df908] thread running(1) (ogs-thread.c:111)
04/07 16:46:27.265: [pgw] DEBUG: pgw_state_operational(): EXIT (pgw_sm.c:33)
04/07 16:46:27.266: [pgw] DEBUG: pgw_state_final(): INIT (pgw_sm.c:24)
04/07 16:46:27.267: [thread] DEBUG: [0x10d4df908] worker done (ogs-thread.c:72)
04/07 16:46:27.268: [thread] DEBUG: [0x10d4df908] thread destroy (ogs-thread.c:123)
04/07 16:46:27.269: [thread] DEBUG: [0x10d4df908] thread join (ogs-thread.c:132)
04/07 16:46:27.270: [thread] DEBUG: [0x10d4df908] thread done (ogs-thread.c:138)
04/07 16:46:27.271: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
04/07 16:46:27.401: [core] INFO: PGW terminate...done (epc.c:96)
04/07 16:46:27.402: [core] INFO: PCRF try to terminate (epc.c:47)
04/07 16:46:27.403: [fd] INFO: freeDiameter[6]: Initiating freeDiameter shutdown sequence (3) (fd_init.c:131)
04/07 16:46:27.514: [core] INFO: PCRF terminate...done (epc.c:49)
```

View File

@@ -0,0 +1,189 @@
---
title: NextEPC Splitting Network Elements
head_inline: "<style> .blue { color: blue; } </style>"
---
In a production network network elements would typically not all be on the same machine, as is the default example that ships with NextEPC.
NextEPC is designed to be standards compliant, so in theory you can connect any core network element (MME, PGW, SGW, PCRF, HSS) from NextEPC or any other vendor to form a functioning network, so long as they are 3GPP compliant.
To demonstrate this we will cover isolating each network element onto it's on machine and connect each network element to the other. For some interfaces specifying multiple interfaces is supported to allow connection to multiple
In these examples we'll be connecting NextEPC elements together, but it could just as easily be EPC elements from a different vendor in the place of any NextEPC network element.
| Service | IP | Identity |
| ------------- |:-------------:|:-------------:|
| P-GW | 10.0.1.121 | pgw.localdomain |
| S-GW | 10.0.1.122 | |
| PCRF | 10.0.1.123 | pcrf.localdomain |
| MME | 10.0.1.124 | mme.localdomain |
| HSS | 10.0.1.118 | hss.localdomain |
# External P-GW
In it's simplest from the P-GW has 3 interfaces:
* S5 - Connection to home network S-GW (GTP-C)
* Gx - Connection to PCRF (Diameter)
* Sgi - Connection to external network (Generally the Internet via standard TCP/IP)
### S5 Interface Configuration
Edit ```/etc/nextepc/pgw.conf```and change the address to IP of the server running the P-GW for the listener on GTP-C and GTP-U interfaces.
```
pgw:
freeDiameter: pgw.conf
gtpc:
addr:
- 10.0.1.121
gtpu:
addr:
- 10.0.1.121
```
### Gx Interface Configuration
Edit ```/etc/nextepc/freeDiameter/pgwd.conf```
Update ```ListenOn``` address to IP of the server running the P-GW:
``` ListenOn = "10.0.1.121"; ```
Update ConnectPeer to connect to the PCRF on it's IP.
```ConnectPeer = "pcrf.localdomain" { ConnectTo = "10.0.1.123"; No_TLS; };```
### Restart Services
Restart NextEPC PGW Daemon:
``` $ sudo systemctl restart nextepc-pgwd ```
# External S-GW
In it's simplest form the S-GW has 2 interfaces:
* S11 - Connection to MME (GTP-C)
* S5 - Connection to the home network P-GW (GTP-C)
### S5 Interface Configuration
Edit ```/etc/nextepc/sgw.conf```and change the address to IP of the server running the S-GW for the listener on GTP-C interface.
```
sgw:
freeDiameter: pgw.conf
gtpc:
addr:
- 10.0.1.122
```
Restart NextEPC SGW Daemon:
``` $ sudo systemctl restart nextepc-sgwd ```
# External PCRF
In it's simplest from the PCRF has 1 network interface:
* Gx - Connection to P-GW (Diameter)
### Gx Interface Configuration
Edit ```/etc/nextepc/freeDiameter/hss.conf```
Update ```ListenOn``` address to IP of the server running the HSS on it's IP:
``` ListenOn = "10.0.1.123"; ```
Update ConnectPeer to connect to the MME.
```ConnectPeer = "pgw.localdomain" { ConnectTo = "10.0.1.121"; No_TLS; };```
### MongoDB Interface Configuration (NextEPC HSS only)
Edit ```/etc/nextepc/freeDiameter/hss.conf``` and change the ```db_uri:``` to point at the HSS: ```db_uri: mongodb://10.0.1.118/nextepc```
Restart NextEPC PCRF Daemon:
``` $ sudo systemctl restart nextepc-pcrfd ```
# External HSS
In it's simplest form the HSS has 1 network interface:
* S6a - Connection to MME (Diameter)
### S6a Interface Configuration
Edit ```/etc/nextepc/freeDiameter/hss.conf```
Update ```ListenOn``` address to IP of the server running the HSS on it's IP:
``` ListenOn = "10.0.1.118"; ```
Update ConnectPeer to connect to the MME.
```ConnectPeer = "mme.localdomain" { ConnectTo = "10.0.1.124"; No_TLS; };```
Restart NextEPC HSS Daemon:
``` $ sudo systemctl restart nextepc-hssd ```
### MongoDB Interface Configuration (NextEPC specific)
If you are using NextEPC's HSS you may need to enable MongoDB access from the PCRF. This is done by editing ''/etc/mongodb.conf'' and changing the bind IP to:
``` bind_ip = 0.0.0.0 ```
Restart MongoDB for changes to take effect.
``` $ /etc/init.d/mongodb restart ```
# External MME
In it's simplest form the MME has 3 interfaces:
* S1AP - Connections from eNodeBs
* S6a - Connection to HSS (Diameter)
* S11 - Connection to S-GW (GTP-C)
### S11 Interface Configuration
Edit ```/etc/nextepc/mme.conf```, filling the IP address of the S-GW and P-GW servers.
```
sgw:
gtpc:
addr: 10.0.1.122
pgw:
gtpc:
addr:
- 10.0.1.121
```
### S6a Interface Configuration
Edit ```/etc/nextepc/freeDiameter/mme.conf```
Update ```ListenOn``` address to IP of the server running the MME:
``` ListenOn = "10.0.1.124"; ```
Update ConnectPeer to connect to the PCRF on it's IP.
```ConnectPeer = "hss.localdomain" { ConnectTo = "10.0.1.118"; No_TLS; };```
### Restart Services
Restart NextEPC MME Daemon:
``` $ sudo systemctl restart nextepc-mmed ```

View File

@@ -0,0 +1,108 @@
---
title: Build on Ubuntu/Debian
---
### TUN device permissions
---
To run nextepc with least privilege, the TUN device privilege should be a `crw-rw-rw-`(666). Otherwise, you need to run nextepc daemon as root. If the permission is not `crw-rw-rw-`(666), you may need to install [udev](https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html) package.
```bash
$ ls -al /dev/net/tun
crw-rw---- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
$ sudo apt install udev
$ sudo systemctl start systemd-udevd (if '/lib/systemd/systemd-udevd' is not running)
$ ls -al /dev/net/tun
crw-rw-rw- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
```
Nevertheless, if the permission do not change, you can run nextepc with root privileges or change the permission using [chmod](https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html) as follows:
```bash
$ sudo chmod 666 /dev/net/tun
```
### Making TUN Permanent
---
Write a configuration file for the TUN deivce.
```bash
$ sudo sh -c "cat << EOF > /etc/systemd/network/99-nextepc.netdev
[NetDev]
Name=pgwtun
Kind=tun
EOF"
```
Create a TUN device. The interface name will be `pgwtun`.
```bash
$ sudo systemctl enable systemd-networkd
$ sudo systemctl restart systemd-networkd
$ sudo apt install net-tools
$ ifconfig pgwtun
pgwtun: flags=4241<UP,POINTOPOINT,NOARP,MULTICAST> mtu 1500
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
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 2 bytes 255 (255.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
```
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
```bash
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
1
$ sudo sh -c "echo 'net.ipv6.conf.pgwtun.disable_ipv6=0' > /etc/sysctl.d/30-nextepc.conf"
$ sudo sysctl -p /etc/sysctl.d/30-nextepc.conf
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
0
```
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
{: .notice--warning}
You are now ready to set the IP address on TUN device.
```bash
$ sudo sh -c "cat << EOF > /etc/systemd/network/99-nextepc.network
[Match]
Name=pgwtun
[Network]
Address=45.45.0.1/16
Address=cafe::1/64
EOF"
```
Restart the TUN device
```bash
$ sudo systemctl restart systemd-networkd
```
Make sure it is set up properly.
```bash
$ 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<global>
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
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 20 bytes 2019 (2.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
```
**Note:** On *Linux*, you should run `nextepc-pgwd` first to correctly verify the IP address of TUN device. Otherwise, the TUN device's IP address is not displayed by the [ifconfig](http://net-tools.sourceforge.net/man/ifconfig.8.html) command.
{: .notice--warning}

View File

@@ -0,0 +1,145 @@
---
title: CentOS
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **CentOS 7** Distribution.
{: .blue}
### Getting MongoDB
---
Create the MongoDB repository file.
```bash
$ sudo sh -c 'cat << EOF > /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF'
```
Install MongoDB with Package Manager.
```bash
sudo yum -y install mongodb-org
sudo systemctl start mongod (if '/usr/bin/mongod' is not running)
```
### Setting up TUN device (No persistent after rebooting)
---
Create the TUN device. Interface name will be `pgwtun`.
```bash
$ sudo yum -y install iproute
$ sudo ip tuntap add name pgwtun mode tun
$ ip link show
```
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
```bash
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
1
$ sudo -w net.ipv6.conf.pgwtun.disable_ipv6=0
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
0
```
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
{: .notice--warning}
You are now ready to set the IP address on TUN device.
```bash
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
$ sudo ip addr add cafe::1/64 dev pgwtun
```
Make sure it is set up properly.
```bash
$ sudo ip link set pgwtun up
$ ip link show
```
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./support/network/restart.sh`
{: .notice--info}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
$ sudo yum -y install git flex bison autoconf libtool lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel
```
Configure EPEL package and install mongo-c-driver.
```bash
$ sudo yum -y install epel-release
$ sudo yum -y install mongo-c-driver-devel
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
```bash
➜ nextepc git:(master) ✗ make check
```
You need to perform the **installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
```bash
➜ nextepc git:(master) ✗ ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
### Building WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
```bash
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
$ sudo yum -y install nodejs
```
Install the dependencies to run WebUI
```bash
➜ nextepc git:(master)cd webui
➜ webui git:(master) ✗ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
➜ webui git:(master) ✗ npm run dev
```

View File

@@ -0,0 +1,131 @@
---
title: Fedora
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **Fedora 27** Distribution.
{: .blue}
### Getting MongoDB
---
Install MongoDB with package manager.
```bash
$ sudo dnf -y install mongodb-server
```
Run MongoDB server.
```bash
$ mkdir -p ./data/db
$ mongod --dbpath ./data/db
```
### Setting up TUN device (No persistent after rebooting)
---
Create the TUN device. Interface name will be `pgwtun`.
```bash
$ sudo dnf -y install iproute
$ sudo ip tuntap add name pgwtun mode tun
$ ip link show
```
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
```bash
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
1
$ sudo -w net.ipv6.conf.pgwtun.disable_ipv6=0
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
0
```
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
{: .notice--warning}
You are now ready to set the IP address on TUN device.
```bash
$ sudo ip addr add 45.45.0.1/16 dev pgwtun
$ sudo ip addr add cafe::1/64 dev pgwtun
```
Make sure it is set up properly.
```bash
$ sudo ip link set pgwtun up
$ ip link show
```
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./support/network/restart.sh`
{: .notice--info}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
$ sudo dnf -y install git gcc flex bison autoconf libtool mongo-c-driver-devel lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel snappy-devel libyaml-devel
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
```bash
➜ nextepc git:(master) ✗ make check
```
You need to perform **the installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
```bash
➜ nextepc git:(master) ✗ ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
### Building WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
```bash
$ sudo dnf -y install nodejs
```
Install the dependencies to run WebUI
```bash
➜ nextepc git:(master)cd webui
➜ webui git:(master) ✗ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
➜ webui git:(master) ✗ npm run dev
```

View File

@@ -0,0 +1,134 @@
---
title: FreeBSD
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **FreeBSD Relase 11.1**.
{: .blue}
### Getting MongoDB
---
Install MongoDB with package manager.
```bash
$ sudo pkg install mongodb
```
Run MongoDB server.
```bash
$ mkdir -p ./data/db
$ mongod --dbpath ./data/db
```
### Setting up TUN device (No persistent after rebooting)
---
Configure the TUN device.
```bash
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.4 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
```
Enable IP forwarding
```bash
$ sudo sysctl -w net.inet.ip.forwarding=1
```
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./support/network/restart.sh`
{: .notice--info}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
$ sudo pkg install git gcc bison gsed pkgconf autoconf automake libtool mongo-c-driver gnutls libgcrypt libidn libyaml
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
➜ nextepc git:(master) ✗ sudo make check
```
You need to perform **the installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
acetcom@nextepc:~/nextepc$ sudo ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
acetcom@nextepc:~/nextepc$ sudo ./nextepc-epcd
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
MongoDB URI: 'mongodb://localhost/nextepc'
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
...
```
### Building WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
```bash
$ sudo pkg install node
```
Install the dependencies to run WebUI
```bash
➜ nextepc git:(master)cd webui
➜ webui git:(master) ✗ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
➜ webui git:(master) ✗ npm run dev
```

View File

@@ -0,0 +1,146 @@
---
title: Mac OS X
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **macOS High Sierra 10.13.3**.
{: .blue}
### Installing Homebrew
---
```bash
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
### Getting MongoDB
---
Install MongoDB with Package Manager.
```bash
$ brew install mongodb
```
Run MongoDB server.
```bash
$ mkdir -p ./data/db
$ mongod --dbpath ./data/db
```
### Setting up TUN device (No persistent after rebooting)
---
Install TUN/TAP driver
- You can download it from [http://tuntaposx.sourceforge.net/](http://tuntaposx.sourceforge.net/)
Configure the TUN device.
```bash
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.4 netmask 255.255.255.255
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
```
Enable IP forwarding & Masquerading
```bash
$ sudo sysctl -w net.inet.ip.forwarding=1
$ sudo sh -c "echo 'nat on {en0} from 45.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.nextepc"
$ sudo pfctl -e -f /etc/pf.anchors/org.nextepc
```
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./support/network/restart.sh`
{: .notice--info}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
$ brew install autoconf automake libtool gnu-sed mongo-c-driver libusrsctp gnutls libgcrypt libidn libyaml pkg-config
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
➜ nextepc git:(master) ✗ sudo make check
```
You need to perform **the installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
acetcom@nextepc:~/nextepc$ sudo ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
**Note:** This should require *sudo* due to access `/dev/tun0`.
{: .notice--danger}
```bash
acetcom@nextepc:~/nextepc$ sudo ./nextepc-epcd
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
MongoDB URI: 'mongodb://localhost/nextepc'
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
...
```
### Building WebUI of NextEPC
---
[Node.js](https://nodejs.org/) is required to build WebUI of NextEPC
```bash
$ brew install node
```
Install the dependencies to run WebUI
```bash
➜ nextepc git:(master)cd webui
➜ webui git:(master) ✗ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
➜ webui git:(master) ✗ npm run dev
```

View File

@@ -0,0 +1,157 @@
---
title: Ubuntu (Trusty)
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **Ubuntu 14.04(Trusty)** Distribution.
{: .blue}
## Getting MongoDB
Install MongoDB with package manager.
```bash
$ sudo apt update
$ sudo apt install mongodb
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
```
### TUN device permissions
---
To run nextepc with least privilege, the TUN device privilege should be a `crw-rw-rw-`(666). Otherwise, you need to run nextepc daemon as root. If the permission is not `crw-rw-rw-`(666), you may need to install [udev](https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html) package.
```bash
$ ls -al /dev/net/tun
crw-rw---- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
$ sudo apt install udev
$ sudo systemctl start systemd-udevd (if '/lib/systemd/systemd-udevd' is not running)
$ ls -al /dev/net/tun
crw-rw-rw- 1 root 28 10, 200 Feb 11 05:13 /dev/net/tun
```
Nevertheless, if the permission do not change, you can run nextepc with root privileges or change the permission using [chmod](https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html) as follows:
```bash
$ sudo chmod 666 /dev/net/tun
```
### Making TUN Permanent
---
Write the configuration file for the TUN deivce.
```bash
$ sudo sh -c "cat << EOF > /etc/network/interfaces.d/nextepc
auto pgwtun
iface pgwtun inet static
address 45.45.0.1
netmask 255.255.0.0
pre-up ip tuntap add name pgwtun mode tun
post-down ip tuntap del name pgwtun mode tun
iface pgwtun inet6 static
address cafe::1
netmask 64
EOF"
```
For loading TUN configuration,
```bash
$ sudo sh -c 'if ! grep "source-directory" /etc/network/interfaces | grep "/etc/network/interfaces.d" > /dev/null; then
echo "source-directory /etc/network/interfaces.d" >> /etc/network/interfaces
fi'
```
Create the TUN device. Interface name will be `pgwtun`.
```bash
$ ifup pgwtun
```
Then, to support IPv6-enabled UEs, you must configure your TUN device to support IPv6.
```bash
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
1
$ sudo sh -c "echo 'net.ipv6.conf.pgwtun.disable_ipv6=0' > /etc/sysctl.d/30-nextepc.conf"
$ sudo sysctl -p /etc/sysctl.d/30-nextepc.conf
$ sysctl -n net.ipv6.conf.pgwtun.disable_ipv6
0
```
**Note:** If your TUN device already supports IPv6, you can skip this steps above.
{: .notice--warning}
### Building NextEPC
---
Install the depedencies for building the source code.
```bash
sudo apt install git gcc flex bison make autoconf libtool pkg-config libsctp-dev libssl-dev libgnutls-dev libidn11-dev libyaml-dev
```
Then, compile and install Mongo C Driver like the followings.
```bash
sudo apt-get -y install g++ libsasl2-dev
tar xzf mongo-c-driver-1.8.0.tar.gz
cd mongo-c-driver-1.8.0
./configure --disable-automatic-init-and-cleanup
make
sudo make install
sudo ldconfig
```
Git clone with `--recursive` option.
```bash
➜ open5gs git clone --recursive https://github.com/{{ site.github_username }}/nextepc
```
To compile with autotools:
```bash
➜ open5gs cd nextepc
➜ nextepc git:(master) ✗ autoreconf -iv
➜ nextepc git:(master) ✗ ./configure --prefix=`pwd`/install
➜ nextepc git:(master) ✗ make -j `nproc`
```
Check whether the compilation is correct.
```bash
➜ nextepc git:(master) ✗ make check
```
You need to perform **the installation process**.
```bash
➜ nextepc git:(master) ✗ make install
```
Check whether the installation is correct.
```bash
➜ nextepc git:(master) ✗ ./test/testcomplex
s1setup_test : SUCCESS
attach_test : SUCCESS
volte_test : SUCCESS
handover_test : SUCCESS
All tests passed.
```
**Tip:** You can also check the result of `./test/testcomplex` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
{: .notice--info}
For developers, it provides `nextepc-epcd` daemon that includes both *MME*, *SGW*, *PGW*, *HSS*, and *PCRF*.
```bash
➜ nextepc git:(master) ✗ ./nextepc-epcd
04/06 23:13:03.367: [core] INFO: NextEPC daemon start (main.c:169)
PID[6404]: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid'
File Logging: '/home/acetcom/Documents/git/open5gs/nextepc/install/var/log/nextepc/nextepc.log'
MongoDB URI: 'mongodb://localhost/nextepc'
Configuration: '/home/acetcom/Documents/git/open5gs/nextepc/install/etc/nextepc/nextepc.conf'
04/06 23:13:03.369: [core] INFO: PCRF try to initialize (epc.c:37)
...
```

View File

@@ -0,0 +1,443 @@
---
title: Your First LTE
head_inline: "<style> .blue { color: blue; } .bold { font-weight: bold; } </style>"
---
This post is the perfect starting point for learning to build your own LTE network. View this lession as a guided introduction -- including the installation, configuration, and best practices that will ease your learning.
### Prerequisites
---
First, you have to prepare USRP B200/B210 to run srsENB. However, please keep in mind that you would still need a fairly high-end PC (at least dual-core i5, better quad-core i7) with USB 3.0 to attach the USRP B200/B210.
For USRP B200/B210, you can use a GPS antenna for clock synchronization. Of course, it can work without a GPS antenna, but if you have that antenna, it's a good to have a window near your desk where you can put the small GPS patch antenna. In my case, a 1 to 2 meters antenna cable is used between desk/computer and the window.
This document will be described with the following equipment.
- i5-8500 PC with Ubuntu 18.04(bionic)
- USRP B200/B210 with USB 3.0
- iPhone XS
- sysmoUSIM-SJS1
- 10Mhz GPS-DO(Optional)
### Overall Physical Setup
---
If you want to use GPS antenna, setup your devices in the following order:
1. GPS antenna near window
2. GPS antenna connected to "GPS ANT" connector of GPS-DO (SMA)
3. 10MHz output (BNC) of GPS-DO connected to 10MHz input of USRP (SMA)
4. GPS input of USRP open/unused!
5. 1PPS input of USRP open/unused!
6. GPS-DO powered via power supply
**Note:** When the GPS-DO acquires a lock on the GPS signal, a **GREEN** LED is displayed. GPS takes time to function normally. You also need to wait for the **RED** LED(ALARM) to turn off.
{: .notice--warning}
Then, setup the USRP B200/B210 as below:
1. **4x Small Antennas** should be connected to USRP Rx/Tx ports (RF-A/RF-B)
2. USRP powered via power supply or over **USB 3.0**
3. USRP **USB 3.0** port connected to your PC
### USIM Setup
---
Bascially, you can learn how to use it in the [sysmoUSIM manual](https://www.sysmocom.de/manuals/sysmousim-manual.pdf) or on the [official homepage of pysim project](http://osmocom.org/projects/pysim/wiki). Let's take a quickstart guide for this experiment.
###### Install dependencies:
```
$ sudo apt-get install pcscd pcsc-tools libccid libpcsclite-dev python-pyscard
```
- Connect SIM card reader to your computer and insert programmable SIM card to the reader.
###### Check the status of connection by entering the following command:
```
$ pcsc_scan
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Reader] 00
Sun May 26 14:26:12 2019
Reader 0: HID Global OMNIKEY 3x21 Smart Card Reader [OMNIKEY 3x21 Smart Card Re
Card state: Card inserted,
ATR: 3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5
...
```
- If SIM card reader is recognized then we can expect to print "Card inserted".
###### Get the code of PySIM with installing dependency:
```
$ sudo apt-get install python-pyscard python-serial python-pip
$ pip install pytlv
$ git clone git://git.osmocom.org/pysim
```
###### Read your SIM card:
```
$ ./pySim-read.py -p0 or ./pySim-read.py -p1
Using PC/SC reader (dev=0) interface
Reading ...
ICCID: 8988211000000213010
IMSI: 310789012345301
SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffff
...
```
###### Program your SIM card like the followings:
```
./pySim-prog.py -p 0 -n NextEPC -a 62416296 -s 8988211000000213010 -i 310789012345301 -x 310 -y 789 -k 82E9053A1882085FF2C020359938DAE9 -o BFD5771AAF4F6728E9BC6EF2C2533BDB
Using PC/SC reader (dev=0) interface
Insert card now (or CTRL-C to cancel)
Autodetected card type: sysmoUSIM-SJS1
Generated card parameters :
> Name : NextEPC
> SMSP : e1ffffffffffffffffffffffff0581005155f5ffffffffffff000000
> ICCID : 8988211000000213010
> MCC/MNC : 310/789
> IMSI : 310789012345301
> Ki : 82E9053A1882085FF2C020359938DAE9
> OPC : BFD5771AAF4F6728E9BC6EF2C2533BDB
> ACC : None
Programming ...
Done !
```
**Note:** You should use your ADM value to program USIM card, not my ADM(-a 62416296).
{: .notice--warning}
### Installation
---
We will use *Ubuntu 18.04(Bionic)* installed PC.
{: .blue .bold}
#### 1. USRP Hardware Driver
Most Linux distributions provide UHD as part of their package management. On *Debian and Ubuntu* systems, this will install the base UHD library, all headers and build-specific files, as well as utilities:
```bash
$ sudo add-apt-repository ppa:ettusresearch/uhd
$ sudo apt update
$ sudo apt install libuhd-dev libuhd003 uhd-host
```
After installing, you need to download the FPGA images packages by running _uhd images downloader_ on the command line (the actual path may differ based on your installation):
```bash
$ sudo /usr/lib/uhd/utils/uhd_images_downloader.py
```
#### 2. srsENB
On *Ubuntu 18.04(Bionic)*, one can install the required libraries with:
```bash
$ sudo apt install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
```
Download and build srsLTE:
```bash
➜ git git clone https://github.com/srsLTE/srsLTE.git
➜ git cd srsLTE
➜ srsLTE git:(master) ✗ mkdir build
➜ srsLTE git:(master)cd build
➜ build git:(master) ✗ cmake ../
➜ build git:(master) ✗ make
➜ build git:(master) ✗ make test
```
#### 3. NextEPC
The NextEPC package is available on the recent versions of *Ubuntu*.
```bash
# Getting the authentication key
$ sudo apt install wget
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
$ sudo apt-key add Release.key
# Installing NextEPC
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ sudo apt update
$ sudo apt install nextepc
```
The following shows how to install the Web UI of NextEPC.
```bash
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
$ curl -sL http://nextepc.org/static/webui/install | sudo -E bash -
```
### Configuration & Running
---
#### 1. NextEPC
When you purchase the sysmoUSIM, you will receive the following information via e-mail.
```
Title : sysmocom SIM Card Details / AM93\PICK\00859
IMSI ICCID ACC PIN1 PUK1 PIN2 PUK2 Ki OPC ADM1 KIC1 KID1 KIK1
...
901700000017408 8988211000000174089 0100 3623 84724035 8774 57473966 B1233463AB9BC2AD2DB1830EB6417E7B 625150E2A943E3353DD23554101CAFD4 47190711 C865CAA0A54542333929B29B116F4375 7D7F65DCD99003C0A0D5D31CA3E5253E 5B27983AF628FC3FCB36B89300012944
```
Here's my subscriber information from above.
```
MCC/MNC : 901/70
IMSI : 901700000017408
K : B1233463AB9BC2AD2DB1830EB6417E7B
OPc : 625150E2A943E3353DD23554101CAFD4
```
If you programmed USIM using a card reader like me, you should use your SIM information.
```
MCC/MNC : 310/789
IMSI : 310789012345301
K : 82E9053A1882085FF2C020359938DAE9
OPc : BFD5771AAF4F6728E9BC6EF2C2533BDB
```
Connect to `http://localhost:3000` and login with **admin** account.
> Username : admin
> Password : 1423
Then proceed as follows:
1. Go to `Subscriber` Menu.
2. Click `+` Button to add a new subscriber.
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
4. Click `SAVE` Button
Modify [/etc/nextepc/mme.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/mme.conf.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC
```diff
diff -u mme.conf.old mme.conf
--- mme.conf.old 2018-04-15 18:28:31.000000000 +0900
+++ mme.conf 2018-04-15 19:53:10.000000000 +0900
@@ -14,18 +14,20 @@
mme:
freeDiameter: mme.conf
s1ap:
+ addr: 127.0.1.100
gtpc:
+ addr: 127.0.1.100
gummei:
plmn_id:
- mcc: 001
- mnc: 01
+ mcc: 310
+ mnc: 789
mme_gid: 2
mme_code: 1
tai:
plmn_id:
- mcc: 001
- mnc: 01
- tac: 12345
+ mcc: 310
+ mnc: 789
+ tac: 7
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
```
S1AP/GTP-C IP address, PLMN ID, TAC are changed as follows.
```
S1AP address : 127.0.1.100 - srsENB default value
GTP-C address : 127.0.1.100 - Use loopback interface
PLMN ID : MNC(310), MCC(789) - Programmed USIM with a card reader
TAC : 7 - srsENB default value
```
The GTP-U IP address will be set to 127.0.0.2. To do this, modify [/etc/nextepc/sgw.conf](https://github.com/{{ site.github_username }}/nextepc/blob/master/support/config/sgw.conf.in) to set the GTP-U IP address.
```diff
diff -u /etc/nextepc/sgw.conf.old /etc/nextepc/sgw.conf
--- sgw.conf.old 2018-04-15 18:30:25.000000000 +0900
+++ sgw.conf 2018-04-15 18:30:30.000000000 +0900
@@ -14,3 +14,4 @@
gtpc:
addr: 127.0.0.2
gtpu:
+ addr: 127.0.0.2
```
After changing conf files, please restart NextEPC daemons.
```bash
$ sudo systemctl restart nextepc-mmed
$ sudo systemctl restart nextepc-sgwd
```
If your phone can connect to internet, you must run the following command in NextEPC-PGW installed host.
```bash
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
```
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
{: .notice--danger}
#### 2. srsENB
Change back to the srsENB source directory and copy the main config example as well as all additional config files for RR, SIB and DRB.
```bash
➜ srsLTE git:(master) ✗ cp srsenb/enb.conf.example srsenb/enb.conf
➜ srsLTE git:(master) ✗ cp srsenb/rr.conf.example srsenb/rr.conf
➜ srsLTE git:(master) ✗ cp srsenb/sib.conf.example srsenb/sib.conf
➜ srsLTE git:(master) ✗ cp srsenb/drb.conf.example srsenb/drb.conf
```
You should check your phone frequency. If your phone does not support Band-3, you should use a different DL EARFCN value.
```diff
--- enb.conf.example 2018-11-19 18:16:06.953631893 +0900
+++ enb.conf 2019-04-08 11:15:18.051261318 +0900
@@ -23,8 +23,8 @@
cell_id = 0x01
phy_cell_id = 1
tac = 0x0007
-mcc = 001
-mnc = 01
+mcc = 310
+mnc = 789
mme_addr = 127.0.1.100
gtp_bind_addr = 127.0.1.1
s1c_bind_addr = 127.0.1.1
@@ -66,12 +66,13 @@
# Default "auto". B210 USRP: 400 us, bladeRF: 0 us.
#####################################################################
[rf]
-dl_earfcn = 3400
+dl_earfcn = 1600
tx_gain = 80
rx_gain = 40
#device_name = auto
#device_args = auto
+device_args="clock=external"
#time_adv_nsamples = auto
#burst_preamble_us = auto
```
PLMN ID, DL EARFCN, and Device Argument are updated as belows.
```
PLMN ID : MNC(310), MCC(789) programmed USIM with a card reader
DL EARFCN : Band-3 - from your Phone
Device Argument : Clock source from external GPS-DO
```
If you do not use the GPS-DO, you should use:
```diff
#device_name = auto
-#device_args = auto
+device_args = auto
#time_adv_nsamples = auto
#burst_preamble_us = auto
```
Now, run the srsENB as follows:
```bash
➜ srsLTE git:(master)cd srsenb/
➜ srsenb git:(master) ✗ sudo ../build/srsenb/src/srsenb ./enb.conf
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
--- Software Radio Systems LTE eNodeB ---
Reading configuration file ./enb.conf...
-- Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex...
Opening USRP with args: "",master_clock_rate=30.72e6
-- Detected Device: B200
-- Loading FPGA image: /usr/share/uhd/images/usrp_b200_fpga.bin... done
-- Operating over 'USB 2'.
-- Detecting internal GPSDO.... 'No GPSDO found'
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 30.720000 MHz...
-- Actually got clock rate 30.720000 MHz.
-- Performing timer loopback test... pass
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
Setting Sampling frequency 11.52 MHz
==== eNodeB started ===
Type <t> to view trace
```
If you see the `No GPSDO found`, please exit the program with Ctrl-C.
And also, if you see the `USB 2`, it will not be working properly.
The following console output is the correct result of srsENB.
```bash
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
--- Software Radio Systems LTE eNodeB ---
Reading configuration file ./enb.conf...
Opening USRP with args: "",master_clock_rate=30.72e6
-- Detected Device: B200
-- Operating over USB 3.
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 30.720000 MHz...
-- Actually got clock rate 30.720000 MHz.
-- Performing timer loopback test... pass
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
Setting Sampling frequency 11.52 MHz
==== eNodeB started ===
Type <t> to view trace
```
### Turn on your eNodeB and Phone
---
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
- You can view the log at `/var/log/nextepc/*.log`.

View File

@@ -0,0 +1,20 @@
{% if page.comments != false and jekyll.environment == "production" %}
<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = '{{ page.url | absolute_url }}';
this.page.identifier = '{{ page.url | absolute_url }}';
};
(function() {
var d = document, s = d.createElement('script');
s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
{% endif %}

View File

@@ -0,0 +1,42 @@
<footer id="site-footer">
<div class="container">
<div class="h5 pt-4">{{ site.title | escape }}</div>
<div class="row">
<div class="col col-lg-3">
<ul class="list-unstyled">
<li class="text-secondary">
{% if site.author %}
{{ site.author | escape }}
{% else %}
{{ site.title | escape }}
{% endif %}
</li>
{% if site.email %}
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
<li><i><font size="2">(Please do not mail me directly for technical support. Instead, use <a href="https://github.com/{{ site.github_username }}/nextepc/issues">GitHub Issues</a>.)</font></i></li>
{% endif %}
</ul>
</div>
{% if site.footer_icons %}
<div class="col-6 col-lg-3">
<ul class="list-unstyled">
{% for footer_icon in site.footer_icons %}
<li>
<a href="{{ footer_icon.url }}">
{% if footer_icon.icon %}
{% capture icon %}{% include {{footer_icon.icon}} %}{% endcapture %}
<span class="align-middle text-secondary pr-2">{{ icon | strip }}</span>{% endif %}<span>{{ footer_icon.username }}</span>
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="col-12 col-lg">
<p class="text-secondary text-justify">{{ site.description | escape }}</p>
</div>
</div>
</div>
</footer>

View File

@@ -0,0 +1,10 @@
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.google_analytics }}', 'auto');
ga('send', 'pageview');
</script>

23
docs/_includes/head.html Normal file
View File

@@ -0,0 +1,23 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
<link rel="shortcut icon" href="{{ "/assets/favicon.ico" | relative_url }}">
{% if page.head_inline %}
{{ page.head_inline }}
{% endif %}
{% if jekyll.environment == 'production' and site.google_analytics %}
{% include google-analytics.html %}
{% endif %}
{% seo %}
{% include head-includes.html %}
</head>

View File

@@ -0,0 +1,24 @@
<header id="nav-header" class="border-dark border-left-0 border-right-0">
<div id="nav-container" class="container position-relative d-flex justify-content-between align-items-center">
{% assign default_paths = site.pages | map: "path" %}
{% assign page_paths = site.header_pages | default: default_paths %}
<a class="h4 m-0 text-dark" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
{% if page_paths %}
<nav id="nav-menu-container" class="text-right navbar-light">
<input type="checkbox" id="nav-trigger" class="d-none"/>
<label for="nav-trigger" id="nav-trigger-label" class="m-2 d-inline-block d-md-none navbar-toggler-icon">
</label>
<div id="nav-menu" class="d-none d-md-block">
{% for path in page_paths %}
{% assign my_page = site.pages | where: "path", path | first %}
{% if my_page.title %}
<a class="text-dark ml-3 ml-md-0 p-2 d-block d-md-inline-block" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
{% endif %}
{% endfor %}
</div>
</nav>
{% endif %}
</div>
</header>

View File

@@ -0,0 +1,4 @@
<svg viewBox="0 0 16 16" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<title>GitHub</title>
<path fill="currentColor" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
</svg>

After

Width:  |  Height:  |  Size: 1017 B

View File

@@ -0,0 +1,39 @@
---
layout: page
---
{{ content }}
{% for post in site.posts %}
{% capture year %}{{ post.date | date: '%Y' }}{% endcapture %}
{% if forloop.first %}
<h2 class="mt-0 h4">{{ year }}</h2>
<table class="ml-4">
{% elsif year != prev_year %}
</table>
<h2 class="h4">{{ year }}</h2>
<table class="ml-4">
{% endif %}
{% assign date_format = site.minima_reboot.date_format_short | default: "%b %-d" %}
<tr>
<td class="text-right align-top text-truncate"><time class="text-secondary" datetime="{{ post.date | date:"%Y-%m-%d" }}">{{ post.date | date: date_format }}</time></td>
<td class="text-center align-top px-1">|</td>
<td class="text-left align-top"><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title | escape }}</a></td>
</tr>
{% if forloop.last %}
</table>
{% endif %}
{% capture prev_year %}{{ year }}{% endcapture %}
{% endfor %}
<div class="pt-3"></div>
{% if site.plugins contains "jekyll-feed" %}
<a href="{{ "/feed.xml" | relative_url }}"><div id="rss-icon" class="mb-2"></div></a>
{% endif %}

View File

@@ -0,0 +1,10 @@
---
# Jekyll layout that compresses HTML
# v3.0.4
# http://jch.penibelst.de/
# © 20142015 Anatol Broder
# MIT License
---
{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}

View File

@@ -0,0 +1,23 @@
---
layout: compress
---
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: "en" }}">
{% include head.html %}
<body>
{% include header.html %}
<main aria-label="Content">
<div class="container">
{{ content }}
</div>
</main>
{% include footer.html %}
</body>
</html>

52
docs/_layouts/home.html Normal file
View File

@@ -0,0 +1,52 @@
---
layout: default
---
<header class="pt-3 mb-3">
{{ content }}
</header>
<div id="content">
{% if site.paginate %}
{% assign posts = paginator.posts %}
{% else %}
{% assign posts = site.posts %}
{% endif %}
<ul class="list-unstyled m-0">
{% assign date_format = site.minima_reboot.date_format | default: "%b %-d, %Y" %}
{% for post in posts %}
<li class="py-2">
<span class="text-secondary">{{ post.date | date: date_format }}</span>
<h1 class="mt-1 mb-3 h3">
<a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
</h1>
<div class="text-justify">
{{ post.excerpt }}
</div>
</li>
{% endfor %}
</ul>
{% if site.paginate %}
<nav class="py-1" aria-label="Blog page navigation">
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path | relative_url }}">&laquo; Previous</a>
{% endif %}
Page: {{ paginator.page }} of {{ paginator.total_pages }}
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path | relative_url }}">Next &raquo;</a>
{% endif %}
</nav>
{% endif %}
{% if site.plugins contains "jekyll-feed" %}
<a href="{{ "/feed.xml" | relative_url }}"><div id="rss-icon" class="mb-2"></div></a>
{% endif %}
</div>

14
docs/_layouts/page.html Normal file
View File

@@ -0,0 +1,14 @@
---
layout: default
---
<article>
<header class="pt-4 pb-3">
<h1>{{ page.title | escape }}</h1>
</header>
<div id="content">
{{ content }}
</div>
</article>

33
docs/_layouts/post.html Normal file
View File

@@ -0,0 +1,33 @@
---
layout: default
---
<article itemscope itemtype="http://schema.org/BlogPosting">
<header class="pt-4 pb-3">
<h1 itemprop="name headline">{{ page.title | escape }}</h1>
<p class="text-secondary">
{% if page.author %}
{% if page.author_url %}
<a href="{{ page.author_url }}">
{% endif %}
<span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>
{% if page.author_url %}
</a>
{% endif %}
&bull;
{% endif %}
<time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
{% assign date_format = site.minima_reboot.date_format | default: "%b %-d, %Y" %}
{{ page.date | date: date_format }}
</time>
</p>
</header>
<div class="text-justify" itemprop="articleBody" id="content">
{{ content }}
</div>
{% if site.disqus.shortname %}
{% include disqus_comments.html %}
{% endif %}
</article>

25
docs/_pages/404.html Normal file
View File

@@ -0,0 +1,25 @@
---
layout: default
permalink: /404.html
---
<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>
<div class="container">
<h1>404</h1>
<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>

29
docs/_pages/about.md Normal file
View File

@@ -0,0 +1,29 @@
---
layout: page
title: About
permalink: /about/
---
NextEPC is a C-language Open Source implementation of the 3GPP Evolved Packet Core, i.e. the core network of an LTE network.
#### Supported Features
---
- LTE release 14 complient
- AES, Snow3G, ZUC algorithms for encryption
- Support of USIM cards using Milenage
- Multiple PDN support
- S1/X2 Handover
- IPv6 support
- Supports several IMS servers with Rx interface.
#### Known Limitations
---
- No OCS/OFCS
- No NB-IoT
- No eMBMS
- No CS Fallback and SRVCC
- No Roaming
- No Emergency Call
- No ePDG Gateway

22
docs/_pages/docs.md Normal file
View File

@@ -0,0 +1,22 @@
---
layout: page
title: Documentation
permalink: /docs/
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
- User's Guide
- [Quickstart](guide/01-quickstart)
- [Building nextepc from Sources](guide/02-building-nextepc-from-sources)
- [Splitting Network Elements](guide/03-splitting-network-elements)
- Tutorials
- [Your First LTE](tutorial/01-your-first-lte)
- Platform Specific Notes
- [Debian/Ubuntu](platform/01-debian-ubuntu)
- [CentOS](platform/02-centos)
- [Fedora](platform/03-fedora)
- [FreeBSD](platform/04-freebsd)
- [MacOSX](platform/05-macosx)
- [Ubuntu(Trusty)](platform/06-ubuntu-trusty)

490
docs/_pages/faq.md Normal file
View File

@@ -0,0 +1,490 @@
---
layout: page
title: FAQ
permalink: /faq/
---
#### Is it possible to setup IP/NAT table along with Docker?
The following is the default docker IP/NAT table.
```
$ sudo iptables-save
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*nat
:PREROUTING ACCEPT [74:4820]
:INPUT ACCEPT [4:208]
:OUTPUT ACCEPT [49:3659]
:POSTROUTING ACCEPT [49:3659]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*filter
:INPUT ACCEPT [651:514108]
:FORWARD DROP [70:4612]
:OUTPUT ACCEPT [590:63846]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
```
Create **newtables** file as below.
```diff
$ diff -u oldtables newtables
--- oldtables 2019-06-01 23:43:50.354974226 +0900
+++ newtables 2019-06-01 23:44:16.110931684 +0900
@@ -8,6 +8,7 @@
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
+-A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
@@ -26,6 +27,10 @@
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
+-A FORWARD -o pgwtun -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A FORWARD -o pgwtun -j DOCKER
+-A FORWARD -i pgwtun ! -o pgwtun -j ACCEPT
+-A FORWARD -i pgwtun -o pgwtun -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
```
And then, apply **newtables** as below.
```
$ sudo iptables-restore < newtables
```
The above operation is the same as described in the following manuals.
```
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o pgwtun -j MASQUERADE
```
#### How to use a different APN for each PGW
By default, MME selects the PGW as the first PGW node. To use a different APN for each PGW, specify gtpc.apn as the APN name. If the HSS uses WebUI to set the PGW IP for each UE, you can use a specific PGW node for each UE.
See the following example.
```
### For reference, see `nextepc.conf`
#------------------------ MME --------------------------
#
# o Two PGW are defined. 127.0.0.3:2123 is used.
# [fe80::3%lo]:2123 is ignored.
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%lo
#
# o One PGW is defined. if prefer_ipv4 is not true,
# [fe80::3%lo] is selected.
# gtpc:
# - addr:
# - 127.0.0.3
# - fe80::3%lo
#
# o Two PGW are defined with a different APN.
# - Note that if PGW IP for UE is configured in HSS,
# the following configurion for this UE is ignored.
# gtpc:
# - addr: 127.0.0.3
# apn: internet
# - addr: 127.0.0.5
# apn: volte
#
# o If APN is omitted, the default APN uses the first PGW node.
# gtpc:
# - addr: 127.0.0.3
# - addr: 127.0.0.5
# apn: volte
#
```
The IP address of the UE can also use a different UE pool depending on the APN.
```
### For reference, see `nextepc.conf`
#
# <UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
#
# ue_pool:
# addr: 45.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
# $ sudo ip addr add cafe:1::1/64 dev pgwtun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 45.46.0.1/16, cafe:2::1/64
# All other APNs use 45.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
# $ sudo ip addr add 45.46.0.1/16 dev pgwtun
# $ sudo ip addr add cafe:1::1/64 dev pgwtun
# $ sudo ip addr add cafe:2::1/64 dev pgwtun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 45.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: pgwtun)
# $ sudo ip addr add 45.45.0.1/16 dev pgwtun
# $ sudo ip addr add cafe:1::1/64 dev pgwtun2
# $ sudo ip addr add 45.46.0.1/16 dev pgwtun3
# $ sudo ip addr add cafe:2::1/64 dev pgwtun3
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# dev: pgwtun2
# - addr: 45.46.0.1/16
# apn: volte
# dev: pgwtun3
# - addr: cafe:2::1/64
# apn: volte
# dev: pgwtun3
#
```
#### How to connect MongoDB server
If you do not start MongoDB, you will get the following error:
```bash
➜ nextepc git:(master) ✗ ./test/testsimple
04/09 15:42:34.817: [core] ERROR: Failed to conect to server [mongodb://localhost/nextepc] (context.c:326)
04/09 15:42:34.817: [core] ERROR: app_initialize() failed (basic/abts-main.c:91)
s1ap_message_test : -04/09 15:42:34.830: [s1ap] ERROR: Failed to decode S1AP-PDU[-1] (s1ap_encoder.c:41)
04/09 15:42:34.830: [core] FATAL: ogs_log_vprintf: Assertion `domain' failed. (ogs-log.c:347)
```
You can start MongoDB using systemctl.
```bash
$ sudo systemctl start mongodb
```
#### Failing to run `./nextepc-epcd`
You might be getting the following error after running `./nextepc-epcd`.
```bash
➜ nextepc git:(master) ./nextepc-epcd
04/09 15:41:02.600: [core] INFO: NextEPC daemon start (main.c:169)
04/09 15:41:02.601: [core] ERROR: CHECK PERMISSION of Installation Directory... (application.c:144)
04/09 15:41:02.601: [core] ERROR: Cannot create PID file:`/home/acetcom/Documents/git/open5gs/nextepc/install/var/run/nextepc-epcd/pid` (application.c:145)
04/09 15:41:02.601: [core] WARNING: log_pid: should not be reached. (application.c:146)
/home/acetcom/Documents/git/open5gs/nextepc/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f9d5d26d71b]
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x9606)[0x563a4ba23606]
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x8640)[0x563a4ba22640]
/home/acetcom/Documents/git/open5gs/nextepc/.libs/nextepc-epcd(+0x81f3)[0x563a4ba221f3]
[1] 9635 abort (core dumped) ./nextepc-epcd
```
You should perform **the installation process**.
```bash
$ make install
```
#### I have some error when running `./test/testcomplex`
Did you see the following error after executing `testcomplex`?
```bash
➜ nextepc git:(master) ✗ ./test/testcomplex
s1setup_test : SUCCESS
attach_test : -Line 134: Condition is false, but expected true
\04/09 15:49:09.285: [esm] FATAL: esm_handle_pdn_connectivity_request: Assertion `SECURITY_CONTEXT_IS_VALID(mme_ue)' failed. (esm_handler.c:29)
/home/acetcom/Documents/git/open5gs/nextepc/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f608518271b]
/home/acetcom/Documents/git/open5gs/nextepc/test/.libs/testcomplex(+0x92121)[0x55dc9e274121]
/home/acetcom/Documents/git/open5gs/nextepc/test/.libs/testcomplex(+0x4f5b9)[0x55dc9e2315b9]
```
Remove all subscriber information using MongoDB Client
```
$ mongo
> db.subscribers.find() ### Check the test subscriber
> db.subscribers.drop() ### Remove all subscriber
> db.subscribers.find() ### Check that all subscribers are empty
```
Kill all processes.
```bash
$ ps -ef | grep testcomplex
$ ps -ef | grep nextepc
$ sudo pkill -9 testcomplex
$ sudo pkill -9 nextepc-epcd ...
```
Execute `testcomplex`
```bash
$ ./test/testcomplex
```
#### My eNB does not support IPv6.
Your eNodeB don't have to support IPv6.
If the sgw.gtpu configuration does not have an IPv6 address, the eNodeB can use IPv4 to connect to the MME and SGW. If the sgw.gtpu setting has an IPv6 address, you can disable the IPv6 address as shown below.
```yaml
parameter:
no_ipv6: true
```
**Note:** This parameter `no_ipv6` is only applied to EPC Elements such as MME, SGW, and so on. The parameter `no_ipv6` does not affect to UE. So, IPv6-enabled UE can connect to NextEPC LTE network.
{: .notice--warning}
#### Unable to add new user by WebUI
It might be a CSRF token mismatch error.
Please, delete corresponding cookies, cache, session data etc.
#### Change Domain from localdomain to anything else
You should configure the domain name on your computer. Otherwise, freeDiameter raise an error.
#### How many of UEs can NextEPC support?
See the [lib/base/types.h](https://github.com/{{ site.github_username }}/nextepc/blob/master/lib/base/types.h).
```
#define MAX_NUM_OF_ENB 128
#define MAX_NUM_OF_UE 128
#define MAX_NUM_OF_SESS 4
#define MAX_NUM_OF_BEARER 4
#define MAX_NUM_OF_TUNNEL 3 /* Num of Tunnel per Bearer */
#define MAX_NUM_OF_PF 16 /* Num of Packet Filter per Bearer */
#define MAX_POOL_OF_UE (MAX_NUM_OF_ENB * MAX_NUM_OF_UE)
#define MAX_POOL_OF_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
#define MAX_POOL_OF_BEARER (MAX_POOL_OF_SESS * MAX_NUM_OF_BEARER)
#define MAX_POOL_OF_TUNNEL (MAX_POOL_OF_BEARER * MAX_NUM_OF_TUNNEL)
#define MAX_POOL_OF_PF (MAX_POOL_OF_BEARER * MAX_NUM_OF_PF)
#define MAX_POOL_OF_DIAMETER_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
```
Currently, the number of UE is limited to `128*128`.
#### What is the Default Configuration?
- Network
```
* MME
S1AP: listen on all address avaiable in system
GTP-C: listen on the first IP address in system
DIAMETER: 127.0.0.2 (No TLS)
* SGW
GTP-C: 127.0.0.2
GTP-U: listen on the first IP address in system
* PGW
GTP-C: Both 127.0.0.3 and [::1]
GTP-U: Both 127.0.0.3 and [::1]
DIAMETER: 127.0.0.3 (No TLS)
* HSS
DIAMETER: 127.0.0.4 (No TLS)
* PCRF
DIAMETER: 127.0.0.5 (No TLS)
```
- GUMMEI, PLMN and TAC
```
* GUMMEI
PLMN ID - MNC: 001, MCC: 01
MME Group : 2
MME Code : 1
* TAI
PLMN ID - MNC: 001, MCC: 01
TAC : 12345
```
- Security
```
* Integrity : EIA1 - Snow 3G
* Ciphering : EEA0 - Nothing
```
- UE Network
```
* IPv4 : 45.45.0.1/16
* IPv6 : cafe::1/64
```
- DNS
```
* IPv4
Primary : 8.8.8.8
Secondary : 8.8.4.4
* IPv6
Primary : 2001:4860:4860::8888
Secondary : 2001:4860:4860::8844
```
#### The parsing errors are caused by tab spaces in the configuration files.
YAML forbids tabs. You should use space instead of tab in NextEPC configuration file.
```markdown
YAML FAQ: Why does YAML forbid tabs?
Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
```
#### Cross compilation setup
By default, NextEPC is designed to support the Embedding System. To do so, we introduced pool-based memory management. Unfortunately, we have not tested NextEPC in an embedded environment. I tried to compile on the ARM architecture using Docker and run it with QEMU for your reference.
- We'll use Debian Docker Environment.
```bash
$ git clone -r https://github.com/acetcom/nextepc
$ cd nextepc/docker
$ DIST=debian docker-compose run dev
```
- In Docker Container
```bash
acetcom@nextepc-dev:~$ sudo dpkg --add-architecture armel
acetcom@nextepc-dev:~$ sudo apt-get install libsctp-dev:armel libyaml-dev:armel libgnutls28-dev:armel libgcrypt-dev:armel libssl-dev:armel libmongoc-dev:armel libbson-dev:armel
acetcom@nextepc-dev:~$ sudo apt-get install crossbuild-essential-armel
acetcom@nextepc-dev:~$ sudo apt-get install qemu
acetcom@nextepc-dev:~$ mkdir git
acetcom@nextepc-dev:~$ cd git/
acetcom@nextepc-dev:~/git$ git clone https://github.com/acetcom/nextepc
acetcom@nextepc-dev:~/git$ cd nextepc/
acetcom@nextepc-dev:~/git/nextepc$ autoreconf -if;./configure --prefix=`pwd`/install --host=arm-linux-gnueabi;make -j 2
acetcom@nextepc-dev:~/git/nextepc$ make install
acetcom@nextepc-dev:~/git/nextepc$ qemu-arm .libs/nextepc-mmed
NextEPC daemon v0.3.10 - Oct 4 2018 13:24:24
[10/04 13:38:06.329] WARN: pid file /home/acetcom/git/nextepc/install/var/run/nextepc-mmed/pid overwritten -- Unclean shutdown of previous NextEPC run? (application.c:113)
PID[55780] : '/home/acetcom/git/nextepc/install/var/run/nextepc-mmed/pid'
File Logging : '/home/acetcom/git/nextepc/install/var/log/nextepc/nextepc.log'
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
MongoDB URI : 'mongodb://mongodb/nextepc'
Configuration : '/home/acetcom/git/nextepc/install/etc/nextepc/nextepc.conf'
[10/04 13:38:06.400] MME try to initialize
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ipip
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ip6tnl
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ipip
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ip6tnl
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
[10/04 13:38:08.693] gtp_server() [172.20.0.2]:2123
[10/04 13:38:08.696] gtp_client() [127.0.0.2]:2123
Unsupported setsockopt level=132 optname=11
[10/04 13:38:08.697] ERRR: Unable to subscribe to SCTP events: (92:Protocol not available) (unix/sctp.c:291)
[10/04 13:38:08.699] ASSERT: !(rv == CORE_OK). (unix/sctp.c:33)
[10/04 13:38:08.700] ERRR: sctp_server() [172.20.0.2]:36412 failed(92:Protocol not available) (unix/sctp.c:98)
[10/04 13:38:08.701] ASSERT: !(rv == CORE_OK). (s1ap_sctp.c:35)
[10/04 13:38:08.702] ASSERT: !(rv == CORE_OK). (s1ap_path.c:53)
[10/04 13:38:08.703] ASSERT: !(rv == CORE_OK). (s1ap_path.c:28)
[10/04 13:38:08.704] ERRR: Can't establish S1AP path (mme_sm.c:63)
[10/04 13:38:08.708] MME initialize...done
[10/04 13:38:08.710] INFO: NextEPC daemon start (main.c:157)
```
The SCTP module is not included in the QEMU kernel. I believe that if the Linux kernel installed on your target platform contains an SCTP module, it will work normally.
{: .notice--warning}

5
docs/_pages/github.md Normal file
View File

@@ -0,0 +1,5 @@
---
title: GitHub
redirect_to:
- https://github.com/open5gs/nextepc
---

5
docs/_pages/home.md Normal file
View File

@@ -0,0 +1,5 @@
---
layout: allposts
list_title: News
permalink: /
---

View File

@@ -0,0 +1,9 @@
---
title: "Programming started."
date: 2017-02-01 19:48:49 +0900
categories:
- Release
tags:
- News
- Release
---

View File

@@ -0,0 +1,11 @@
---
title: "First version released."
date: 2017-10-09 11:03:15 +0900
categories:
- Release
tags:
- News
- Release
---
- Assets -- [v0.1.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.0.tar.gz)

View File

@@ -0,0 +1,12 @@
---
title: "v0.1.1 - Fix the bug related to Mongo C Driver"
date: 2017-10-11 15:46:45 +0900
categories:
- Release
tags:
- News
- Release
---
- Fix the bug related to Mongo C Driver. [[More Info](https://github.com/open5gs/nextepc/commit/4245502ae287df9c457621b3f4cccb519c4d4878)]
- Assets -- [v0.1.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.1.1.tar.gz)

View File

@@ -0,0 +1,14 @@
---
title: "v0.2.0 - Package Publish, Support More OS"
date: 2017-11-02 17:21:21 +0900
categories:
- Release
tags:
- News
- Release
---
- Publish Debian/Ubuntu Package
- Support FreeBSD and Mac OS X"
- Assets -- [v0.2.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.2.0.tar.gz)

View File

@@ -0,0 +1,14 @@
---
title: "v0.3.0 - IPv6 Support, Change Configuration File Format"
date: 2017-12-18 20:57:47 +0900
categories:
- Release
tags:
- News
- Release
---
- IPv6 Support (Linux Only)
- Change Configuration File (JSON -> YAML)
- Assets -- [v0.3.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.0.tar.gz)

View File

@@ -0,0 +1,12 @@
---
title: "v0.3.1 - Bug Fixes"
date: 2017-12-31 22:20:39 +0900
categories:
- Release
tags:
- News
- Release
---
- Add Authentication Synch Failure ([#11](https://github.com/open5gs/nextepc/issues/11)) -- [eric80s](https://github.com/eric80s)
- Assets -- [v0.3.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.1.tar.gz)

View File

@@ -0,0 +1,20 @@
---
title: "v0.3.3 - Docker Support"
date: 2018-02-13 04:50:34 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New
- Docker support ([#16](https://github.com/open5gs/nextepc/issues/16)) -- [amilenovic](https://github.com/amilenovic)
#### Bug fixes
- Fix the BUG for MAC failure of authentication failure -- [#17](https://github.com/open5gs/nextepc/issues/17) from [razaborg](https://github.com/razaborg)
- Fix the BUG for EPS attach type of Attach accept -- [#12](https://github.com/open5gs/nextepc/issues/12) from [pcminitech](https://github.com/pcminitech)
Download -- [v0.3.3.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.3.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,20 @@
---
title: "v0.3.5 - Support Network Name"
date: 2018-03-06 12:43:34 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New
- Support Network Name ([#22](https://github.com/open5gs/nextepc/pull/22)) -- [medeiros405](https://github.com/medeiros405)
#### Bug fixes
- Fix the BUG for security capabilities mismatch ([#27](https://github.com/open5gs/nextepc/issues/27)) -- [wayne43290](https://github.com/wayne43290)
- Fix the BUG that SGW process is dead during paging process ([#18](https://github.com/open5gs/nextepc/issues/18)) -- [jackson040407](https://github.com/jackson040407)
Download -- [v0.3.5.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.5.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,15 @@
---
title: "v0.3.6 - More S1AP Message"
date: 2018-03-21 08:05:56 +0900
categories:
- Release
tags:
- News
- Release
---
- Support eNB/MME Configuration Transfer, Error Indication ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Increase SCTP recv buffer : 2048->8192 ([#35](https://github.com/open5gs/nextepc/issues/35)) -- [EugeneBogush](https://github.com/EugeneBogush)
Download -- [v0.3.6.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.6.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,12 @@
---
title: "v0.3.7 - S1AP supports Release 14.4.0"
date: 2018-04-14 15:04:04 +0900
categories:
- Release
tags:
- News
- Release
---
Download -- [v0.3.7.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.7.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,23 @@
---
title: "v0.3.9 - Support NAS encryption"
date: 2018-06-03 01:42:05 +0000
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New
- Support NAS encryption(EEA1/EEA2/EEA3)
#### Bug fixes
- Confirm with 36.412 requirement of SCTP stream id ([#54](https://github.com/open5gs/nextepc/issues/54)) -- [brchiu](https://github.com/brchiu)
- Fix to set correct timezone in UE ([#61](https://github.com/open5gs/nextepc/pull/61)) -- [medeiros405](https://github.com/medeiros405)
- Fix to change MME's integrity order ([#64](https://github.com/open5gs/nextepc/issues/64)) -- [kewinrausch](https://github.com/kewinrausch)
- Fix the bug for tracking area update ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
- Fix the bug for indirect tunnel ([#29](https://github.com/open5gs/nextepc/issues/29)) -- [wayne43290](https://github.com/wayne43290)
Download -- [v0.3.9.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.9.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,21 @@
---
title: "v0.3.10 - Bug Fixes"
date: 2018-08-17 04:28:50 +0000
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Bug fixes
- Renew freeDiameter Certificate ([#93](https://github.com/open5gs/nextepc/issues/93), [#94](https://github.com/open5gs/nextepc/issues/94)) -- [Ravi-t](https://github.com/Ravi-t), [hchenji](https://github.com/hchenji)
- Fix TLV uint32 bug ([#73](https://github.com/open5gs/nextepc/pull/73)) -- [giuliol](https://github.com/giuliol)
- Add TRACE for IP address of connected UEs ([#71](https://github.com/open5gs/nextepc/issues/71)) -- [pgupta408](https://github.com/Ravi-t)
- Show reason string for YAML parser error ([#40](https://github.com/open5gs/nextepc/issues/40)) -- [Raw1mage](https://github.com/Raw1mage)
- Fix compile error for GCC 8.1
- Fix compile error for Mongo-C-Driver 1.11
Download -- [v0.3.10.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.10.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,28 @@
---
title: "v0.3.11 - First version in 2019"
date: 2019-04-28 20:28:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancements
- Support 4-bytes RES in NAS Auth ([#147](https://github.com/open5gs/nextepc/issues/147)) -- [Ranjjiitsingh](https://github.com/Ranjjiitsingh)
- Add SGW selection mode ([#100](https://github.com/open5gs/nextepc/pull/100)) -- [TerryAlu](https://github.com/TerryAlu)
#### Bug fixes
- Increase packet memory buffer ([#161](https://github.com/open5gs/nextepc/issues/161)) -- [mathieuxilan](https://github.com/mathieuxilan)
- Fix setting END-ID to 0 ([#156](https://github.com/open5gs/nextepc/issues/156)) -- [hypercloud2017](https://github.com/hypercloud2017)
- Fix incorrect timezone in NAS & GTP ([#140](https://github.com/open5gs/nextepc/issues/140)) -- [EugeneBogush](https://github.com/EugeneBogush)
#### Miscellaneous
- nas_message.py: Fix copy+paste error([#159](https://github.com/open5gs/nextepc/issues/159)) -- [laf0rge](https://github.com/laf0rge)
- Fix missing 'break' statement ([#129](https://github.com/open5gs/nextepc/pull/129)) -- [EugeneBogush](https://github.com/EugeneBogush)
- Add missing C namespace ([#109](https://github.com/open5gs/nextepc/pull/109)) -- [brchiu](https://github.com/brchiu)
- Refine EXIT routine for daemon process
Download -- [v0.3.11.tar.gz](https://github.com/open5gs/nextepc/archive/v0.3.11.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,20 @@
---
title: "v0.4.0 - Integration with OGSLib"
date: 2019-04-29 23:44:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancements
- Integration with OGSLib
- High CPU usage on idle ([#87](https://github.com/open5gs/nextepc/issues/87)) -- [hchenji](https://github.com/hchenji)
#### Bug fixes
- The problem related to MNC of LENGTH 3 ([#163](https://github.com/open5gs/nextepc/issues/163)) -- [Avi-Dekra](https://github.com/Avi-Dekra)
Download -- [v0.4.0.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.0.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,24 @@
---
title: "v0.4.1 - Bug fixes & minor changes"
date: 2019-05-18 19:06:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Minor changes
- Rearrange the initialization order [[2d74383](https://github.com/open5gs/nextepc/commit/2d7438313d7426ca3ad4591f090b7f8564257fb7)]
- Remove ____DATE____ and ____TIME____ from all source code to make the same binary. [[c8ed909](https://github.com/open5gs/nextepc/commit/c8ed909f4680225490ac23d2d56e7d8f8112d6f6)]
- Improve sanity checks when queues cannot be pushed [[bc180c3](https://github.com/open5gs/nextepc/commit/bc180c3ffc431a06a49e0de1af71098fd91d561b)]
- Update document to correct typo ([#176](https://github.com/open5gs/nextepc/issues/176)) -- [iman432](https://github.com/iman432)
- Add UE address to LOG ([#178](https://github.com/open5gs/nextepc/pull/178)) -- [medeiros405](https://github.com/medeiros405)
#### Bug fixes
- Fix CentOS compilation errors and segmentation fault in test programs ([#175](https://github.com/open5gs/nextepc/issues/175)) -- [fefer](https://github.com/fefer)
- Modify the test program on MacOSX [ab81e38](https://github.com/open5gs/nextepc/commit/ab81e384879fdf51c667344fc8be912254dbec75)
Download -- [v0.4.1.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.1.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,20 @@
---
title: "v0.4.2 - Support a different APN for each PGW"
date: 2019-05-28 21:13:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancement
- Support a different APN for each PGW ([#183](https://github.com/open5gs/nextepc/issues/183))
- Attach Reject for an invalid APN name ([#187](https://github.com/open5gs/nextepc/issues/187)) -- [ravens](https://github.com/ravens)
#### Bug fixes
- Fix the PIDFile path of the systemd service ([#182](https://github.com/open5gs/nextepc/issues/182)) -- [smoein](https://github.com/smoein)
Download -- [v0.4.2.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.2.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,21 @@
---
title: "v0.4.3 - Enable SCTP_NODELAY"
date: 2019-06-22 16:42:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Enhancement
- Adjust the size of memory pool for SGW buffering ([#190](https://github.com/open5gs/nextepc/issues/190)) -- [lezixiao](https://github.com/lezixiao)
#### Bug fixes
- Enable SCTP_NODELAY and Fix the assertion ([#198](https://github.com/open5gs/nextepc/issues/198)) -- [lezixiao](https://github.com/lezixiao)
- Fix the assertion of handling a freeDiameter session ([#195](https://github.com/open5gs/nextepc/issues/195)) -- [lezixiao](https://github.com/lezixiao)
- Fix PGW coredump when GTP-U packet cannot find BEARER by TEID ([#194](https://github.com/open5gs/nextepc/issues/194)) -- [lezixiao](https://github.com/lezixiao)
Download -- [v0.4.3.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.3.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,22 @@
---
title: "v0.4.4 - The Multiple Attachment for same IMSI"
date: 2019-06-30 22:48:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### Bug fixes
- Move enb_ostream_id from mme_ue to enb_ue context ([#206](https://github.com/open5gs/nextepc/issues/206)) -- [lezixiao](https://github.com/lezixiao)
- Fix the MME crash EMM status following Initial Context Setup Response ([#205](https://github.com/open5gs/nextepc/issues/205)) -- [lezixiao](https://github.com/lezixiao)
- Fix the SGW crash for "Context Not Found" ([#204](https://github.com/open5gs/nextepc/issues/204)) -- [lezixiao](https://github.com/lezixiao)
- Fix the Multiple Attachment for same IMSI ([#203](https://github.com/open5gs/nextepc/issues/203)) -- [lezixiao](https://github.com/lezixiao)
- Add Handler of the Service Request and TAU Request in Security-mode state ([#202](https://github.com/open5gs/nextepc/issues/202)) -- [lezixiao](https://github.com/lezixiao)
- Fix Service reject handler ([#201](https://github.com/open5gs/nextepc/issues/201)) -- [lezixiao](https://github.com/lezixiao)
- Clear resources when SCTP-send failed ([#200](https://github.com/open5gs/nextepc/issues/200)) -- [lezixiao](https://github.com/lezixiao)
Download -- [v0.4.4.tar.gz](https://github.com/open5gs/nextepc/archive/v0.4.4.tar.gz)
{: .notice--info}

View File

@@ -0,0 +1,6 @@
@charset "utf-8";
@import
"minima-reboot/layout",
"minima-reboot/syntax-highlighting"
;

View File

@@ -0,0 +1,73 @@
$layout-color-border: #e9ecef !default;
$layout-color-background: #fdfdfd !default;
$layout-color-syntax-highlighting-background: #f8f9fa !default;
$layout-responsive-nav-cutoff: 768px !default;
body {
background-color: $layout-color-background;
}
#nav-header {
border-top: 5px solid !important;
border-bottom: 1px solid $layout-color-border !important;
}
#nav-container {
height: 3.5rem;
}
#nav-menu-container {
@media (max-width: $layout-responsive-nav-cutoff - 1) {
position: absolute;
z-index: 100;
top: 0.4375rem;
right: 1rem;
border: 1px solid $layout-color-border;
border-radius: .25rem;
background-color: $layout-color-background;
}
}
#nav-trigger-label {
height: 1.5rem;
width: 1.5rem;
cursor: pointer;
}
#nav-trigger:checked ~ #nav-menu {
display: block !important;
}
#content {
h1, h2, h3, h4 {
margin-top: 2rem;
margin-bottom: 1rem;
text-align: left;
}
blockquote {
border-left: 4px solid $layout-color-border;
padding-left: 1rem;
font-style: italic
}
.footnotes {
text-align: left;
}
#rss-icon {
height: 1.5rem;
width: 1.5rem;
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='rgb(134, 142, 150)' d='M119.9,336.1c-30.8,0-55.9,25.1-55.9,55.8c0,30.8,25.1,55.6,55.9,55.6c30.9,0,55.9-24.9,55.9-55.6,C175.8,361.2,150.8,336.1,119.9,336.1z'/%3E%3Cpath fill='rgb(134, 142, 150)' d='M64,192v79.9c48,0,94.1,14.2,128,48.1c33.9,33.9,48,79.9,48,128h80C320,308.1,204,192,64,192z'/%3E%3Cpath fill='rgb(134, 142, 150)' d='M64,64v79.9c171,0,303.9,133,303.9,304.1H448C448,236.3,276,64,64,64z'/%3E%3C/svg%3E")
}
}
#site-footer {
border-top: 1px solid $layout-color-border;
}
.highlight pre {
border: 1px solid $layout-color-border;
border-radius: .25rem;
background-color: $layout-color-syntax-highlighting-background;
padding: 0.75rem;
margin-bottom: 1rem;
white-space: pre-wrap;
}

View File

@@ -0,0 +1,61 @@
.highlight {
.c { color: #998; font-style: italic } // Comment
.err { color: #a61717; background-color: #e3d2d2 } // Error
.k { font-weight: bold } // Keyword
.o { font-weight: bold } // Operator
.cm { color: #998; font-style: italic } // Comment.Multiline
.cp { color: #999; font-weight: bold } // Comment.Preproc
.c1 { color: #998; font-style: italic } // Comment.Single
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
.gd { color: #000; background-color: #fdd } // Generic.Deleted
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
.ge { font-style: italic } // Generic.Emph
.gr { color: #a00 } // Generic.Error
.gh { color: #999 } // Generic.Heading
.gi { color: #000; background-color: #dfd } // Generic.Inserted
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
.go { color: #888 } // Generic.Output
.gp { color: #555 } // Generic.Prompt
.gs { font-weight: bold } // Generic.Strong
.gu { color: #aaa } // Generic.Subheading
.gt { color: #a00 } // Generic.Traceback
.kc { font-weight: bold } // Keyword.Constant
.kd { font-weight: bold } // Keyword.Declaration
.kp { font-weight: bold } // Keyword.Pseudo
.kr { font-weight: bold } // Keyword.Reserved
.kt { color: #458; font-weight: bold } // Keyword.Type
.m { color: #099 } // Literal.Number
.s { color: #d14 } // Literal.String
.na { color: #008080 } // Name.Attribute
.nb { color: #0086B3 } // Name.Builtin
.nc { color: #458; font-weight: bold } // Name.Class
.no { color: #008080 } // Name.Constant
.ni { color: #800080 } // Name.Entity
.ne { color: #900; font-weight: bold } // Name.Exception
.nf { color: #900; font-weight: bold } // Name.Function
.nn { color: #555 } // Name.Namespace
.nt { color: #000080 } // Name.Tag
.nv { color: #008080 } // Name.Variable
.ow { font-weight: bold } // Operator.Word
.w { color: #bbb } // Text.Whitespace
.mf { color: #099 } // Literal.Number.Float
.mh { color: #099 } // Literal.Number.Hex
.mi { color: #099 } // Literal.Number.Integer
.mo { color: #099 } // Literal.Number.Oct
.sb { color: #d14 } // Literal.String.Backtick
.sc { color: #d14 } // Literal.String.Char
.sd { color: #d14 } // Literal.String.Doc
.s2 { color: #d14 } // Literal.String.Double
.se { color: #d14 } // Literal.String.Escape
.sh { color: #d14 } // Literal.String.Heredoc
.si { color: #d14 } // Literal.String.Interpol
.sx { color: #d14 } // Literal.String.Other
.sr { color: #009926 } // Literal.String.Regex
.s1 { color: #d14 } // Literal.String.Single
.ss { color: #990073 } // Literal.String.Symbol
.bp { color: #999 } // Name.Builtin.Pseudo
.vc { color: #008080 } // Name.Variable.Class
.vg { color: #008080 } // Name.Variable.Global
.vi { color: #008080 } // Name.Variable.Instance
.il { color: #099 } // Literal.Number.Integer.Long
}

Some files were not shown because too many files have changed in this diff Show More