Skip to content
This repository has been archived by the owner on Sep 18, 2021. It is now read-only.

Commit

Permalink
Add examples/basic_rift
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiroki Shirokura committed Jul 19, 2019
1 parent e159100 commit faeadbc
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 0 deletions.
44 changes: 44 additions & 0 deletions examples/basic_rift/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

# RIFT: Routing In Fat Tree

This is evaluation of rift-python powered by IETF.

- draft-ietf-rift-rift-03 https://tools.ietf.org/html/draft-ietf-rift-rift-03
- rift-python https://github.com/brunorijsman/rift-python
- juniper's explanation (ppt) https://www.ripe.net/participate/forms/uploads/fobi_plugins/file/see7/Szarkowicz_RIFT_RIPE_TM_bbd50ec4-6dab-4c14-acea-1e767ef7f9da.pptx
- Kobayashi-san's good explanation jp, (this is talking about rift-01).
https://www.slideshare.net/MasayukiKobayashi/rift-a-new-routing-protocol-for-ip-fabrics
- Miyasaka-san's good explanation jp about IETF100-report that includes about RIFT.
https://www.isoc.jp/wiki.cgi?action=ATTACH&file=s4%2Dmiyasaka%2Epdf&page=IETF100Update


![](./topo.png)

```
tn upconf | sudo sh
docker exec -it Spine1 telnet localhost `docker exec Spine1 cat /rift`
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Spine1> show interfaces
+-----------+------------+-----------+-----------+
| Interface | Neighbor | Neighbor | Neighbor |
| Name | Name | System ID | State |
+-----------+------------+-----------+-----------+
| net0 | Leaf1:net0 | 1001 | THREE_WAY |
+-----------+------------+-----------+-----------+
| net1 | Leaf2:net0 | 1002 | THREE_WAY |
+-----------+------------+-----------+-----------+
```

Basically In the RIFT world, Southbound side was received to-Northbound-route
as a default-route (0.0.0.0/0, 0::/0). We can check that with following cli
```
docker exec Leaf1 ip -4 route list
default proto 99
nexthop via 99.1.2.2 dev net0 weight 2
nexthop via 99.3.4.4 dev net1 weight 2
77.1.0.0/24 dev net2 proto kernel scope link src 77.1.0.1
99.1.2.0/24 dev net0 proto kernel scope link src 99.1.2.1
99.3.4.0/24 dev net1 proto kernel scope link src 99.3.4.3
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nr-leaf-nodes-per-pod: 2
nr-spine-nodes-per-pod: 2
17 changes: 17 additions & 0 deletions examples/basic_rift/ietf_rift_python/rift_leaf1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
shards:
- id: 0
nodes:
- name: Leaf1
level: 0
systemid: 1001
interfaces:
- name: net0 # leaf1:net0 -> spine1:net0
- name: net1 # leaf1:net1 -> spine2:net0
- name: net2
v4prefixes:
- address: 88.0.1.1
mask: 32
metric: 1
- address: 77.1.0.0
mask: 24
metric: 1
17 changes: 17 additions & 0 deletions examples/basic_rift/ietf_rift_python/rift_leaf2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
shards:
- id: 0
nodes:
- name: Leaf2
level: 0
systemid: 1002
interfaces:
- name: net0 # leaf2:net0 -> spine1:net1
- name: net1 # leaf2:net1 -> spine2:net1
- name: net2
v4prefixes:
- address: 88.0.2.1
mask: 32
metric: 1
- address: 77.2.0.0
mask: 24
metric: 1
13 changes: 13 additions & 0 deletions examples/basic_rift/ietf_rift_python/rift_spine1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
shards:
- id: 0
nodes:
- name: Spine1
level: 1
systemid: 101
interfaces:
- name: net0 # spine1:net0 -> leaf1:net0
- name: net1 # spine1:net1 -> leaf2:net0
v4prefixes:
- address: 88.1.1.1
mask: 32
metric: 1
13 changes: 13 additions & 0 deletions examples/basic_rift/ietf_rift_python/rift_spine2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
shards:
- id: 0
nodes:
- name: Spine2
level: 1
systemid: 102
interfaces:
- name: net0 # spine2:net0 -> leaf1:net1
- name: net1 # spine2:net1 -> leaf2:net1
v4prefixes:
- address: 88.1.2.1
mask: 32
metric: 1
88 changes: 88 additions & 0 deletions examples/basic_rift/spec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@

postinit:
- cmds:
- cmd: docker cp ietf_rift_python/rift_spine1.yaml Spine1:/root/config.yaml
- cmd: docker cp ietf_rift_python/rift_spine2.yaml Spine2:/root/config.yaml
- cmd: docker cp ietf_rift_python/rift_leaf1.yaml Leaf1:/root/config.yaml
- cmd: docker cp ietf_rift_python/rift_leaf2.yaml Leaf2:/root/config.yaml

nodes:
- name: Spine1
image: slankdev/rift:ietf-rift-03
interfaces:
- { name: net0, type: direct, args: Leaf1#net0 }
- { name: net1, type: direct, args: Leaf2#net0 }
- name: Spine2
image: slankdev/rift:ietf-rift-03
interfaces:
- { name: net0, type: direct, args: Leaf1#net1 }
- { name: net1, type: direct, args: Leaf2#net1 }
- name: Leaf1
image: slankdev/rift:ietf-rift-03
interfaces:
- { name: net0, type: direct, args: Spine1#net0 }
- { name: net1, type: direct, args: Spine2#net0 }
- { name: net2, type: direct, args: Serv1#net0 }
- name: Leaf2
image: slankdev/rift:ietf-rift-03
interfaces:
- { name: net0, type: direct, args: Spine1#net1 }
- { name: net1, type: direct, args: Spine2#net1 }
- { name: net2, type: direct, args: Serv2#net0 }
- name: Serv1
image: slankdev/ubuntu:18.04
interfaces: [ { name: net0, type: direct, args: Leaf1#net2 } ]
- name: Serv2
image: slankdev/ubuntu:18.04
interfaces: [ { name: net0, type: direct, args: Leaf2#net2 } ]

node_configs:
- name: Spine1
cmds:
- cmd: ip addr add 88.1.1.1/32 dev lo
- cmd: ip addr add 99.1.2.2/24 dev net0
- cmd: ip addr add 99.5.6.6/24 dev net1
- cmd: >-
nohup bash -c "source rift-python/env/bin/activate;
python rift-python/rift --telnet-port-file /rift config.yaml" &
- name: Spine2
cmds:
- cmd: ip addr add 88.1.2.1/32 dev lo
- cmd: ip addr add 99.3.4.4/24 dev net0
- cmd: ip addr add 99.7.8.8/24 dev net1
- cmd: >-
nohup bash -c "source rift-python/env/bin/activate;
python rift-python/rift --telnet-port-file /rift config.yaml" &
- name: Leaf1
cmds:
- cmd: ip addr add 88.0.1.1/32 dev lo
- cmd: ip addr add 99.1.2.1/24 dev net0
- cmd: ip addr add 99.3.4.3/24 dev net1
- cmd: ip addr add 77.1.0.1/24 dev net2
- cmd: >-
nohup bash -c "source rift-python/env/bin/activate;
python rift-python/rift --telnet-port-file /rift config.yaml" &
- name: Leaf2
cmds:
- cmd: ip addr add 88.0.2.1/32 dev lo
- cmd: ip addr add 99.5.6.5/24 dev net0
- cmd: ip addr add 99.7.8.7/24 dev net1
- cmd: ip addr add 77.2.0.1/24 dev net2
- cmd: >-
nohup bash -c "source rift-python/env/bin/activate;
python rift-python/rift --telnet-port-file /rift config.yaml" &
- name: Serv1
cmds:
- cmd: ip addr add 77.1.0.2/24 dev net0
- cmd: ip route add default via 77.1.0.1
- name: Serv2
cmds:
- cmd: ip addr add 77.2.0.2/24 dev net0
- cmd: ip route add default via 77.2.0.1

test:
- name: p2p
cmds:
- cmd: echo slankdev slankdev
- cmd: echo slankdev slankdev

Binary file added examples/basic_rift/topo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit faeadbc

Please sign in to comment.