Hi Douglas,
On 2017年06月15日 23:55, Douglas Harewood-Gill wrote: > Hello again. Ok, My apologies bit I really need you to simplify this for me. > Starting with the first bit. > > 1) Ryu is definitely installed but do you know the command to check the > version? I have looked online but I can't find anything specific. > 2) Is there also a way to check that Ryu is installed correctly? > 3) What do you mean by "import ryu" and "ryu.version"? > 4) Also, "from ryu.app import ofctl_rest"? The commands I wrote on the previous mail can check these points. "python" command on your shell starts Python interpreter with "Interactive Mode" https://docs.python.org/2/tutorial/interpreter.html#interactive-mode "import ryu" and followed by other words are command (source code) for Python interactive interpreter. - "import ryu" checks whether Ryu is installed correctly or not. - "ryu.version" shows version (e.g., '4.14'). - "from ryu.app import ofctl_rest" checks whether "ofctl_rest" can be imported from your Python or not. $ python # start Python interactive interpreter >>> import ryu # checks if "ryu" is installed or not >>> ryu.version # show version info '4.14' >>> from ryu.app import ofctl_rest # Can import "ofctl_rest"? Thanks, Iwase > > I will see if I can work through this first to see if I can get it working > this way before I look at the second bit. :D > > Thank you for your time and patience so far. > > Cheers > > Douglas > > > > > On 15 June 2017 at 01:06, Iwase Yusuke <iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com>> wrote: > > Hi Douglas, > > > On 2017年06月14日 21:41, Douglas Harewood-Gill wrote: > > Hi Iwase. I did try it the other way but the error "AttributeError: > 'module' object has not attribute "ofctl_rest" but it was worth trying so > thank you. > > Hmmm... 'ryu.app.ofctl_rest' means the Python module path to Ryu's > built-in app. > If it got AttributeError, Ryu might not be installed successfully. > > I recommend you to confirm Ryu is installed > $ python > >>> import ryu # Can import "ryu"? > >>> ryu.version # Which version? > '4.14' > >>> from ryu.app import ofctl_rest # Can import "ofctl_rest"? > > > > Regarding the instructions you sent me for altering Ryu, is there any > chance you could explain them a bit more please? I am having a little trouble > following them currently. > > Sure. > Ryu defines the CLI options in some modules, the most accessible among > them is > "ryu/flags.py", I guess. > https://github.com/osrg/ryu/blob/master/ryu/flags.py > <https://github.com/osrg/ryu/blob/master/ryu/flags.py> > > But to reflect your changes, you need to "re-install" Ryu before running > your > applications. > So If you want to define your own CLI option, > 0. Checkout Ryu Git src (if needed). > $ git clone https://github.com/osrg/ryu.git > <https://github.com/osrg/ryu.git> > $ cd ryu > 1. Add your definitions into "ryu/flags.py". > The syntax is the same as "oslo.config". > https://docs.openstack.org/developer/oslo.config/ > <https://docs.openstack.org/developer/oslo.config/> > 2. Re-install Ryu at the top of Ryu directory. > $ pip install -r tools/pip-requires > $ python setup.py install > 3. Confirm your own option is inserted into ryu-manager. > $ ryu-manager --help > > > Thanks, > Iwase > > > > > Thank you :) > > > > Douglas > > > > On 14 June 2017 at 03:24, Iwase Yusuke <iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com>>> wrote: > > > > Hi Douglas, > > > > Hmmm... how about swapping the order of arguments? > > > > e.g) > > if __name__ == "__main__": > > manager.main(args=['ryu.app.ofctl_rest'] + sys.argv) > > > > > > FYI, I guess Dr.Bernstein did "hack"(used "ryu.cmd.manager" > directly) in order to > > add original CLI option like "--netfile" and "--widest_paths". > > On the other hand, you can add your original CLI option as > following. > > > > $ git diff > > diff --git a/ryu/flags.py b/ryu/flags.py > > index 69eb3d2..ebf16c8 100644 > > --- a/ryu/flags.py > > +++ b/ryu/flags.py > > @@ -112,3 +112,10 @@ CONF.register_cli_opts([ > > help='Initial Router ID used by Zebra protocol service ' > > '(default: %s)' % DEFAULT_ZSERV_ROUTER_ID), > > ], group='zapi') > > + > > +CONF.register_cli_opts([ > > + cfg.StrOpt( > > + 'netfile', default=None, help='network json file'), > > + cfg.BoolOpt( > > + 'widest_paths', default=False, help='Use widest path.'), > > +]) > > > > > > Please note you need to re-install Ryu after the above > modifications. > > > > $ python setup.py install > > > > > > Then, with this modification, you can run > "l2DestForwardStaticRyu.py" as the > > standard Ryu application via "ryu-manager": > > > > $ ryu-manager --help > > ...(snip)... > > --netfile NETFILE network json file > > ...(snip)... > > --widest_paths Use widest path. > > ...(snip)... > > > > $ ryu-manager l2DestForwardStaticRyu.py ryu.app.ofctl_rest > --netfile=ExNetwithLoops1A.json --widest_paths > > > > > > Thanks, > > Iwase > > > > > > On 2017年06月13日 22:04, Douglas Harewood-Gill wrote: > > > Hi Iwase and thank you for getting back to me. The author of this > program, Dr Bernstein added this line "from ryu.cmd import manager" which as > far as I understand directly starts Ryu from within side > L2DestForwardStaticRyu.py. Should be around line 29 I think. He had to do > this he told me because he could not start the program in the conventional > way because he needed to import the "ExNetwithLoops!A.json file" for the > topology with static mac and IP addresses. Apparently he could not do this > just using the standard Ryu format of starting the Ryu Manager with the > Controller file and then with REST. > > > > > > I tried your suggestion by removing "manager.main(args=sys.argv)" > > > > > > from " if __name__ == "__main__": " > > > > > > and using the following:- > > > > > > "manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])" and I got > the following error message in the terminal. > > > > > > "l2DestForwardStaticRyuNS: error: unrecognized arguments: > ryu.app.ofctl_rest" > > > > > > Any advice would be welcome. I am obviously going to see what I > can find here and will let you know if I find anything relevant. > > > > > > Cheers > > > > > > Douglas > > > > > > > > > > > > > > > On 13 June 2017 at 02:17, Iwase Yusuke <iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com>> <mailto:iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com > <mailto:iwase.yusu...@gmail.com>>>> wrote: > > > > > > Hi Douglas, > > > > > > I checked "L2DestForwardStaticRyu.py", and it seems to be > "hacked" to run > > > app without "ryu-manager". > > > To start the built-in Ryu application with > "L2DestForwardStaticRyu.py", > > > how about the following? > > > The following appends to "ofctl_rest" app to the argument of > "manager". > > > > > > e.g.) around line 91: > > > > > > if __name__ == "__main__": > > > - manager.main(args=sys.argv) > > > + manager.main(args=sys.argv + ['ryu.app.ofctl_rest']) > > > > > > > > > Thanks, > > > Iwase > > > > > > > > > On 2017年06月09日 21:00, Douglas Harewood-Gill wrote: > > > > Hi Iwase. Thank you for contacting me and apologies for my > delay in responding. I have tried what you have suggested but the problem I > have is that the L2DestForwardStaticRyu.py program is designed to run on its > own. It imports the the ryu.cmd import manager and uses the Ryu controller > but you start it by typing "|python l2DestForwardStaticRyu.py > --netfile=ExNetwithLoops1A.json" |where it imports =ExNetWithLoops1A.Json. > > > > When this program is started, it automatically loads Ryu > and implements the code within this program. I am not sure how to start the > this and ryu.app.ofctl_rest at the same time. I have tried starting them > separately in different terminals but that did not work. > > > > > > > > Thank you also for the information you have sent. I have > looked at it before but I do not know how to implement this with my custom > code. I have been looking for examples but they seem to be few and far > between. Any advice as always would be greatly appreciated. > > > > > > > > Thanks again. > > > > > > > > Douglas > > > > > > > > On 8 June 2017 at 01:27, Iwase Yusuke > <iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> > <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>>>> wrote: > > > > > > > > Hi Douglas, > > > > > > > > Excuse me for cutting in. > > > > > > > > Just for getting flow statistics, how about running > your app and ofctl_rest > > > > together as Fujimoto said. > > > > e.g.) > > > > $ ryu-manager your_app.py ryu.app.ofctl_rest > > > > > > > > > > > > If you want to implement your own REST APIs on your > app, Ryu-Book is the > > > > most helpful as far as I know. > > > > (You might already be aware of this though...) > > > > http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html>> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html>>> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html>> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html> > <http://osrg.github.io/ryu-book/en/html/rest_api.html > <http://osrg.github.io/ryu-book/en/html/rest_api.html>>>> > > > > > > > > > > > > FYI, here is an sample implementation on > simple_switch_13.py for getting > > > > flow statistics. > > > > The usage of "WSGI" framework is described on Ryu-Book. > > > > > > > > > > > > $ git diff > > > > diff --git a/ryu/app/simple_switch_13.py > b/ryu/app/simple_switch_13.py > > > > index 3e7c598..f33e474 100644 > > > > --- a/ryu/app/simple_switch_13.py > > > > +++ b/ryu/app/simple_switch_13.py > > > > @@ -13,6 +13,8 @@ > > > > # See the License for the specific language governing > permissions and > > > > # limitations under the License. > > > > > > > > +import json > > > > + > > > > from ryu.base import app_manager > > > > from ryu.controller import ofp_event > > > > from ryu.controller.handler import CONFIG_DISPATCHER, > MAIN_DISPATCHER > > > > @@ -21,14 +23,26 @@ from ryu.ofproto import ofproto_v1_3 > > > > from ryu.lib.packet import packet > > > > from ryu.lib.packet import ethernet > > > > from ryu.lib.packet import ether_types > > > > +from ryu.app.ofctl import api as ofctl_api > > > > +from ryu.app.wsgi import ControllerBase > > > > +from ryu.app.wsgi import Response > > > > +from ryu.app.wsgi import route > > > > +from ryu.app.wsgi import WSGIApplication > > > > + > > > > + > > > > +_URI_PREFIX = '/simpleswitch/stats/{dpid}' > > > > > > > > > > > > class SimpleSwitch13(app_manager.RyuApp): > > > > OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION] > > > > + _CONTEXTS = {'wsgi': WSGIApplication} > > > > > > > > def __init__(self, *args, **kwargs): > > > > super(SimpleSwitch13, self).__init__(*args, > **kwargs) > > > > self.mac_to_port = {} > > > > + wsgi = kwargs['wsgi'] > > > > + wsgi.register(SimpleSwitchController, > > > > + {SimpleSwitch13.__name__: self}) > > > > > > > > @set_ev_cls(ofp_event.EventOFPSwitchFeatures, > CONFIG_DISPATCHER) > > > > def switch_features_handler(self, ev): > > > > @@ -117,3 +131,32 @@ class > SimpleSwitch13(app_manager.RyuApp): > > > > out = parser.OFPPacketOut(datapath=datapath, > buffer_id=msg.buffer_id, > > > > in_port=in_port, > actions=actions, data=data) > > > > datapath.send_msg(out) > > > > + > > > > + def get_flow_stats(self, dpid): > > > > + datapath = ofctl_api.get_datapath(self, dpid) > > > > + if datapath is None: > > > > + return None > > > > + > > > > + parser = datapath.ofproto_parser > > > > + req = parser.OFPFlowStatsRequest(datapath) > > > > + > > > > + rep = ofctl_api.send_msg( > > > > + app=self, msg=req, > > > > + reply_cls=parser.OFPFlowStatsReply, > reply_multi=True) > > > > + return [r.to_jsondict() for r in rep] > > > > + > > > > + > > > > +class SimpleSwitchController(ControllerBase): > > > > + > > > > + def __init__(self, req, link, data, **config): > > > > + super(SimpleSwitchController, > self).__init__(req, link, data, **config) > > > > + self.simple_switch_app = > data[SimpleSwitch13.__name__] > > > > + > > > > + @route('simpleswitch', _URI_PREFIX, > methods=['GET']) > > > > + def list_mac_table(self, req, **kwargs): > > > > + dpid = int(str(kwargs['dpid'])) > > > > + ret = > self.simple_switch_app.get_flow_stats(dpid) > > > > + if ret is None: > > > > + return Response(status=404) > > > > + > > > > + return > Response(content_type='application/json', body=json.dumps(ret)) > > > > > > > > > > > > $ ryu-manager ryu/app/simple_switch_13.py > > > > Registered VCS backend: git > > > > Registered VCS backend: hg > > > > Registered VCS backend: svn > > > > Registered VCS backend: bzr > > > > loading app ryu/app/simple_switch_13.py > > > > loading app ryu.controller.ofp_handler > > > > loading app ryu.app.ofctl.service > > > > loading app ryu.controller.ofp_handler > > > > creating context wsgi > > > > instantiating app ryu.app.ofctl.service of OfctlService > > > > instantiating app ryu/app/simple_switch_13.py of > SimpleSwitch13 > > > > instantiating app ryu.controller.ofp_handler of > OFPHandler > > > > (10332) wsgi starting up on http://0.0.0.0:8080 > > > > ... > > > > > > > > > > > > $ curl -X GET > http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1>> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1>>> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1>> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1> > <http://localhost:8080/simpleswitch/stats/1 > <http://localhost:8080/simpleswitch/stats/1>>>> | python -m json.tool > > > > [ > > > > { > > > > "OFPFlowStatsReply": { > > > > "body": [ > > > > { > > > > "OFPFlowStats": { > > > > "byte_count": 140, > > > > "cookie": 0, > > > > "duration_nsec": 771000000, > > > > "duration_sec": 1, > > > > "flags": 0, > > > > "hard_timeout": 0, > > > > "idle_timeout": 0, > > > > "instructions": [ > > > > { > > > > > "OFPInstructionActions": { > > > > "actions": [ > > > > { > > > > > "OFPActionOutput": { > > > > "len": > 16, > > > > > "max_len": 65535, > > > > "port": > 4294967293, > > > > "type": > 0 > > > > } > > > > } > > > > ], > > > > "len": 24, > > > > "type": 4 > > > > } > > > > } > > > > ], > > > > "length": 80, > > > > "match": { > > > > "OFPMatch": { > > > > "length": 4, > > > > "oxm_fields": [], > > > > "type": 1 > > > > } > > > > }, > > > > "packet_count": 2, > > > > "priority": 0, > > > > "table_id": 0 > > > > } > > > > } > > > > ], > > > > "flags": 0, > > > > "type": 1 > > > > } > > > > } > > > > ] > > > > > > > > > > > > Thanks, > > > > Iwase > > > > > > > > > > > > On 2017年06月07日 20:21, Douglas Harewood-Gill wrote: > > > > > Hi there. That is fantastic. Sounds exactly like what > I am looking for so thank you. > > > > > > > > > > One last question for the minute. I know you provided > a link but how do you implement this with custom Ryu controller code? > > > > > > > > > > My apologies if I am asking something really obvious. > > > > > > > > > > Cheers > > > > > > > > > > Douglas > > > > > > > > > > On 7 June 2017 at 01:15, Fujimoto Satoshi > <satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>> > <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> > <mailto:satoshi.fujimo...@gmail.com > <mailto:satoshi.fujimo...@gmail.com>> <mailto:satoshi.fujimo...@gmail.com > <mailto:satoshi.fujimo...@gmail.com> <mailto:satoshi.fujimo...@gmail.com > <mailto:satoshi.fujimo...@gmail.com>>>>>> wrote: > > > > > > > > > > Hi, Douglas > > > > > > > > > > Ryu has ofctl_rest.py, which is a sample > application and provides REST API to get flow statistics. > > > > > > http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html> > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html > <http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>> > > > > > > > > > > I think it is better to use ofctl_rest.py than to > implement your own REST API in your app. > > > > > > > > > > Thanks, > > > > > Fujimoto > > > > > > > > > > > > > > > On 2017年06月06日 21:18, Douglas Harewood-Gill wrote: > > > > >> > > > > >> Greetings I am a PhD student new to both Python > and Ryu and I was wondering if anyone could give me some advice. > > > > >> > > > > >> > > > > >> I am using the Ryu controller program > (L2DestForwardStaticRyu.py) provided by Dr Grey Bernstein > (https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > > > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu> > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu > <https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>) > for shortest path computation for a full Mesh network in Mininet but the > example provided does not include REST which I require to be able to collect > flow statistics such as the flows in each router, > bandwidth, latency, etc. > > > > >> > > > > >> > > > > >> Unfortunately I have been looking and with the > exception of (https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>>>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html> > <https://osrg.github.io/ryu-book/en/html/rest_api.html > <https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>) which seems > > overly specific, I am unable to find a good example that would > allow me to work out how to integrate REST into the above Ryu control program. > > > > >> > > > > >> So if anyone can point me in the right direction > or can provide some examples, I would be most grateful. > > > > >> > > > > >> > > > > >> Thank you for your time. > > > > >> > > > > >> > > > > >> Best Regards > > > > >> > > > > >> > > > > >> Douglas > > > > >> > > > > >> > > > > >> > > > > >> -- > > > > >> *Douglas Harewood-Gill MSc MIET* > > > > >> CDT Student in Communications (PhD), University > of Bristol > > > > >> Post-Graduate Student (Taught and Research) > > > > >> e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>>>> > > > > >> > > > > >> * > > > > >> CDT Communications* > > > > >> > > > > >> University of Bristol, Merchant Venturers' > Building, Woodland Road, Clifton, Bristol. BS8 1UB > > > > >> > > > > >> http://www.bristol.ac.uk/ > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > ------------------------------------------------------------------------------ > > > > >> 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 > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>>>> > > > > >> > https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>> > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > *Douglas Harewood-Gill MSc MIET* > > > > > CDT Student in Communications (PhD), University of > Bristol > > > > > Post-Graduate Student (Taught and Research) > > > > > e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>>>> > > > > > > > > > > * > > > > > CDT Communications* > > > > > > > > > > University of Bristol, Merchant Venturers' Building, > Woodland Road, Clifton, Bristol. BS8 1UB > > > > > > > > > > http://www.bristol.ac.uk/ > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > > > 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 > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>>> > > > > > > https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>> > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > *Douglas Harewood-Gill MSc MIET* > > > > CDT Student in Communications (PhD), University of Bristol > > > > Post-Graduate Student (Taught and Research) > > > > e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>>> > > > > > > > > * > > > > CDT Communications* > > > > > > > > University of Bristol, Merchant Venturers' Building, > Woodland Road, Clifton, Bristol. BS8 1UB > > > > > > > > http://www.bristol.ac.uk/ > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > > 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 > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>>> > > > > https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> > > > > > > > > > > > > > > > > > > > -- > > > *Douglas Harewood-Gill MSc MIET* > > > CDT Student in Communications (PhD), University of Bristol > > > Post-Graduate Student (Taught and Research) > > > e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>>> > > > > > > * > > > CDT Communications* > > > > > > University of Bristol, Merchant Venturers' Building, Woodland > Road, Clifton, Bristol. BS8 1UB > > > > > > http://www.bristol.ac.uk/ > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > 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 > <mailto:Ryu-devel@lists.sourceforge.net> > <mailto:Ryu-devel@lists.sourceforge.net > <mailto:Ryu-devel@lists.sourceforge.net>> > > > https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > <https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> > > > > > > > > > > > > > -- > > *Douglas Harewood-Gill MSc MIET* > > CDT Student in Communications (PhD), University of Bristol > > Post-Graduate Student (Taught and Research) > > e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > <mailto:douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk>> > > > > * > > CDT Communications* > > > > University of Bristol, Merchant Venturers' Building, Woodland Road, > Clifton, Bristol. BS8 1UB > > > > http://www.bristol.ac.uk/ > > > > > > > > > > > ------------------------------------------------------------------------------ > > 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 <mailto:Ryu-devel@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/ryu-devel > <https://lists.sourceforge.net/lists/listinfo/ryu-devel> > > > > > > > -- > *Douglas Harewood-Gill MSc MIET* > CDT Student in Communications (PhD), University of Bristol > Post-Graduate Student (Taught and Research) > e-mail: douglas.harewood-g...@bristol.ac.uk > <mailto:douglas.harewood-g...@bristol.ac.uk> > > * > CDT Communications* > > University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, > Bristol. BS8 1UB > > http://www.bristol.ac.uk/ > > > > > ------------------------------------------------------------------------------ > 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