File: chain-example2

package info (click to toggle)
networking-bagpipe 23.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,872 kB
  • sloc: python: 15,677; sh: 927; makefile: 62
file content (117 lines) | stat: -rwxr-xr-x 2,930 bytes parent folder | download | duplicates (2)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
#
# This script will setup network namespaces SVM1 ("service VM1") and SVM2 so that
# traffic between net1 (to which VM1 is attached) and net2 (to which VM2 is attached)
# goes through SMV1 and SVM2:
#
# VM1-------net1     SVM1 --- SVM2    net2-----VM2
#  .1    11.0.0.                      12.0.0   .1
#
# Route targets....
#
# net1: :1
# net2: :2
#
# - chain for traffic from net1 to net2:
# hop12_0: first hop: net1 to SVM1
# hop12_1: second hop: SVM1 to SVM2

as=64512

hop12_0=$as:120
hop12_1=$as:121

##
## - chain for traffic from net2 to net1:
## hop21_0: first hop: net2 to SVM2
## hop21_1: second hop: SVM2 to SVM1

hop21_0=$as:210
hop21_1=$as:211


source $(dirname $0)/generic-functions

clean_start

clean_netns_all net1vm1 svm1 svm2 net2vm2


##
## VM1:  sur A
##

r_a bagpipe-rest-attach --attach --port netns:to-vm1 --network-type ipvpn --vpn-instance-id net1vm1 --ip 11.0.0.1 --rt $as:1 --import-rt $hop12_0



## SVM1: sur B
##
## [vrf:x1][if:to-svm1-x1]---[x1][netns:svm1][h0]---[to-svm1-h0][vrf:h01]
##
##
## x1:100.0.0.0/24
## h01:30.0.0.0/24
## h02:40.0.0.0/24
## x2:200.0.0.0/24

## attach x1:

r_b bagpipe-rest-attach --attach --port netns:to-svm1-x1 --network-type ipvpn --vpn-instance-id x1 --ip 100.0.0.1/24 --netns svm1 --if2vpn x1 \
    --import $as:1 \
    --readv-from-rt $hop12_1 --readv-to-rt $hop12_0

## attach h0:

r_b bagpipe-rest-attach --attach --port netns:to-svm1-h0 --network-type ipvpn --vpn-instance-id h01 --ip 30.0.0.1/24 --netns svm1 --if2vpn h0 \
    --import-rt $hop12_1 \
    --readv-from-rt $as:1 --readv-to-rt $hop21_1

r_b ./setup-cross-routing svm1 x1 100.0.0.254 h0 30.0.0.254



## SVM2: sur A
#
# [vrf:h02][to-svm2-h0]---[h0][netns:svm2][x2]---[if:to-svm2-x2][vrf:x2]

## attach h0:

r_a bagpipe-rest-attach --attach --port netns:to-svm2-h0 --network-type ipvpn --vpn-instance-id h02 --ip 40.0.0.1/24 --netns svm2 --if2vpn h0 \
    --import-rt $hop21_1 \
        --readv-from-rt $as:2 --readv-to-rt $hop12_1

## attach x2:
r_a bagpipe-rest-attach --attach --port netns:to-svm2-x2 --network-type ipvpn --vpn-instance-id x2 --ip 200.0.0.1/24 --netns svm2 --if2vpn x2 \
    --import $as:2 \
    --readv-from-rt $hop21_1 --readv-to-rt $hop21_0

r_a ./setup-cross-routing svm2 x2 200.0.0.254 h0 40.0.0.254



## VM2:  sur B
##

r_b bagpipe-rest-attach --attach --port netns:to-vm2 --network-type ipvpn --vpn-instance-id net2vm2 --ip 12.0.0.1 --rt $as:2 --import-rt $hop21_0

#
# Test
#

wait_ready

r_a ip netns exec net1vm1 ping 12.0.0.1 -c 3


r_a bagpipe-looking-glass vpns instances net1vm1 dataplane flows
r_b bagpipe-looking-glass vpns instances x1 dataplane flows
r_b bagpipe-looking-glass vpns instances h01 dataplane flows
r_a bagpipe-looking-glass vpns instances h02 dataplane flows
r_a bagpipe-looking-glass vpns instances x2 dataplane flows
r_b bagpipe-looking-glass vpns instances net2vm2 dataplane flows

r_both bagpipe-looking-glass logs

clean_stop