Extra Routes API

This document describes MidoNet’s implementation of extra routes Neutron extension API.

Problem Description

MidoNet plugin has not implemented extra routes extension API, and without it, MidoNet’s routing table management feature could not be exposed.

Proposed Change

MidoNet plugin implements the extra routes extension. Current design of extra routes, however, only contains ‘destination’ and ‘nexthop’ fields, representing the destination CIDR to match on the packet and the next hop gateway IP address. MidoNet plugin extends the current extra route API to add more fields in the route model to provide more detailed management of the routing table.

Plugin

Add ‘extraroute’ in the supported_extension_aliases list.

Extend ‘extraroute’ extension and add a ‘source’ field, and validate ‘source’ the same way ‘destination’ is validated.

REST API

Router

Extra routes extension adds the ‘routes’ field in the router requests and responses, which is a list of route objects where each route consists of:

Attribute Name

Type

POST/ PUT

Required

Description

destination

string (CIDR)

PUT

Yes

CIDR to match on the packet’s destination ip

Default: 0.0.0.0/0

source

string (CIDR)

PUT

No

CIDR to match on the packet’s source ip

Default: 0.0.0.0/0

nexthop

string (CIDR)

PUT

Yes

IP of the next hop gateway

DB Model

AdvancedExtraRoute

table name: midonet_router_routes

‘router_routes’ table in Neutron is used to store the extra routes. In addition, to store the midonet-specific field, ‘source’, ‘midonet_router_routes’ table is introduced:

Name

Type

Description

source

String(64)

Source CIDR to match on

router_id

String(36)

ID of the router the route belongs to

‘router_id’ has a foreign key constraint defined for ‘id’ column of the ‘routers’ table.

Client

The CLI command to update a router accepts the following new argument:

::
neutron router-update ROUTER_ID –routes type=dict list=true

[–source SOURCE]

–source SOURCE:

source CIDR of the route

Documentation

Operational Guide must be updated to explain the ‘source’ field added in the extra route extension.