614 | | ==== w/o 3/16-3/22 ==== #w26 |
615 | | |
616 | | |
| 614 | ==== w/o 3/31-4/1 ==== #w28 |
| 615 | Topic: Some thoughts about the role of core controller components, versus modules. |
| 616 | |
| 617 | A controller in context of the current states of things, divides the control plane (or what was considered the control plane early on) into an application layer, and the system underlying it. The latter has become what is referred to as the control plane in the recent models of network operating systems. From a functional perspective, it appears as if the applications preform the computations specific to the behaviors imposed on the data plane, leaving the control plane to provide underlying functions such as network view abstraction and event scheduling and dispatch. (TODO: to look up the formal delegations for these layers) |
| 618 | |
| 619 | Using this idea as a basis, we can roughly guess at what functions belong where, and importantly, the breadth of functions to provide certain controller sub-components. What this leads to is that the core of a controller - the implementation of the control plane - probably does not generate control messages intended to modify the flow tables of the datapaths. This is a role left to the application layer, which among other things implements the network algorithms that manipulate the handling of traffic. |
| 620 | |
| 621 | The exercise here ties back into implementation. The current controller core does not respond to !PacketIns directly, but merely dispatches them to available modules (applications). The added message diversion function may be implemented in two ways, at first glance: |
| 622 | |
| 623 | 1. By halting the processing of the message by further modules |
| 624 | 1. Writing a drop message back (buffer set to -1)to the switch prompting instruction, then halting the processing |
| 625 | |
| 626 | The former does not prevent a datapath from sending further !PacketIns to the same event, while the latter does. While the latter is cleaner in handling, and prevents unnecessary handling of multiple copies of !PacketIns, it blurs the boundaries between application and control. A similar story holds for the return handling of a message processed by a remote server. Further processing of a response can be done at the client, but the extent of actions that the control plane can take are limited by the logical separation into two layers. |
| 627 | |
| 628 | Maybe keeping this in mind will make fleshing out and tuning the implementation into less of a pain... |