-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathnotes.txt
More file actions
58 lines (42 loc) · 3.59 KB
/
notes.txt
File metadata and controls
58 lines (42 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Problems faced/facing:
[Solved for now] - Too many open files (For connections < 100)
[Solution]: Because a large number of sockets got created. This is because the constructor of Enodeb at UE side created an initial array of client sockets(10) for each UE and hence this alone created 100 * 10 = 1000 sockets for 100 UEs. This initial array creation is not necessary. Hence creating client sockets is moved while binding and a dummy value(-1) is assigned to client_socket in the constructor.
[Solved] - Somehow after the first run of UE traffic transmission, Socket FD of enodeb_client to SGW gets closed, because of which, it is not able to transfer data
[Solution]: This is because, an enodeb object is created during attach procedure from the UE side and the sockets that were closed belonged to this object and since a default value of 0 is assigned, these sockets actually messed up sockets which actually had socket_num as 0.
[Expected behaviour only] - Successive data transfer not working
[Reasoning]: Data plane side working in infinite loop. Hence no other threads can service the incoming request for data transfer.
[Solved/Possible Fix] - Getting this error *** Error in `./sgw': double free or corruption (fasttop): 0x0000000001412010 *** both at SGW and PGW when running for 20 UEs.
[Solution]: Following the rule of three/Four in C++
1. Copy constructor
2. Destructor
3. Assignment Operator
4. Move constructor
In the future, I might have to add the following in addition to the "constructors" that I already added
5. Move assignment operator
- Garbage values being received SOMETIMES(Threads - 10, Time - 100s) at MME/HSS instead of correctly sent values e.g Detach type number = 3 but MME received 1.
- Error "ctrl+c" - RAN disconnected for no known reason without printing any error message for Threads = 70
- Error "ctrl+c" - PGW disconnected for no known reason without printing any error message for Threads = 2 and Time = 3s
- Error "ctrl+c" - SGW disconnected for no known reason without printing any error message for Threads = 2, 20 and Time = 3s
- PGW is eratic in responding to SGW's Create Session request and Modify session request. In some cases, SGW is not even able to connect with the PGW for 'Create session request'.
- *** Error in `./pgw': corrupted double-linked list: 0x00007fc7d4080d00 *** at PGW for Threads = 2 and Time = 100s
- "ERROR: Invalid argument" at PGW while writing data into the rawsocket
- "ERROR: Invalid IP address" being received at SGW/RAN for some time when no. of simultaneous connections > 1
Findings/Bugs Solved:
- Number of sockets that can be opened simultaneously is 1021. Important thing is that this number(1021) might be fixed for a particular time, because other processes might increase the number of file descriptors at a later time, but I am not sure about this and I think this number should pretty much work fine.
- Changing "ulimit -n 4096" will reduce this problem. I can now create upto 1021 + (4096 - 1024) = 4093 connections!
- Finding the CPU utilization for a particular process using "top" command:
top -p $(pgrep pgw | tr \\n , | sed 's/,//')
- To create a mysql_dump file:
- mysqldump -p -u root --databases NFV > nfv.sql
- To recover a database:
- Create a database - NFV(Database which is contained in the restore file i.e."nfv.sql")
- Run the following command - "mysql -p -u root NFV < nfv.sql"
- To run the program through valgrind:
- sudo valgrind --tool=memcheck --leak-check=yes ./prog_name
Things to do:
- Encryption
- Integrity check
- Employing Distribution function
- Employing APN during registration
Doubts in the implementation:
1. GTP-C headers usage