396 | | |
| 396 | ==== (8/9) ==== |
| 397 | Bullet points for record keeping. [[BR]] |
| 398 | The packet processing chain has taken the following form: |
| 399 | |
| 400 | * FlowVisor::FVChannelHandler.handleMessage() |
| 401 | * FlowVisor::FVChannelHandler.classifyOFMessage() |
| 402 | * FlowVisor.handleMessage() |
| 403 | * FVClassifier.classifyFromSwitch() |
| 404 | * FVSlicer.sendMsg() - sets writing Slicer to itself |
| 405 | Within a Module |
| 406 | * IFloodlightModule.receive() |
| 407 | * FVClassifier.write() |
| 408 | |
| 409 | * FVSlicer.write() |
| 410 | * FVSlicer.sliceFromController() |
| 411 | * FVClassifier.sendMsg() |
| 412 | * FVClassifier.write() - to Netty channel |
| 413 | |
| 414 | Where FlowVisor is derived from Controller, and FVClassifier from IOFSwitchImpl. |
| 415 | |
| 416 | ==== (8/10) ==== |
| 417 | The dispatch of modules from slices is a fairly complicated task, since Floodlight "just" produces a list of modules to run based on OFType, while we need to dispatch not only based on original concerns such as the way Floodlight produces the list of modules, but also on slice rules. Not only this, a slice cannot simply call its module and be done with it; modules might be dependent on others, e.g. must get results from other modules in order to work. An example of this case is the topology module, which needs the information collected by the link discovery module. |
| 418 | |
| 419 | * The full list of services that floodlight uses to quickly find the modules to run is also organized by OFType. |
| 420 | * The slices cannot directly get access to this list. |
| 421 | * even if we want to pass the list to the slices, we don't know which slice to hand it to before a classifier does its job. |
| 422 | |
| 423 | /something/ needs to be done before the soft deadline of (8/13). |