-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib-ovn-net.sh
134 lines (117 loc) · 3.52 KB
/
lib-ovn-net.sh
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
source lib-util.sh
# View a summary of the configuration
function topo_show(){
ovn-nbctl show
}
function switch_add()
{
ovn-nbctl ls-add $1
}
function switch_del()
{
ovn-nbctl ls-del $1
}
function switch_port_add()
{
sw=$1
vm=$2
lsp="lsp_$sw-$vm"
mac="$(get_mac $vm)"
ip="$(get_ip $vm)"
ovn-nbctl lsp-add $sw $lsp
ovn-nbctl lsp-set-addresses $lsp "$mac $ip"
ovs-vsctl set interface ovs-$vm external-ids:iface-id="$lsp"
echo bind $vm with logical switch port $lsp
}
function switch_port_del()
{
sw=$1
vm=$2
lsp="lsp_$sw-$vm"
echo ovs-nbctl lsp-del $lsp
ovn-nbctl lsp-del $lsp
}
function router_add()
{
ovn-nbctl lr-add $1
}
function router_del()
{
ovn-nbctl lr-del $1
}
function router_interface_add()
{
router=$1
switch=$2
net=$3 # x.x.x.x/length
ip=${net%/*}
lrp="lrp-$router-to-$switch"
lsp="$lrp-attach"
mac="$(alloc_mac)"
echo ovn-nbctl lrp-add $router $lrp $mac $net
ovn-nbctl lrp-add $router $lrp $mac $net
echo ovn-nbctl lsp-add $switch $lsp
ovn-nbctl lsp-add $switch $lsp
echo ovn-nbctl lsp-set-type $lsp router
ovn-nbctl lsp-set-type $lsp router
echo ovn-nbctl lsp-set-addresses $lsp "$mac $ip"
ovn-nbctl lsp-set-addresses $lsp "$mac $ip"
echo ovn-nbctl lsp-set-options $lsp router-port=$lrp
ovn-nbctl lsp-set-options $lsp router-port=$lrp
}
function router_interface_del()
{
router=$1
switch=$2
lrp="lrp-$router-to-$switch"
lsp="$lrp-attach"
echo ovn-nbctl lrp-del $lrp
ovn-nbctl lrp-del $lrp
echo ovn-nbctl lsp-del $lsp
ovn-nbctl lsp-del $lsp
}
echo 'import lib-ovn-net...'
############main ############
function topo_create()
{
# Create the first logical switch with 3 port
ovn-nbctl ls-add sw0
# Create the second logical switch with 1 port
ovn-nbctl ls-add sw1
# Create a logical router and attach both logical switches
ovn-nbctl lr-add lr0
# Create 3 port on sw0
ovn-nbctl lsp-add sw0 sw0-port1
ovn-nbctl lsp-set-addresses sw0-port1 "50:54:00:00:00:01 192.168.0.2"
ovn-nbctl lsp-add sw0 sw0-port2
ovn-nbctl lsp-set-addresses sw0-port2 "50:54:00:00:00:02 192.168.0.22"
ovn-nbctl lsp-add sw0 sw0-port3
ovn-nbctl lsp-set-addresses sw0-port3 "50:54:00:00:00:03 192.168.0.33"
# Create 1 port on sw1
ovn-nbctl lsp-add sw1 sw1-port1
ovn-nbctl lsp-set-addresses sw1-port1 "50:54:00:00:01:01 11.0.0.2"
# Create gateway for sw0 on lr0
ovn-nbctl lrp-add lr0 lrp0 00:00:00:00:ff:01 192.168.0.1/24
ovn-nbctl lsp-add sw0 lrp0-attachment
ovn-nbctl lsp-set-type lrp0-attachment router
ovn-nbctl lsp-set-addresses lrp0-attachment 00:00:00:00:ff:01
ovn-nbctl lsp-set-options lrp0-attachment router-port=lrp0
# Create gateway for sw1 on lr0
ovn-nbctl lrp-add lr0 lrp1 00:00:00:00:ff:02 11.0.0.1/24
ovn-nbctl lsp-add sw1 lrp1-attachment
ovn-nbctl lsp-set-type lrp1-attachment router
ovn-nbctl lsp-set-addresses lrp1-attachment 00:00:00:00:ff:02
ovn-nbctl lsp-set-options lrp1-attachment router-port=lrp1
}
#topo_create
#topo_show
############main ############
# Create ports on the local OVS bridge, br-int. When ovn-controller
# sees these ports show up with an "iface-id" that matches the OVN
# logical port names, it associates these local ports with the OVN
# logical ports. ovn-controller will then set up the flows necessary
# for these ports to be able to communicate each other as defined by
# the OVN logical topology.
#ovs-vsctl add-port br-int sw0-port1 -- set Interface sw0-port1 external_ids:iface-id=sw0-port1
#ovs-vsctl add-port br-int sw1-port1 -- set Interface sw1-port1 external_ids:iface-id=sw1-port1