Hi,

How about using the Zebra client service library of Ryu?
  
https://github.com/osrg/ryu/blob/master/ryu/services/protocols/zebra/client/sample_dumper.py

This library provides the APIs to communicate with the Zebra daemon of Quagga 
(or FRRouting).
For example, if you need "connected" routes in your Ryu application, the 
following dumps the
"connected" routes which the Zebra daemon redistributed.


$ git diff
diff --git a/ryu/services/protocols/zebra/client/sample_dumper.py b/ryu/services/protocols/zebra/client/sample_dumper.py
index 395620e..b4ab8ac 100644
--- a/ryu/services/protocols/zebra/client/sample_dumper.py
+++ b/ryu/services/protocols/zebra/client/sample_dumper.py
@@ -32,6 +32,17 @@ class ZClientDumper(ZClient):
             'Zebra server connected to %s: %s',
             ev.zserv.sock.getpeername(), ev.zserv.sock)

+        # Send redistribute add message for the route type which you need
+        for route_type in [zebra.ZEBRA_ROUTE_CONNECT]:
+            self.send_msg(
+                zebra.ZebraMessage(
+                    version=self.zserv_ver,
+                    body=zebra.ZebraRedistributeAdd(
+                        route_type=route_type,
+                    ),
+                ),
+            )
+
     @set_ev_cls(event.EventZebraRouterIDUpdate)
     def _router_id_update_handler(self, ev):
         self.logger.info(
@@ -47,6 +58,16 @@ class ZClientDumper(ZClient):
         self.logger.info(
             'ZEBRA_INTERFACE_ADDRESS_ADD received: %s', ev.__dict__)

+    @set_ev_cls(event.EventZebraIPv4RouteAdd)
+    def _ipv4_route_add_handler(self, ev):
+        self.logger.info(
+            'ZEBRA_IPV4_ROUTE_ADD received: %s', ev.__dict__)
+
+    @set_ev_cls(event.EventZebraIPv4RouteDelete)
+    def _ipv4_route_delete_handler(self, ev):
+        self.logger.info(
+            'ZEBRA_IPV4_ROUTE_DELETE received: %s', ev.__dict__)
+
     @set_ev_cls(zclient_event.EventZServDisconnected)
     def _zserv_disconnected_handler(self, ev):
         self.logger.info(


$ ryu-manager ryu/services/protocols/zebra/client/sample_dumper.py
loading app ryu/services/protocols/zebra/client/sample_dumper.py
instantiating app ryu/services/protocols/zebra/client/sample_dumper.py of 
ZClientDumper
Zebra server connected to /var/run/quagga/zserv.api: <eventlet.greenio.base.GreenSocket object at 0x7fb945a14a90>
...(snip)...
ZEBRA_IPV4_ROUTE_ADD received: {'zclient': <sample_dumper.ZClientDumper object at 0x7fb949b5a668>, 'version': 2, 'body': ZebraIPv4RouteAdd(distance=0,flags=16,from_zebra=True,ifindexes=[1],instance=None,message=15,metric=0,mtu=None,nexthops=['0.0.0.0'],prefix='2.2.2.2/32',route_type=2,safi=None,src_prefix=None,tag=None), 'command': 7, 'length': 29, 'vrf_id': 0} ZEBRA_IPV4_ROUTE_ADD received: {'zclient': <sample_dumper.ZClientDumper object at 0x7fb949b5a668>, 'version': 2, 'body': ZebraIPv4RouteAdd(distance=0,flags=16,from_zebra=True,ifindexes=[2],instance=None,message=15,metric=0,mtu=None,nexthops=['0.0.0.0'],prefix='192.168.23.0/24',route_type=2,safi=None,src_prefix=None,tag=None), 'command': 7, 'length': 28, 'vrf_id': 0} ZEBRA_IPV4_ROUTE_ADD received: {'zclient': <sample_dumper.ZClientDumper object at 0x7fb949b5a668>, 'version': 2, 'body': ZebraIPv4RouteAdd(distance=0,flags=16,from_zebra=True,ifindexes=[3],instance=None,message=15,metric=0,mtu=None,nexthops=['0.0.0.0'],prefix='192.168.24.0/24',route_type=2,safi=None,src_prefix=None,tag=None), 'command': 7, 'length': 28, 'vrf_id': 0}


Thanks,
Iwase


On 2017年11月23日 00:27, Alessandro Gaballo wrote:
Hi, I'm running Quagga on my mininet topology to capture routing
information, I wanted to know if it's possible to retrieve the routing
table on the quagga routers (which are basically mininet hosts) or at
least the flow tables. If so, how do I do it?


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to