Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support SRv6 mobile plugin #19

Closed
wants to merge 202 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
202 commits
Select commit Hold shift + click to select a range
3081564
SRv6 to GTP mapping
pcamaril Feb 14, 2018
a2c80a2
SRv6 to GTP mapping
pcamaril Feb 14, 2018
1d85b1e
Merge branch 'ietf104-hackathon' of github.com:filvarga/vpp into ietf…
Mar 2, 2019
367a492
IETF104: build scripts & configuration
Mar 5, 2019
235e3fe
IETF104: build issue fixed
Mar 6, 2019
881a551
IETF104: basic ipv6 configuration with automated setup of presentatio…
Mar 6, 2019
cbd0204
IETF104: cleanup cli and add extra features
Mar 6, 2019
568873f
IETF104: cleanup cli and add extra features
Mar 7, 2019
ba1e018
IETF104: bash support
Mar 7, 2019
caaa547
IETF104: docker step separation
Mar 8, 2019
106e1ee
IETF104: fixups
Mar 8, 2019
c3f2da9
IETF104: todo
Mar 8, 2019
0e58a2e
Add README
Mar 11, 2019
21d6cbd
README - formating
Mar 11, 2019
cc6b468
IETF104: pg functionality
Mar 17, 2019
e342c7a
IETF104: pg functionality improved
Mar 17, 2019
34acb5d
IETF104: resolving pg issues (need arp done)
Mar 18, 2019
ab8af57
IETF104: pg example done
Mar 18, 2019
3926936
IETF104: Add SRV6 base test.
Mar 19, 2019
8205192
IETF104: missing requirement
Mar 23, 2019
726bba1
CLI sr_policy gtp4_removal
Mar 23, 2019
caf9538
IETF104: tmap id creation + extras
Mar 23, 2019
f0dc20d
Merge pull request #1 from filvarga/ietf2
filvarga Mar 23, 2019
82344d5
IETF104: sr header offset computation and id computation
Mar 23, 2019
11a5568
Fix error.
Mar 23, 2019
71da851
IETF104: fixed runner ref
Mar 23, 2019
debf69e
IETF104: new srv6 endpoint module base code
Mar 23, 2019
062d224
IETF104: offset computation fix
Mar 23, 2019
a505bbe
IETF104: offset computation 2 fix
Mar 23, 2019
175f00f
correct GTP protocol version and GTP message type to G-PDU.
matsusato3 Mar 23, 2019
8337f15
IETF104: Fix offset error and wrong IP address.
Mar 23, 2019
d04d7a9
IETF104: TMAP - add support for 32 prefix length.
Mar 24, 2019
03aa6a2
IETF104: End.M.GTP4.E template code
Mar 24, 2019
ab89173
Merge branch 'ietf104-hackathon' of github.com:filvarga/srv6-mobile i…
Mar 24, 2019
44e2e0d
IETF104 - Add missing support for 32 prefix to all vector.
Mar 24, 2019
792f820
IETF104: Fix error, create src address.
Mar 24, 2019
daf539c
IETF104: Fix compile error.
Mar 24, 2019
9775455
IETF104: end.gtp create function
Mar 24, 2019
3e37920
IETF104: packet rewrite base
Mar 24, 2019
02cdf8d
IETF104: removed unused & fixed errors
Mar 24, 2019
a0389b4
IETF104: Clean srv6_end create function.
Mar 24, 2019
feb8a3d
IETF104: finished packet rewrite
Mar 24, 2019
1c4d5ae
Merge branch 'ietf104-hackathon' of github.com:filvarga/srv6-mobile i…
Mar 24, 2019
3844fca
IETF104: Fix error in policy rewrite.
Mar 24, 2019
c3f1bf5
Merge branch 'ietf104-hackathon' of github.com:filvarga/srv6-mobile i…
Mar 24, 2019
c4327de
IETF104: Add trace to srv6-end plugin.
Mar 24, 2019
45d23b1
IETF104: missing call fix
Mar 24, 2019
5049352
IETF104: examples for testing
Mar 24, 2019
2c47904
IETF104: Extend trace message for srv6-end.
Mar 24, 2019
82b2374
SRv6 MOBILE: prep template tests for End.M.GTP4.E, T.M.Tmap, End.M.GT…
filvarga Mar 27, 2019
388b9b4
SRv6 MOBILE: clean up
filvarga Mar 27, 2019
c98bf3c
SRv6 MOBILE: SRv6 End.M.GTP4.E notes and test prep
filvarga Mar 28, 2019
7bc5183
SRv6 MOBILE: fixing buffer offset & adding tests
filvarga Mar 31, 2019
d200eaf
modify test_tmap.
matsusato3 Apr 2, 2019
9d1adf0
correct tmap prefix position to the last SID in SRH.
matsusato3 Apr 5, 2019
98531aa
add pgroute and pg_create_interface4 for tmap test.
matsusato3 Apr 6, 2019
a193fdd
T.M.Tmap - add localsid prefix to CLI.
kozemcak Apr 8, 2019
ca7ecf4
fix TEID copy and the counter of the SID.
matsusato3 Apr 15, 2019
8fbebaa
Merge branch 'ietf104-hackathon' of https://github.com/filvarga/srv6-…
matsusato3 Apr 15, 2019
0d4ae9c
Edit show command and trace, fix CLI command.
kozemcak Apr 24, 2019
99f746e
Rename values: localsid_prefix -> local_prefix
kozemcak Apr 28, 2019
e8abc95
Fix the issue on tmap
tetsuya-arrcus Jun 14, 2019
5562f7b
Merge remote-tracking branch 'origin/master' into ietf104-hackathon
tetsuya-arrcus Jun 15, 2019
613a79b
fix the issue upon merging the master
tetsuya-arrcus Jun 17, 2019
4fa9d6d
Merge branch 'master' into ietf104-hackathon
tetsuya-arrcus Jun 17, 2019
0fc9544
Merge pull request #3 from TetsuyaMurakami/ietf104-hackathon
matsusato3 Jun 17, 2019
7b1a361
Merge pull request #4 from TetsuyaMurakami/master
matsusato3 Jun 17, 2019
0beca55
use clib_memcpy_fast
tetsuya-arrcus Jun 17, 2019
8dea818
cosmetic change
tetsuya-arrcus Jun 17, 2019
067e586
cosmetic change
tetsuya-arrcus Jun 17, 2019
6e4ebf7
Receover the original function in sr_policy_rewrite.c
tetsuya-arrcus Jun 18, 2019
5aa6230
Merge pull request #6 from TetsuyaMurakami/ietf104-hackathon
matsusato3 Jun 18, 2019
85b2571
previous function retired with lots of thanks.
matsusato3 Jun 19, 2019
207a574
to be ready for IETF105 hackathon.
matsusato3 Jun 19, 2019
9869332
rename the plugin name to srv6-mobile.
matsusato3 Jun 19, 2019
1a4f992
add gtp6.e/d and fix the issue on gtp4.e
TetsuyaMurakami Jun 19, 2019
04af781
fix length check
TetsuyaMurakami Jun 19, 2019
cfc9f09
add gtp6.e/d function and fix the issue on gtp4.e
tetsuya-arrcus Jun 19, 2019
cccc962
add gtp6.e/d function and fix the issue on gtp4.e
tetsuya-arrcus Jun 19, 2019
da1c48e
Merge branch 'ietf105-hackathon' of github-private:TetsuyaMurakami/sr…
TetsuyaMurakami Jun 19, 2019
597f6e8
correct TEID bite-order for gtp4e trace.
matsusato3 Jun 24, 2019
df1a2fa
gtp6.e/d
TetsuyaMurakami Jun 24, 2019
375a597
gtp6.d/d.di
TetsuyaMurakami Jun 24, 2019
c8d6568
gtp6.d
TetsuyaMurakami Jun 24, 2019
193cbfd
add sleep
TetsuyaMurakami Jun 24, 2019
9f8a638
gtp6.d
TetsuyaMurakami Jun 25, 2019
9b0e2aa
remove srh for non drop-in case
TetsuyaMurakami Jun 25, 2019
ce7d712
cosmetic change
TetsuyaMurakami Jun 25, 2019
96a0d55
remove bsid option for gtp6.d
TetsuyaMurakami Jun 26, 2019
4f6913f
remove bsid option for gtp6
TetsuyaMurakami Jun 26, 2019
0d613f8
modify test function
TetsuyaMurakami Jul 2, 2019
1876669
fix the crash issue
TetsuyaMurakami Jul 3, 2019
77d185c
fix the build issue
TetsuyaMurakami Jul 3, 2019
fdebd31
Move sr_prefix param to plugin memory
TetsuyaMurakami Jul 3, 2019
39edd8c
move sr prefix info to plugin mem
TetsuyaMurakami Jul 3, 2019
157ce70
move sr prefix info to plugin mem
TetsuyaMurakami Jul 3, 2019
895b965
fix the issue on plugin-memory
TetsuyaMurakami Jul 3, 2019
0cdad4b
update the runner script
TetsuyaMurakami Jul 3, 2019
fde5688
add trace
TetsuyaMurakami Jul 3, 2019
70fdc97
gtp6.d/e
TetsuyaMurakami Jul 4, 2019
ae64321
Merge remote-tracking branch 'upstream/ietf105-hackathon' into ietf10…
TetsuyaMurakami Jul 4, 2019
e916425
cosmetic change for trace
TetsuyaMurakami Jul 4, 2019
bc1b2fa
Merge pull request #7 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 4, 2019
f79897c
add gtp6 test case for non-drop-in scenario
TetsuyaMurakami Jul 5, 2019
dc5b3fe
Merge pull request #8 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 5, 2019
1a9a391
add test cases with inner IPv6 packet for GTP6 non-drop-in and GTP6 d…
TetsuyaMurakami Jul 7, 2019
b75177b
Merge pull request #9 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 8, 2019
f9ad02d
support the first nible check for gtp4.d
TetsuyaMurakami Jul 10, 2019
14a177b
add test case for gtp4.d with inner ipv6 packet
TetsuyaMurakami Jul 10, 2019
3c5afff
Support the prefix length for SID (#15)
TetsuyaMurakami Jul 10, 2019
120cf46
fix the build issue
TetsuyaMurakami Jul 11, 2019
c7ea5be
fix the issue on tmap test
TetsuyaMurakami Jul 11, 2019
01704c6
Merge pull request #19 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 11, 2019
73a7c24
fix the issue to embed TEID into IPv6 address
TetsuyaMurakami Jul 11, 2019
a7cf6c6
Merge pull request #24 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 12, 2019
c161904
reduce the size of the docker image, change the config term for gtp4.…
TetsuyaMurakami Jul 12, 2019
6086397
Merge remote-tracking branch 'upstream/ietf105-hackathon' into ietf10…
TetsuyaMurakami Jul 12, 2019
c2089eb
Merge pull request #27 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 12, 2019
0a4bf3e
reduce the docker image size
TetsuyaMurakami Jul 13, 2019
3333a83
Merge pull request #28 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 13, 2019
749627e
fix the build issue for the release image
TetsuyaMurakami Jul 13, 2019
f3ff978
Merge pull request #29 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 13, 2019
30a11e2
clean up the code
TetsuyaMurakami Jul 15, 2019
ad4849d
Merge pull request #30 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 16, 2019
d8a6e0d
Support the plug-in for gtp4.d
TetsuyaMurakami Jul 17, 2019
9f1f360
Support NH type config(#14)
TetsuyaMurakami Jul 17, 2019
370804c
Support NH type config(#14)
TetsuyaMurakami Jul 17, 2019
2ac064c
Merge pull request #31 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 17, 2019
9d9f527
clean up runner.py
TetsuyaMurakami Jul 17, 2019
5052c36
Support nhtype for gtp4.d, gtp6.d
TetsuyaMurakami Jul 18, 2019
cae902b
Merge pull request #32 from TetsuyaMurakami/ietf105-hackathon
matsusato3 Jul 18, 2019
11a00cd
fist text to describe how to play with SRv6 mobile user plane on VPP.
matsusato3 Jul 20, 2019
85f2080
add text to introduction.
matsusato3 Jul 20, 2019
c8dc17f
add text to introduction.
matsusato3 Jul 20, 2019
c95fa6e
add text to introduction.
matsusato3 Jul 20, 2019
f5c9cf4
add text to introduction.
matsusato3 Jul 20, 2019
c303542
add text to introduction.
matsusato3 Jul 20, 2019
d78d2bf
add text to introduction.
matsusato3 Jul 20, 2019
bdcedd1
add text and figure to get-started.
matsusato3 Jul 20, 2019
fa5dbf9
add text and figure to get-started.
matsusato3 Jul 20, 2019
23bbcd9
add text anf figure to test cases.
matsusato3 Jul 21, 2019
57dac08
add text and figures to test cases.
matsusato3 Jul 21, 2019
9fe8d61
add figure for ipv6 payload for gtp6 case.
matsusato3 Jul 21, 2019
28c867e
add text to test case.
matsusato3 Jul 21, 2019
9716ebf
explain runner.py.
matsusato3 Jul 25, 2019
d55e7a0
byte-order correction.
matsusato3 Jul 27, 2019
4df7af5
Merge branch 'ietf105-hackathon' of https://github.com/filvarga/srv6-…
matsusato3 Jul 27, 2019
0d70597
fix trace parameters in sr_policy_rewrite.
matsusato3 Sep 26, 2019
f570506
cosmetic change
TetsuyaMurakami Oct 3, 2019
79293fb
Support QFI mapping on GTP4/6.E/D
TetsuyaMurakami Oct 3, 2019
0ad1f3a
Support QFI mapping on GTP.M.4/6.D/E
TetsuyaMurakami Oct 3, 2019
edf0e86
delete ietf105
TetsuyaMurakami Oct 3, 2019
43242b4
support QFI mapping
TetsuyaMurakami Oct 3, 2019
615a074
support qfi mapping
TetsuyaMurakami Oct 3, 2019
aee2ac1
add test cases and fix the issue on the encap
TetsuyaMurakami Oct 4, 2019
e8bd712
Merge pull request #33 from TetsuyaMurakami/ietf106-hackathon
matsusato3 Oct 5, 2019
8e0a631
Update README.md
matsusato3 Oct 5, 2019
4ca955c
support IPv4 format on localsid command
TetsuyaMurakami Oct 5, 2019
5afb6f2
Merge branch 'ietf106-hackathon' of github-private:TetsuyaMurakami/sr…
TetsuyaMurakami Oct 5, 2019
720ff3a
Merge pull request #34 from TetsuyaMurakami/ietf106-hackathon
matsusato3 Oct 5, 2019
a72ddf6
add GTP-U 5G header support to sr_policy_rewrite.
matsusato3 Oct 6, 2019
aafc0f3
Merge pull request #35 from filvarga/tmap-5g
matsusato3 Oct 6, 2019
4fd79a5
modify QFI bit position in SRv6
TetsuyaMurakami Oct 6, 2019
6d43f9f
Merge remote-tracking branch 'upstream/ietf106-hackathon' into ietf10…
TetsuyaMurakami Oct 6, 2019
0c2693a
Merge pull request #36 from TetsuyaMurakami/ietf106-hackathon
matsusato3 Oct 6, 2019
c279fcb
Merge remote-tracking branch 'upstream/master'
TetsuyaMurakami Oct 7, 2019
aac3f8c
Merge remote-tracking branch 'upstream/master' into ietf106-hackathon
TetsuyaMurakami Oct 7, 2019
45439bc
follow QFI bit-position update on gtp4 for sr_policy_rewrite.
matsusato3 Oct 7, 2019
67b73fa
Merge pull request #37 from filvarga/qfi_position
matsusato3 Oct 7, 2019
e7e6434
Merge remote-tracking branch 'upstream/ietf106-hackathon' into ietf10…
TetsuyaMurakami Oct 7, 2019
adb539c
merge the latest vpp code
TetsuyaMurakami Oct 7, 2019
9f056ea
Merge pull request #40 from TetsuyaMurakami/ietf106-hackathon
matsusato3 Oct 7, 2019
1049c7c
Merge remote-tracking branch 'upstream/ietf106-hackathon' into ietf10…
TetsuyaMurakami Oct 8, 2019
dbc39df
Merge remote-tracking branch 'upstream/master' into ietf106-hackathon
tetsuya-arrcus Oct 8, 2019
02b6766
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 8, 2019
17b306f
revert back the original README and move SRv6 Mobile README into the …
tetsuya-arrcus Oct 8, 2019
904e884
move extra/ietf106 to src/plugin/srv6-mobile/test
tetsuya-arrcus Oct 9, 2019
f1fbca6
remove extra/ietf106
tetsuya-arrcus Oct 9, 2019
cd893a2
Update README.md
TetsuyaMurakami Oct 9, 2019
5436d79
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 9, 2019
6af206b
support to map type bits into SRv6 header
tetsuya-arrcus Oct 9, 2019
8df2966
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 9, 2019
8abfd63
typo
tetsuya-arrcus Oct 9, 2019
6fec6fd
fix the build issue
tetsuya-arrcus Oct 10, 2019
18c3041
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 10, 2019
38ce45a
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 10, 2019
acca819
Merge remote-tracking branch 'origin/master' into ietf106-hackathon
tetsuya-arrcus Oct 10, 2019
f81b896
add comment
tetsuya-arrcus Oct 10, 2019
aca65b8
fix the bit align
tetsuya-arrcus Oct 10, 2019
5566035
fix the bit align
tetsuya-arrcus Oct 10, 2019
f03bf3c
add the invalid packet handling
tetsuya-arrcus Oct 10, 2019
be4308f
cosmetic change
tetsuya-arrcus Oct 10, 2019
bd5b61b
fix typo on runner.py
tetsuya-arrcus Oct 11, 2019
2931359
support gtp-u message mapping
tetsuya-arrcus Oct 14, 2019
3b5d3e9
add comment
tetsuya-arrcus Oct 14, 2019
85548b3
fix indent
tetsuya-arrcus Oct 14, 2019
f9abb52
support gtp-u message mapping
tetsuya-arrcus Oct 14, 2019
d866e61
gtpu message mapping without sr policy
tetsuya-arrcus Oct 14, 2019
149f053
fix the last segment and the segment left value
tetsuya-arrcus Oct 15, 2019
a8409aa
merge the latest master branch
tetsuya-arrcus Oct 29, 2019
80852ce
Use IPv6 source address on the received packets for GTP6.D/Di/E
tetsuya-arrcus Oct 29, 2019
9a4779e
Merge remote-tracking branch 'upstream/master' into ietf106-hackathon
tetsuya-arrcus Oct 29, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/plugins/srv6-ad/ad.c
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ srv6_ad_init (vlib_main_t * vm)
keyword_str,
def_str,
params_str,
128,
&sm->srv6_ad_dpo_type,
format_srv6_ad_localsid,
unformat_srv6_ad_localsid,
Expand Down
13 changes: 8 additions & 5 deletions src/plugins/srv6-ad/node.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/*
* node.c
*
* Copyright (c) 2015 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -12,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include <vlib/vlib.h>
#include <vnet/vnet.h>
#include <vppinfra/error.h>
Expand Down Expand Up @@ -705,9 +708,9 @@ VLIB_REGISTER_NODE (srv6_ad6_rewrite_node) = {
/* *INDENT-ON* */

/*
* fd.io coding-style-patch-verification: ON
*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
* fd.io coding-style-patch-verification: ON
*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/
1 change: 1 addition & 0 deletions src/plugins/srv6-am/am.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ srv6_am_init (vlib_main_t * vm)
keyword_str,
def_str,
params_str,
128,
&sm->srv6_am_dpo_type,
format_srv6_am_localsid,
unformat_srv6_am_localsid,
Expand Down
1 change: 1 addition & 0 deletions src/plugins/srv6-as/as.c
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,7 @@ srv6_as_init (vlib_main_t * vm)
keyword_str,
def_str,
params_str,
128,
&sm->srv6_as_dpo_type,
format_srv6_as_localsid,
unformat_srv6_as_localsid,
Expand Down
25 changes: 25 additions & 0 deletions src/plugins/srv6-mobile/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright (c) 2019 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

add_vpp_plugin(srv6mobile
SOURCES
gtp4_e.c
gtp4_d.c
gtp6_e.c
gtp6_d.c
gtp6_d_di.c
node.c

INSTALL_HEADERS
mobile.h
)
178 changes: 178 additions & 0 deletions src/plugins/srv6-mobile/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
SRv6 Mobile User Plane Plugin for VPP
========================

## Introduction

This fork of VPP implements stateless mobile user plane protocols translation between GTP-U and SRv6.
The functions of the translation take advantage of SRv6 network programmability.
[SRv6 Mobile User Plane](https://tools.ietf.org/html/draft-ietf-dmm-srv6-mobile-uplane) defines the user plane protocol using SRv6
including following stateless translation functions:

- **T.M.GTP4.D:**
GTP-U over UDP/IPv4 -> SRv6
- **End.M.GTP4.E:**
SRv6 -> GTP-U over UDP/IPv4
- **End.M.GTP6.D:**
GTP-U over UDP/IPv6 -> SRv6
- **End.M.GTP6.E:**
SRv6 -> GTP-U over UDP/IPv6

These functions benefit user plane(overlay) to be able to utilize data plane(underlay) networks properly. And also it benefits
data plane to be able to handle user plane in routing paradigm.

## Getting started
To play with SRv6 Mobile User Plane on VPP, you need to install following packages:

docker
python3
pip3

Python packages (use pip):
docker
scapy
jinja2


### Quick-start

1. Build up the docker container image as following:

```
$ git clone https://github.com/filvarga/srv6-mobile.git
$ cd ./srv6-mobile/extras/ietf105
$ ./runner.py infra build

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ietf105-image latest 577e786b7ec6 2 days ago 5.57GB
ubuntu 18.04 4c108a37151f 4 weeks ago 64.2MB

```

The runner script [runner.py](test/runner.py) has features to automate configurations and procedures for the test.

2. Instantiate test Scenario

Let's try following command to instantiate a topology:

```
$ ./runner.py infra start
```

This command instantiates 4 VPP containers with following topology:

![Topology Diagram](test/topo-init.png)

You can check the instantiated docker instances with "docker ps".


```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44cb98994500 ietf105-image "/bin/sh -c 'vpp -c …" About a minute ago Up About a minute hck-vpp-4
6d65fff8aee9 ietf105-image "/bin/sh -c 'vpp -c …" About a minute ago Up About a minute hck-vpp-3
ad123b516b24 ietf105-image "/bin/sh -c 'vpp -c …" About a minute ago Up About a minute hck-vpp-2
5efed405b96a ietf105-image "/bin/sh -c 'vpp -c …" About a minute ago Up About a minute hck-vpp-1

```

You can login to and configure each instantiated container.

```
$ ./runner.py cmd vppctl 0

Verified image: None
connecting to: hck-vpp-1
_______ _ _ _____ ___
__/ __/ _ \ (_)__ | | / / _ \/ _ \
_/ _// // / / / _ \ | |/ / ___/ ___/
/_/ /____(_)_/\___/ |___/_/ /_/

vpp#
```

## Test Scenarios
### SRv6 Drop-in between GTP-U tunnel

This test scenario introduces SRv6 path between GTP-U tunnel transparently. A GTP-U packet sent out from one end to another is translated to SRv6 and then back to GTP-U. All GTP-U tunnel identifiers are preserved in IPv6 header and SRH.


#### GTP-U over UDP/IPv4 case

This case uses SRv6 end functions, T.M.GTP4.D and End.M.GTP4.E.

![Topology Diagram](test/topo-test_gtp4d.png)

VPP1 is configured with "T.M.GTP4.D", and VPP4 is configured with "End.M.GTP4.E". Others are configured with "End". The packet generator sends a GTP-U packet over UDP/IPv4 toward the packet capture. VPP1 translates it to SRv6 toward D4::TEID with SR policy <D2::, D3::> in SRH. VPP4 translates the SRv6 packet to the original GTP-U packet and send out to the packet capture.

To start this case with IPv4 payload over GTP-U, you can run:

```
$ ./runner.py test tmap
```

If you want to use IPv6 payload instead of IPv4, you can run:

```
$ ./runner.py test tmap_ipv6
```


#### GTP-U over UDP/IPv6 case

This case uses SRv6 end functions, End.M.GTP6.D.Di and End.M.GTP6.E.

![Topology Diagram](test/topo-test_gtp6d.png)

VPP1 is configured with "End.M.GTP6.D.Di", and VPP4 is configured with "End.M.GTP4.E". Others are configured with "End". The packet generator sends a GTP-U packet over UDP/IPv6 toward D:: of the packet capture. VPP1 translates it to SRv6 toward D:: with SR policy <D2::, D3::, D4::TEID> in SRH. VPP4 translates the SRv6 packet to the original GTP-U packet and send out to the packet capture.

To start this case with IPv4 payload over GTP-U, you can run:

```
$ ./runner.py test gtp6_drop_in
```

If you want to use IPv6 payload instead of IPv4, you can run:

```
$ ./runner.py test gtp6_drop_in_ipv6
```


### GTP-U to SRv6

This test scenario demonstrates GTP-U to SRv6 translation. A GTP-U packet sent out from one end to another is translated to SRv6.

#### GTP-U over UDP/IPv6 case

##### IPv4 payload

This case uses SRv6 end functions, End.M.GTP6.D and End.DT4.

![Topology Diagram](test/topo-test_gtp6.png)

VPP1 is configured with "End.M.GTP6.D", and VPP4 is configured with "End.DT4". Others are configured with "End". The packet generator sends a GTP-U packet over UDP/IPv6 toward D::2. VPP1 translates it to SRv6 toward the IPv6 destination consists of D4:: and TEID of GTP-U with SR policy <D2::, D3::> in SRH. VPP4 decapsulates the SRv6 packet and lookup the table for the inner IPv4 packet and send out to the packet capture.

To start this case, you can run:

```
$ ./runner.py test gtp6
```

##### IPv6 payload

This case uses SRv6 end functions, End.M.GTP6.D and End.DT6.


![Topology Diagram](test/topo-test_gtp6ip6.png)

The configurations are same with IPv4 payload case, except D4:: is configured as "End.DT6" in VPP4. VPP4 decapsulates the SRv6 packet and lookup the table for the inner IPv6 packet and send out to the packet capture.

If you want to use IPv6 payload instead of IPv4, you can run:

```
$ ./runner.py test gtp6_ipv6
```

## More information
TBD
Loading