Osmo-uecups » History » Version 4
laforge, 04/27/2020 02:52 PM
1 | 1 | laforge | h1. osmo-uecups |
---|---|---|---|
2 | |||
3 | 2 | laforge | *osmo-uecups* (for _UE Control/User Plane Separation_) is a special-purpose project which emulates the UE/MME/SGW/SGSN side of GTP tunnels. This can be used in a variety of test use cases where a P-GW or GGSN (or GTP roaming hub) should be tested with a variety of GTP sessions/tunnels/bearers. |
4 | 1 | laforge | |
5 | This project is currently under development, hence there's no documentation yet. |
||
6 | |||
7 | 3 | laforge | An initial announcment can be found in the Eclipse TITAN Forum at https://www.eclipse.org/forums/index.php/t/1103391/ |
8 | |||
9 | 4 | laforge | |
10 | h2. Usage in PGW testing |
||
11 | |||
12 | The diagram below illustrates how the @osmo-uecups-daemon@ is used in testing of a PGW: |
||
13 | |||
14 | {{graphviz_link() |
||
15 | digraph G { |
||
16 | rankdir=LR; |
||
17 | ATS [label="Test Suite"]; |
||
18 | PGW [label="PGW (under test)"]; |
||
19 | daemon [label="osmo-uecups-daemon",color="red"]; |
||
20 | |||
21 | ATS -> PGW [label="GTP2C"]; |
||
22 | ATS -> daemon [label="UECUPS/SCTP"]; |
||
23 | |||
24 | daemon -> PGW [label="GTP1U"]; |
||
25 | |||
26 | PGW -> Internet [label="Gi"]; |
||
27 | subgraph cluster_foo { |
||
28 | label="netns"; |
||
29 | program [label="program\n(e.g. ping)"]; |
||
30 | } |
||
31 | program -> daemon [label="IP"]; |
||
32 | } |
||
33 | }} |
||
34 | |||
35 | h3. osmo-uecups-daemon |
||
36 | |||
37 | @osmo-uecups-daemon@ has the following functionality |
||
38 | |||
39 | * receives instructions from the Test Suite via a JSON based "UECUPS" protcol |
||
40 | ** *create_tun* creates a tunnel and an associaed network namespace with tun device inside |
||
41 | ** *destroy_tun* destroys a previously created tunnel |
||
42 | ** *start_program* executes a specified command/program within the network namespace of the tunnel |
||
43 | ** *reset_all_state* deletes all tunnels, tun devices, network namespaces and kills all started programs |
||
44 | * encapsulates packets arriving on the tun devices into GTP1U and sends them to the PGW |
||
45 | * decapsulates GTP1u received from the PGW and passses them via the respective tun device [in the respective netns] |
||
46 | |||
47 | h3. TTCN3 integration |
||
48 | |||
49 | There are the following TTCN3 modules for integration into TTCN3 test suites, specifically using Eclipse TITAN: |
||
50 | |||
51 | * *UECUPS_Types.ttcn* contains abstract types used for the UECUPS protocol with the daemon (encoding/decoding of JSON performed automatically/implicitly by TITAN) |
||
52 | * *UECUPS_CodecPort.ttcn* contains the definition of a transcoding port on top of the IPL4asp_PT (SCTP) |
||
53 | ** *UECUPS_CodecPort_CtrlFunct.ttcn* and *UECUPS_CodecPort_CtrlFunctDef.cc* are related helpers |
||
54 | |||
55 | For an example using all of the above, see the code in |
||
56 | http://git.osmocom.org/osmo-ttcn3-hacks/tree/pgw/PGW_Tests.ttcn |
||
57 | |||
58 | h2. Source Code |
||
59 | 1 | laforge | |
60 | Source code can be found in git at https://git.osmocom.org/osmo-uecups/ |