35 Commits

Author SHA1 Message Date
FUJITA Tomonori
50ad776a32 packet: lldp: python3 fix
iterator doesn't has next method.

Reported-by: Takeshi <a86487817@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tested-by: Takeshi <a86487817@gmail.com>
2015-09-28 22:11:06 +09:00
Chia-Lin Cho
2b527f67ef topology: Fixed conditional statement
_is_edge_port(port) in switches.py will return `False` if the port belongs to link.

Signed-off-by: Chia-Lin Cho <fox91119@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-09-15 17:00:46 +09:00
Takeshi
0d405de657 Remove hosts from edge port when link added
Host could be added into edge port if host packet arrived before lldp
packet.

Signed-off-by: Takeshi <a86487817@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-08-24 14:04:09 +09:00
Takeshi
6cdc2720f1 Add register_service to topology events
If an application consumes topology event,  Switches application should
start automatically.

Signed-off-by: Takeshi <a86487817@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-08-20 18:14:22 +09:00
Takeshi
2281b7a6ae Add EventHostAdd event.
This event is generated when a new host is added to a switch.

Signed-off-by: Takeshi <a86487817@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-08-20 18:14:19 +09:00
Takeshi
af63e5f519 add host discovery functions
Signed-off-by: Takeshi <a86487817@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-07-18 15:28:46 +09:00
IWAMOTO Toshihiro
57f9f8f27d python3: Use {encode, decode}('ascii') for text packet data
Some packet data are ascii type.  Use {encode,decode} to make
python3's struct.pack happy.

Signed-off-by: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2015-07-03 11:38:00 +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
Wei-Li Tang
1bac27ed27 topology/switches: add of1.2+ support for the drop_packet function.
Signed-off-by: Wei-Li Tang <alextwl@xinguard.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-12-28 10:26:50 +09:00
YAMADA Hideki
a5c1841e44 app_manager: Let application module to use require_app()
Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-06-14 22:44:56 +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
f295487bef topology/switches: 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
d70c9aed32 ryu.topology.api: request ryu.topology.switches
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-25 23:22:14 +09:00
Isaku Yamahata
7de6dbdb44 topology: split out exported API from the implementation
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
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
Wei-Li Tang
b2ce73e16b topology/switches: duplicate datapath connections handling
The way to handle multiple connections from the same datapath I took
is mostly the same as in dpset, but it's always good to reinstall
the LDAP Packet-In flows even while switch tries to reconnect to us.

Signed-off-by: Wei-Li Tang <alextwl@xinguard.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-03-22 21:26:45 +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
FUJITA Tomonori
78fede3f51 topology: support OF1.2 and 1.4
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
2014-02-13 15:04:50 +09:00
Srini Seetharaman
53e41b6c4e topology: Setting highest rule priority to LLDP packets
Signed-off-by: Srini Seetharaman <srini.seetharaman@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2014-01-06 20:34:08 +09:00
Srini Seetharaman
b039832213 topology: add of13 support
Signed-off-by: Srini Seetharaman <srini.seetharaman@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-12-20 14:01:18 +09:00
YAMAMOTO Takashi
b7235b395a topology.switches: stop abusing Packet.next()
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-11-22 11:38:12 -08:00
YAMAMOTO Takashi
8cbfc3f55a topology.switches: fix link discovery
fix a regression introduced by text address changes.

problem reported by Tonh o - Antonio Brasolin
patch tested and fixed by YAMADA Hideki

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-09-26 15:26:31 +09:00
YAMAMOTO Takashi
c27f2f17e2 topology.switches: fix bin vs text address problem
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-08-26 15:04:47 +09:00
YAMAMOTO Takashi
db1bd93230 topology.switches: update after packet lib api changes
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-08-01 14:25:44 +09:00
YAMAMOTO Takashi
b2636e0cc1 use ofproto.OFP_NO_BUFFER in some places
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-07-09 12:33:17 +09:00
Isaku Yamahata
e943f61068 topology/switches: exception during serialization
Datapath.send_packet_out() requires buffer_id, not dpid.

> Traceback (most recent call last):
>   File "/usr/lib/pymodules/python2.7/gevent/greenlet.py", line 390, in run
>     result = self._run(*self.args, **self.kwargs)
>   File "ryu/base/app_manager.py", line 126, in _event_loop
>     handler(ev)
>   File "/ryu/topology/switches.py", line 697, in packet_in_handler
>     self._drop_packet(msg)
>   File "/ryu/topology/switches.py", line 640, in _drop_packet
>     dp.send_packet_out(dp.id, msg.in_port, [])
>   File "/ryu/controller/controller.py", line 242, in send_packet_out
>     self.send_msg(packet_out)
>   File "/ryu/controller/controller.py", line 216, in send_msg
>     msg.serialize()
>   File "/ryu/ofproto/ofproto_parser.py", line 119, in serialize
>     self._serialize_body()
>   File "/ryu/ofproto/ofproto_v1_0_parser.py", line 1987, in _serialize_body
>     self.buffer_id, self.in_port, self.actions_len)
>   File "/ryu/ofproto/ofproto_parser.py", line 128, in msg_pack_into
>     buf += struct.pack(fmt, *args)
> error: 'I' format requires 0 <= number <= 4294967295
> <Greenlet at 0x229bd98: <bound method Switches._event_loop of <switches.Switches object at 0x1c8e690>>> failed with error

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-06-28 23:13:37 +09:00
Isaku Yamahata
58e86b188c topology/switches: packet in handler
The logic of counting sent packet seems wrong.

Reported-by: Q Lady <holynn.q@gmail.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-06-28 22:16:53 +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
OHMURA Kei
e64bb2b43f topology/dumper: define contexts to receive events
Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-04-07 13:40:26 +09:00
Isaku Yamahata
3d8d88e5dc ryu/topology/switches: simplify Switches with RyuApp.reply_to_request
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-04-07 11:11:17 +09:00
Isaku Yamahata
7bd83a89a2 topology/dumper: use handler.set_ev_cls instead of set_ev_handler
There is no point for dumper.py to use handler.set_ev_cls.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-04-07 11:09:36 +09:00
YAMAMOTO Takashi
29ada11eed topology/dumper: fix RyuApp.__init__ signature
so that this is at least instantiatable.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Acked-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-04-01 21:17:54 +09:00
YAMADA Hideki
fd7a4e6119 topology: Add REST API
1. run topology/switches and app/rest_topology
$ ./bin/ryu-manager --verbose --observe-links ryu/topology/switches.py ryu/app/rest_topology.py

2. You can get topology json
$ curl http://127.0.0.1:8080/v1.0/topology/links
[{"src": {"hw_addr": "06:96:65:51:f8:ff", "name": "s2-eth3", "port_no": "00000003", "dpid": "0000000000000002"}, "dst": {"hw_addr": "4a:ed:13:ea:b7:e0", "name": "s1-eth1", "port_no": "00000001", "dpid": "0000000000000001"}}, {"src": {"hw_addr": "4a:ed:13:ea:b7:e0", "name": "s1-eth1", "port_no": "00000001", "dpid": "0000000000000001"}, "dst": {"hw_addr": "06:96:65:51:f8:ff", "name": "s2-eth3", "port_no": "00000003", "dpid": "0000000000000002"}}, {"src": {"hw_addr": "1e:7b:0b:fc:0a:2f", "name": "s1-eth2", "port_no": "00000002", "dpid": "0000000000000001"}, "dst": {"hw_addr": "4e:62:98:6f:16:57", "name": "s3-eth3", "port_no": "00000003", "dpid": "0000000000000003"}}, {"src": {"hw_addr": "4e:62:98:6f:16:57", "name": "s3-eth3", "port_no": "00000003", "dpid": "0000000000000003"}, "dst": {"hw_addr": "1e:7b:0b:fc:0a:2f", "name": "s1-eth2", "port_no": "00000002", "dpid": "0000000000000001"}}]

$ curl http://127.0.0.1:8080/v1.0/topology/switches
[{"ports": [{"hw_addr": "4a:ed:13:ea:b7:e0", "name": "s1-eth1", "port_no": "00000001", "dpid": "0000000000000001"}, {"hw_addr": "1e:7b:0b:fc:0a:2f", "name": "s1-eth2", "port_no": "00000002", "dpid": "0000000000000001"}], "dpid": "0000000000000001"}, {"ports": [{"hw_addr": "be:3b:8d:77:14:a5", "name": "s2-eth1", "port_no": "00000001", "dpid": "0000000000000002"}, {"hw_addr": "1e:bf:ec:8b:c2:5b", "name": "s2-eth2", "port_no": "00000002", "dpid": "0000000000000002"}, {"hw_addr": "06:96:65:51:f8:ff", "name": "s2-eth3", "port_no": "00000003", "dpid": "0000000000000002"}], "dpid": "0000000000000002"}, {"ports": [{"hw_addr": "52:a2:9a:7a:a8:a1", "name": "s3-eth1", "port_no": "00000001", "dpid": "0000000000000003"}, {"hw_addr": "62:25:ff:a5:a1:1a", "name": "s3-eth2", "port_no": "00000002", "dpid": "0000000000000003"}, {"hw_addr": "4e:62:98:6f:16:57", "name": "s3-eth3", "port_no": "00000003", "dpid": "0000000000000003"}], "dpid": "0000000000000003"}]

Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-31 18:13:12 +09:00
YAMADA Hideki
2a7e193fae topology: exported function returns Switch/Link list instead of event
Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2013-03-31 18:12:34 +09:00
YAMADA Hideki
7d5a68cdc2 topology: support link discovery
event.py: add link events.
switches.py: add link discovery (only of1.0).
dumper.py: add handler for link events.

TODO: support other OpenFlow version.

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:11 +09:00
YAMADA Hideki
443891b1c4 topology: switch discovering module
This is an alternative of dpset, which supports event passing.

event.py: event class
switches.py: switch(datapath) discovery app using ofp_event
dumper.py: test and example app using switch discovery event

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:08 +09:00