142 Commits

Author SHA1 Message Date
Yusuke Iwase
b6e280172a ofp_handler: Output human readable error msg ev log
Currently, the error message event log which is output by ofp_handler.py
is difficult to understand what is wrong in the previous OpenFlow request
message.
This patch improves the readability of this output to find out errors.

*** Output Example ***
EventOFPErrorMsg received.
version=0x4, msg_type=0x1, msg_len=0x4c, xid=0xecc7f07b
 `-- msg_type: OFPT_ERROR(1)
OFPErrorMsg(type=0x4, code=0x9, data=b'\x04\x0e\x00\x58\xec\xc7\xf0\x7b\x00\x0
0\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x2b\x67\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x0
0\x01\x00\x0c\x80\x00\x18\x04\xc0\xa8\x00\x01\x00\x00\x00\x00')
 |-- type: OFPET_BAD_MATCH(4)
 |-- code: OFPBMC_BAD_PREREQ(9)
 `-- data: version=0x4, msg_type=0xe, msg_len=0x58, xid=0xecc7f07b
     `-- msg_type: OFPT_FLOW_MOD(14)

Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-09-10 11:14:58 +09:00
Fadi Moukayed
3706eec9bc Python 3: Fix search for bound methods
Signed-off-by: Fadi Moukayed <smfadi@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-08-10 10:54:11 +09:00
FUJITA Tomonori
0de43f7b60 OF: send fin/ack in response to fin packet
Calls socket's close().

Reported-by: Guru Chaitanya Perakam <gperakam@Brocade.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tested-by: Guru Chaitanya Perakam <gperakam@Brocade.com>
2015-07-29 14:57:30 +09:00
IWAMOTO Toshihiro
c0590ea903 python3: Adapt to new iterator names
This patch is generated by "2to3 -f dict" and irrevant parts were
hand-removed.

Signed-off-by: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-06-20 21:19:12 +09:00
Satoshi Kobayashi
2a00087221 Suppress warning
UserWarning is always shown when ryu.controller.dpset.DPset is loaded. It is noisy.

Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-05-02 14:29:40 +09:00
Satoshi Kobayashi
172d9702ac Show warning when Datapath#ports is read
Datapath#ports is kept for compatibility with the previous openflow versions (< 1.3). Datapath#ports is not updated when received EventOFPPortStatus. This behavior may confuse users. Wherefore, showing warning message when the user accesses to Datapath#ports with the currently openflow versions (>= 1.3) is friendly.

Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-04-08 12:57:49 +09:00
Satoshi Kobayashi
325c9ae9c3 Syntax level compatibility with Python 3
We use syntaxes which can be used only in Python2 at many locations. But we should reduce the use of the syntaxes. This patch serves syntax level compatibility with Python3. However, for full compatibility is required still a lot of work because many API changes are made between 2 to 3.

Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-04-08 12:57:45 +09:00
Yoshihiro Kaneko
2eb59a09ff doc: add components page
port from wiki.

dummy quantumclient is necessary to import ryu.app.quantum_adapter by
sphinx.ext.autodoc.

Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
2014-05-27 20:24:50 +09:00
Yoshihiro Kaneko
16839dfc68 controller: fix pep8
Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-05-14 13:19:16 +09:00
YAMAMOTO Takashi
5f57cfd16a ofp_event: add a function to find Event class for given OFP class
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-04-10 07:09:56 +09:00
YAMAMOTO Takashi
77e82d3111 controller.handler: simplify code
and use consistent variable names.  no functional changes.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-04-10 07:09:56 +09:00
YAMAMOTO Takashi
d27deb34be controller.handler: use normal classes rather than a namedtuple
and add some comments.  no functional changes.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-04-10 07:09:56 +09:00
YAMAMOTO Takashi
97bf63e7c7 controller.handler: g/c now unused code
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-04-10 07:09:51 +09:00
FUJITA Tomonori
0d377522a8 of: set TCP_NODELAY for secure channel socket
Due to Nagle, an OF message that an application sends might be not
delivered to a switch immediately. This patch disables Nagle. This has
bad effect on throughput. I think that the latency matters for any
management channel. To avoid throughput drop, we could use TCP_CORK on
Linux but it's linux specific.

Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-26 06:12:18 +09:00
YAMAMOTO Takashi
cd615a2f04 app_manager: add a function to request to load the server application
this is similar to handler.register_service but for client-server
style applications.  register_service is not appropriate for such
applications becuase normally the client does not consume
(in the sense of set_ev_cls) asynchronous events from the server.

note: this automatically load the server only if "api" module is
directly loaded from the module defining the client application.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-25 23:21:51 +09:00
ISHIDA Wataru
80ff7368fe enable multistage @set_ev_cls or @set_ev_handler
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-25 21:38:34 +09:00
YAMAMOTO Takashi
81d6f1e252 ofp_event: fix a typo
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-18 13:46:03 +09:00
ISHIDA Wataru
08f7517234 dpset: absorb *args, **kwargs passed to __init__
dpset might be initialied implicitly like OFPHandler.
In that case, _CONTEXTS are passed to dpset. so we should ignore them.

Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-16 21:13:21 +09:00
YAMAMOTO Takashi
7b1d0eb9d6 reduce direct uses of oslo.config.cfg.CONF
no functional changes are intended.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-16 20:28:10 +09:00
YAMAMOTO Takashi
37fed5c764 handler.register_service: comment
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-02-11 17:24:43 +09:00
YAMAMOTO Takashi
c0fd8a0a95 controller: use ProtocolDesc
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-02-05 20:59:07 +09:00
FUJITA Tomonori
cc97a58505 dpset: start up dpset if there are subscribers of dpset events
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-01-24 10:12:05 +09:00
Satoshi Kobayashi
c9325a22c0 fix bidirectional event confusion
EventRequestBase has EventReplyBase

Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-01-23 15:42:51 +09:00
FUJITA Tomonori
328385df86 enable OpenFlow 1.4
Adds the very basic features for L2 switch. Kinda simple_switch_14.py
successfully works with LINC switch.

- HELLO
- FEATURES_REQUEST_REQUEST/REPLY
- GET_CONFIG_REQUEST/REPLY
- SET_CONFIG
- PACKET_IN
- MULTIPART_REQUEST/REPLY (only flow_stats)
- PACKET_OUT
- FLOW_MOD

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-01-15 19:52:48 +09:00
FUJITA Tomonori
5dfb0ffb45 ofp: use RyuApp start() to return Greenlet thread
starts OFP like other applications. Kill the original way to start OFP
(start_service).

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
2013-11-25 17:50:30 +09:00
FUJITA Tomonori
cafb17781b fix the regression due to e45f382e51c9a3d57a6d8c01cec9e70f7ca364fd
OFcontroller is not started due to:

e45f382e51c9a3d57a6d8c01cec9e70f7ca364fd
Author: Isaku Yamahata <yamahata@valinux.co.jp>
Date:   Fri Nov 22 16:45:59 2013 +0900

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-22 22:04:16 -08:00
FUJITA Tomonori
4cb7683f2f skip malformed OF messages and continue instead of stopping
Needs to catch more kinds of exceptions (e.g. TypeError).

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-20 05:52:04 -08:00
FUJITA Tomonori
73ae9dd109 solve application dependency via @set_ev_cls
Currently, ryu always starts ofp application because ryu doesn't know
applications that an user specifies needs ofp application or not. So
you can't run two ryu instances even if one of them doesn't use ofp
application because two instances tries to listen the same port.

The root problem is that there is no way to represent dependency
between applications. The patch to invent our own json format to
represent such was proposed ago but I'm still not sure we really need
such complicity.

This tries to solve the problem simply. A module defining events for
an application calls register_service() to declare which application
generates the events, e.g., ofp_event.py call register_service() with
'ofp_handler' argument. If an application starts including @set_ev_cls
for ofp_event, ryu-manager starts ofp application (ofp_handler).

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-17 15:37:29 +09:00
YAMAMOTO Takashi
47f1d19538 dpset: fix a reconnect race
this should fix the following crash recently reported
by wataru yamamoto on ryu-devel.

hub: uncaught exception: Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/ryu/lib/hub.py", line 48, in _launch
    func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ryu/base/app_manager.py", line 110, in _event_loop
    handler(ev)
  File "/usr/local/lib/python2.7/dist-packages/ryu/controller/dpset.py", line 157, in dispacher_change
    self.register(datapath)
  File "/usr/local/lib/python2.7/dist-packages/ryu/controller/dpset.py", line 100, in register
    assert dp.id not in self.dps
AssertionError

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-15 09:11:50 +09:00
YAMAMOTO Takashi
8d4d74ac42 dpset: add some docstrings
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-15 09:11:50 +09:00
YAMAMOTO Takashi
be9ebaf431 dpset: remove dead code
this "dp_type" stuff has been there for almost 2 years
without being used at all.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-15 09:11:50 +09:00
YAMAMOTO Takashi
8aa44aa324 dpset: prefix private methods with _
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-15 09:11:50 +09:00
FUJITA Tomonori
0bec11600b dpset: support OF1.3
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tested-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
2013-08-06 08:56:25 +09:00
Isaku Yamahata
a86e9b7ab4 network: add a helper function to list ports that doesn't raise
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-13 08:17:49 +09:00
Isaku Yamahata
1fd877f7c1 network.py: exception in Networks.remove_port()
Neutron plugin can call remove_port after network deletion for
automatic delete port like router/dhcp port. So ignore NetworkNotFound
exception.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-13 08:17:16 +09:00
Isaku Yamahata
068020de3b network: sort out order between event and actual deletion of network
And make Network.remove_network more robust.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-13 08:15:57 +09:00
Isaku Yamahata
93a2604f77 network.py: sort out order between event and actual deletion of port
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-13 08:15:56 +09:00
Isaku Yamahata
a82f0baf10 controller/network: pylint
W: 18,0: Unused import logging

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-12 07:11:20 +09:00
YAMAMOTO Takashi
852c2e882f datapath_connection_factory deal with None datapath.id
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-06-20 06:41:30 +09:00
YAMAMOTO Takashi
2caf583a7e use dpid_to_str in some places
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-18 04:43:22 +09:00
Isaku Yamahata
d00268a6fe ofproto: exception during startup related ofp module detaction
This patch fixes the following exception.

ryu/controller/ofp_event.py: update
cd /opt/stack/ryu && /opt/stack/ryu/bin/ryu-mana ^Mger --config-file /etc/ryu/ryu.conf || touch "/opt/stack/status/stack/ryu.failur ^Me"
> Traceback (most recent call last):
>   File "/opt/stack/ryu/bin/ryu-manager", line 41, in <module>
>     from ryu.base.app_manager import AppManager
>   File "/opt/stack/ryu/ryu/base/app_manager.py", line 22, in <module>
>     from ryu.controller.handler import register_instance
>   File "/opt/stack/ryu/ryu/controller/handler.py", line 20, in <module>
>     from ryu.controller import ofp_event
>   File "/opt/stack/ryu/ryu/controller/ofp_event.py", line 69, in <module>
>     for ofp_mods in ofproto.get_ofp_module():
> TypeError: get_ofp_module() takes exactly 1 argument (0 given)

Reported-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-14 12:49:30 -07:00
Isaku Yamahata
4006436f9a controller/ofp_event: don't hardcode supported OFP parser module
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-14 00:43:18 +09:00
YAMAMOTO Takashi
359efd73aa controller: stop catching GreenletExit
no longer necessary after the hub changes.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-10 00:36:34 +09:00
YAMAMOTO Takashi
fe6f94434c controller: fix send queue draining again
and this time add comments to explain the intention.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-01 22:18:39 +09:00
YAMAMOTO Takashi
9e6d3053c0 sweep the tree to change from gevent to ryu.lib.hub
mostly mechanical changes.
also, change the requirement from gevent to eventlet.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-05-01 22:18:39 +09:00
YAMADA Hideki
c249e76c3e event: Add sync flag and event src for request/reply
- To distinguish synchronous request or not.
- Event src is needed for asynchronous request too.

Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-25 03:13:05 +09:00
YAMAMOTO Takashi
e3fb48a0e0 TLS: test cli options consistently in the same line
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-18 22:26:35 +09:00
Yoshihiro Kaneko
2ac7a9cf6c ryu.controller.controller.Datapath: keep handler list regardless of state
The list of handler to be called for the OFP message should be kept
even if the state is changed in a handler.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-18 16:34:51 +09:00
FUJITA Tomonori
9fcc42d2e1 ofp: send events to others before calling own handlers
Some own handlers change the state so needs to send events before
calling own handlers.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-07 16:44:54 +09:00
YAMAMOTO Takashi
998a8ad543 log-cleanup: per RyuApp logger
let RyuApp provide its own logger.
use it instead of per-module logger where appropriate.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-06 01:35:14 +09:00