sudo mn -c
ryu-manager --observe-links ryu.app.ofctl_rest ryu.app.gui_topology.gui_topology
sudo python3 ~/tfs-ctrl/src/tests/ryu-openflow/custom_pentagon_topology.py

curl -X POST \
    --header "Content-Type: application/json" \
    --data @ietf-l3vpn-service.json \
    --user "admin:admin" \
    http://127.0.0.1/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services



4. Build and run
# from ryu-docker/
docker compose build         # or: docker build -t ryu-local .
docker compose up -d         # or: docker run -d --network host ryu-local
You should now see the usual Ryu banner in docker compose logs -f.

5. Start Mininet on the host
sudo mn --topo single,3 \
        --controller remote,ip=127.0.0.1,port=6653 \
        --switch ovs,protocols=OpenFlow13
127.0.0.1 works because the container is in host network mode.
If you prefer normal bridge networking, publish the port instead:

docker run -d -p 6653:6653 -p 8080:8080 ryu-local
# …then tell Mininet ip=<host-IP>
Verify the switch talks OpenFlow 1.3 (protocols=OpenFlow13) unless your app requires 1.0.
