Here's a simple instruction about bgp JSON API that I've added.

=
Quagga bgpd has AS 64513 and 192.168.177.32.

Check some bgp info:

bgpd> show ip bgp 
BGP table version is 0, local router ID is 192.168.177.32
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.1.0.0/24      0.0.0.0                  0         32768 i

Total number of prefixes 1

Now I start Ryu BGP:

$ sudo PYTHONPATH=.:$PYTHONPATH ryu-manager 
ryu/services/protocols/bgp/api/jsonrpc.pyryu/services/protocols/bgp/application.py

Next I'll configure via JSON RPC API:

$ wsdump.py ws://127.0.0.1:8080/bgp/ws
> {"jsonrpc": "2.0", "id": 1, "method": "core.start", "params" : 
> {"as_number":64512, "router_id":"10.0.0.2"}}
< {"jsonrpc": "2.0", "id": 1, "result": {}}
> {"jsonrpc": "2.0", "id": 1, "method": "neighbor.create", "params" : 
> {"ip_address":"192.168.177.32", "remote_as":64513}}
< {"jsonrpc": "2.0", "id": 1, "result": {}}

Note that wsdump.py is included in websocket-client python package.

The connection between Ryu bgp and Quagga bgp is supposed to establish. Let's 
check:

> {"jsonrpc": "2.0", "id": 1, "method": "neighbors.get", "params" : {}}
< {"jsonrpc": "2.0", "id": 1, "result": [{"advertise_peer_as": false,
"description": "Neighbor: 192.168.177.32", "rtc_as": 64512, "cap_refresh": 
true, "cap_mbgp_vpnv6": false, "cap_mbgp_vpnv4": false,
"statistics_log_enabled": false, "ip_address": "192.168.177.32",
"cap_mbgp_ipv4": true, "hold_time": 40, "id":
"748932d3-dcb3-42cd-984b-de2ef5245d11", "remote_as": 64513, "name":
"Neighbor: 192.168.177.32", "local_port": null, "statistics_interval":
60, "cap_rtc": false, "enabled": true, "max_prefixes": 0,
"local_address": null, "cap_enhanced_refresh": false}]}

You should see a route configured in Quagga bgp:

> {"jsonrpc": "2.0", "id": 1, "method": "show.rib", "params" : {}}
< {"jsonrpc": "2.0", "id": 1, "result": "[{\"paths\": [{\"origin\":
\"i\", \"aspath\": [64513], \"prefix\": \"10.1.0.0/24\", \"bpr\":
\"Only Path\", \"localpref\": \"\", \"metric\": 0, \"nexthop\":
\"192.168.177.32\", \"best\": true}], \"prefix\": \"10.1.0.0/24\"}]"}

Let's configure a route to Ryu bgp:

> {"jsonrpc": "2.0", "id": 1, "method": "network.add", "params" : 
> {"prefix":"10.20.0.0/24"}}
< {"jsonrpc": "2.0", "id": 1, "result": {}}


Let's check the status on Quagga side:

bgpd> show ip bgp           
BGP table version is 0, local router ID is 192.168.177.32
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.1.0.0/24      0.0.0.0                  0         32768 i
*> 10.20.0.0/24     192.168.177.1                          0 64512 i

------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to