I think you've mostly got it.
There are a few points I would make though.
The path P_0
, from R
to C_1
, is often (but not always) implemented 'out-of-band', as a separate network.
Only one, or a handful, of packets for each network flow should reach C_1
. As soon as the flows are inserted by the AmyOSPF controller, they are simply forwarded according to that routing logic. This is what the second quote says.
No. AmyOSPF computes the best path P_1
from R
to the destination of the packets, wherever that may be. It can do this without talking to the switches.
The flow entries that make up the path P_1
is then sent to the routers on P_1
, so that all traffic coming from Amy's machine to a particular destination are sent along that path, without having to go to the controller. In the case of R
, this new flow entry must have higher priority than the one that says to send all traffic from that port to the controller.
It's not really a multicast, the controller has a separate connection to each switch/router. The flow entries may be slightly different for each router too.
The point is that it doesn't matter what 'view' the router has, as all of the routing is done in the controller. But C_0
does have a global view.
This will have to be repeated for each new network flow originating from Amy's machine. It wouldn't make sense to create a path from R
to X
and then send packets destined for Y
along it. Having said that, flow entries can be aggregated.
Routing protocols, in general, are used to populate the routing tables and not to forward packets.
Between two AS it is generally BGP that is used to exchange routes, and within an AS, it can be OSPF, but could also be IS-IS, EIGRP or any routing protocol.
A given router can use several routing protocols at the same time.
Lets say a router is configured to use OSPF and BGP.
The router will keep in memory different routing tables:
- one for routes learn trough OSPF
- one for routes learn trough BGP
- one for routes added statically by the router administrator
- one for network directly connected
The forwarding table is built by selecting routes within all those tables.
For each network that exists in at least one routing table, the router select the best one and put it in its forwarding table.
When the router receive a packet, it looks only in its forwarding table to decide where to send it. Where the route comes from has no importance at this point.
Best Answer
Openflow is to SDN
as
OSPF is to Routing