The environment is already set up in the docker image. In this tutorial, we utilize Docker
, ONOS
, OVS
, Mininet
, Quagga
.
Install ONOS
Install Docker
and add LOGIN_USER into docker group
sudo apt update && apt install docker.io
sudo usermod -aG docker LOGIN_USER
Pull the docker image
docker pull stanhsu0522/onos_vrouter
-
Start the container
Use option '-v' (volume) to map directory between host and container
docker run -it --privileged -v 'HOST_DIR':'CONTAINER_DIR' stanhsu0522/onos_vrouter
# docker run -it --privileged -v ~/onos_vrouter:/onos_vrouter stanhsu0522/onos_vrouter
-
Start ONOS and setup
Activate
vrouter
app
Feed network configurations (/config/network-cfg.json
) to ONOS
onos localhost app activate vrouter
onos-netcfg localhost 'HOST_DIR'/VROUTER/config/network-cfg.json
-
Start Mininet (Inside container)
Fill up the correct IP for ONOS instant
root@container:/ cd 'HOST_DIR'/VROUTER/
root@container:/ ./launcher 'ONOS_INSTANT_IP' # ./launcher 192.168.0.1
-
Test connectivity in Mininet
Do NOT test connectivity until routing info is correct and flow rules are installed
mininet> h1 ping h3 -c 3
Note: Remember to clean up Mininet after each experiment.
-
Start the container
Use option '-v' (volume) to map directory between host and container
docker run -it --privileged -v 'HOST_DIR':'CONTAINER_DIR' stanhsu0522/onos_vrouter
# docker run -it --privileged -v ~/onos_vrouter:/onos_vrouter stanhsu0522/onos_vrouter
-
Start ONOS and setup
Activate
drivers
,openflow
,segmentrouting
,fpm
,dhcprelay
,netcfghostprovider
,routeradvertisement
,mcast
apps
Feed network configurations (trellisV4.json
) to ONOS
onos localhost app activate drivers org.onosproject.openflow segmentrouting fpm dhcprelay netcfghostprovider routeradvertisement mcast
onos-netcfg localhost 'HOST_DIR'/TRELLIS/routing/trellis/trellisV4.json
-
Start Mininet (Inside container)
Fill up the correct IP for ONOS instant
root@container:/ cd 'HOST_DIR'/TRELLIS/routing/trellis/
root@container:/ ./trellisV4.py --controllers 'ONOS_INSTANT_IP' ... # ./trellisV4.py --controllers 192.168.0.1
-
Test connectivity in Mininet
- Do NOT test connectivity until routing info is correct and flow rules are installed
- Two hosts under each leaf switch (i.e. h1–h4)
- One DHCP server
- One internal Quagga speaker at s205
- One exteral Quagga speaker (metro router)
- One remote host behind external router (i.e. rh1)
mininet> h1 ping h3 -c 3
mininet> h1 ping rh1 -c 3
Note: Remember to clean up Mininet after each experiment.
- ONOS netcfg check
onos localhost netcfg
- Quagga FIB push interface check
mininet> ospfbgp ping 'ONOS_INSTANT_IP'
- Quagga daemon check
mininet> r1 /quagga/zebra/zebra -d -f configs/zebra.conf -z /var/run/quagga/zebrar1.api -i /var/run/quagga/zebrar1.pid mininet> r1 /quagga/ospfd/ospfd -d -f configs/quagga1.conf -z /var/run/quagga/zebrar1.api -i /var/run/quagga/ospfdr1.pid
- BGP speaker route check
note: It takes time for forwarding info to calculate.mininet> ospfbgp ip route
- ONOS route check
onos localhost routes
- DHCP IP allocation check
mininet> h1 ip addr
- Clean up mininet
mn -c