Age | Commit message (Collapse) | Author |
|
an example:
if 'ipv6_src' in match:
print match['ipv6_src']
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
add a new match field parser which fills OFPMatch attributes used
by the new api.
the old parser which fills match.fields is kept for now but will be
removed later.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
a new api to compose matches. it looks like:
match = OFPMatch(in_port=1,
eth_type=0x86dd,
ipv6_src=('2001:db8:bd05:1d2:288a:1fc0:1:10ee',
'ffff:ffff:ffff:ffff::'),
ipv6_dst = '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
the old match.set_foo and match.append_field methods are kept for now
but will be removed later.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
this will be used for OFPMatch from_jsondict implementation.
as json has no notion of tuples, we will use a list instead.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
also, implement text <-> binary convertions for field values. this will
be used for later ofproto api refinement. (and probably stringify stuff)
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This trick is contained in oslo.config.
Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
oslo.config is installed from PyPI
Signed-off-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
the latest ryu has an implementation.
also, tweak to use more band types.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
reported by Jyry Suuntala on ryu-devel@
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This patch allows users to manually insert flows into switches via OpenFlow1.3
in the following way:
curl -d '{"dpid":"1", "priority":"32768",\
"actions":[{"type":"SET_FIELD","field":"vlan_vid","value":10},\
{"type":"OUTPUT","port":2},\
{"type":"GOTO_TABLE","table_id":3}],\
"match":{"in_port":1}}' http://127.0.0.1:8080/stats/flowentry/add
Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
packet lib now uses bytes, not int/long, to represent ipv4 addresses.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
change ipv4 representation from int to bytes in many places.
replace homegrown bin<->text routines with addrconv for ipv4.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
implemented as a simple wrapper of netaddr.
background:
the goal is to use the consistent representations of addresses
throughout the tree, instead of the current ad-hoc representations
like a list of int16 for ipv6 address.
- netaddr style text (eg. '10.0.0.1', 'ff02::1') for ryu-app level api.
- on-wire binary for internal use.
this is the first step to the direction. ie. have a single
implementation of address representation conversion.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: Yuichi Ito <ito.yuichi0@gmal.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Reported-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: Isaku Yamahata <yamahata@private.email.ne.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
simplify the code a bit.
suggested by Isaku Yamahata.
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>
|
|
catch more specific exceptions instead.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
prefix OFPMeterBand.type and len with _ to avoid being picked by
stringifymixin.
they are redundant as json representation has python class name
like OFPMeterBandDrop.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
s/length/_length/
Trace:
[0x1000082e5f694c00] ('143.0.1.211', 56538): OFPGetConfigReply received:
flags=NORMAL miss_send_len=1518
Error in the datapath 1000082e5f694c00 from ('143.0.1.211', 56538)
hub: uncaught exception: Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/lib/hub.py", line 48, in _launch
func(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/controller/controller.py", line 312, in datapath_connection_factory
datapath.serve()
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/controller/controller.py", line 232, in serve
self._recv_loop()
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/controller/controller.py", line 97, in deactivate
method(self)
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/controller/controller.py", line 165, in _recv_loop
version, msg_type, msg_len, xid, buf)
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ofproto_parser.py", line 54, in msg
return msg_parser(datapath, version, msg_type, msg_len, xid, buf)
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ofproto_v1_3_parser.py", line 50, in msg_parser
return parser(datapath, version, msg_type, msg_len, xid, buf)
File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ofproto_v1_3_parser.py", line 2192, in parser
offset += b._length
AttributeError: 'OFPPort' object has no attribute '_length'
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This patch implements router Ryu application.
packet is forwarded on the static routing table.
The routing table can be set up by the REST commands.
and, Router can handle each vlan groups separately.
--------------------------------------------
* Example
case: Set static route on vlanID=10
From: address(172.16.10.0/24) belongs to the rest_router(switch_id=0000000000000001)
To : address(10.0.255.0/24) belongs to the gateway router(192.168.10.20)
- Following is the rest_router(switch_id=0000000000000001)'s setting.
If the gateway router operates by the rest_router Ryu applicaion too,
same setting is required.
1. add Address data(172.16.10.0/24, default_route=172.16.10.1)
$ curl -X POST -d '{"address":"172.16.10.1/24"}' http://localhost:8080/router/0000000000000001/10
2. add Address data(192.168.10.0/24, default_route=192.168.10.1)
$ curl -X POST -d '{"address":"192.168.10.1/24"}' http://localhost:8080/router/0000000000000001/10
3. add Static route(destination=10.0.255.0/24, gateway=192.168.10.20)
$ curl -X POST -d '{"destination":"10.0.255.0/24","gateway":"192.168.10.20"}' http://localhost:8080/router/0000000000000001/10
- route can not be registered, if gateway's address is not registered as 'address data'
4. check of the registered address data and routing data.
$ curl http://localhost:8080/router/0000000000000001/10
5. you can send packets from host(172.16.10.0/24) to gateway router(192.168.10.20),
and send to host(10.0.255.0/24) if gateway router is set up correctly.
(packet needs to contain vlan-tag=10)
--------------------------------------------
Please refer to rest_router.py comments, for other RESTcommand interfaces.
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
When ryu starts up, related openstack components (keystone and neutron)
might not be running. They might be during start up process.
In that case, quantum_adapter results in exception as follows.
So in order to avoid ordering of starting up, lazily initialize neutoron
api.
> hub: uncaught exception: Traceback (most recent call last):
> File "/ryu/lib/hub.py", line 48, in _launch
> func(*args, **kwargs)
> File "/ryu/base/app_manager.py", line 173, in _event_loop
> handler(ev)
> File "/ryu/app/quantum_adapter.py", line 398, in dp_handler
> ovs_switch = self._get_ovs_switch(dpid)
> File "/ryu/app/quantum_adapter.py", line 381, in _get_ovs_switch
> ovs_switch = OVSSwitch(dpid, self.nw, self.ifaces, self.logger)
> File "/ryu/app/quantum_adapter.py", line 167, in __init__
> token = _get_auth_token(logger)
> File "/ryu/app/quantum_adapter.py", line 90, in _get_auth_token
> httpclient.authenticate()
> File "/neutronclient/client.py", line 211, in authenticate
> content_type="application/json")
> File "/neutronclient/client.py", line 141, in _cs_request
> raise exceptions.ConnectionFailed(reason=e)
> ConnectionFailed: Connection to neutron failed: [Errno 111] ECONNREFUSED
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: Philipp Aeschlimann <aepp@zhaw.ch>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
The order between the notification of ovs port deletion via OVSDB protocol and
the notification network id/port deletion via REST from quantum plugin
isn't deterministic.
So when ovs port is deleted, the corresponding network id may or may not
exist.
The code wrongly assumed the order, so resulted in the following exception.
When ovs port is deleted and the corresponding network id isn't find,
just ignore the exception.
> (19257) accepted ('127.0.0.1', 36841)
> 127.0.0.1 - - [19/Jun/2013 11:24:25] "DELETE /v1.0/tunnels/networks/8179bb70-a63f-4c74-a82e-a21f3c275c9a/key HTTP/1.1" 200 115 0.000383
> hub: uncaught exception: Traceback (most recent call last):
> File "/opt/stack/ryu/ryu/lib/hub.py", line 50, in _launch
> func(*args, **kwargs)
> File "/opt/stack/ryu/ryu/base/app_manager.py", line 104, in _event_loop
> handler(ev)
> File "/opt/stack/ryu/ryu/app/quantum_adapter.py", line 368, in
> port_del_handler
> self._port_handler(ev.dp.id, port.port_no, name, False)
> File "/opt/stack/ryu/ryu/app/quantum_adapter.py", line 336, in _port_handler
> ovs_switch.update_port(port_no, port_name, add)
> File "/opt/stack/ryu/ryu/app/quantum_adapter.py", line 279, in update_port
> self._update_vif_port(old_port, add=False)
> File "/opt/stack/ryu/ryu/app/quantum_adapter.py", line 194, in
> _update_vif_port
> self.network_api.remove_port(network_id, self.dpid, port.ofport)
> File "/opt/stack/ryu/ryu/controller/network.py", line 368, in remove_port
> self.networks.remove(network_id, dpid, port_no)
> File "/opt/stack/ryu/ryu/controller/network.py", line 119, in remove
> raise NetworkNotFound(network_id=network_id)
> NetworkNotFound: no such network id 8179bb70-a63f-4c74-a82e-a21f3c275c9a
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
When tunnel key is registers, network is is not always
registered.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
When tunnel key add/del event fires, the corresponding network_id
does not necessarily exists due to race condition.
So mask it.
(15612) accepted ('127.0.0.1', 45714)
127.0.0.1 - - [25/Jun/2013 12:18:18] "DELETE
/v1.0/networks/462be334-3160-48ae-9ef8-a456dc866f8f HTTP/1.1" 200 115
0.000393
(15612) accepted ('127.0.0.1', 45715)
127.0.0.1 - - [25/Jun/2013 12:18:18] "DELETE
/v1.0/tunnels/networks/462be334-3160-48ae-9ef8-a456dc866f8f/key
HTTP/1.1" 200 115 0.000260
hub: uncaught exception: Traceback (most recent call last):
File "/opt/stack/ryu/ryu/lib/hub.py", line 50, in _launch
func(*args, **kwargs)
File "/opt/stack/ryu/ryu/base/app_manager.py", line 104, in _event_loop
handler(ev)
File "/opt/stack/ryu/ryu/app/gre_tunnel.py", line 233, in
tunnel_key_del_handler
for (dpid, port_no) in self.nw.list_ports(network_id):
File "/opt/stack/ryu/ryu/controller/network.py", line 325, in list_ports
return self.networks.list_ports(network_id)
File "/opt/stack/ryu/ryu/controller/network.py", line 103, in list_ports
raise NetworkNotFound(network_id=network_id)
NetworkNotFound: no such network id 462be334-3160-48ae-9ef8-a456dc866f8f
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|