add router Ryu application

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>
This commit is contained in:
watanabe.fumitaka 2013-07-09 10:42:14 +09:00 committed by FUJITA Tomonori
parent 66b0c290be
commit 7099838c3f

1831
ryu/app/rest_router.py Normal file

File diff suppressed because it is too large Load Diff