| 506 | |
| 507 | '''3/1''' [[BR]] |
| 508 | We re-visit and revise the event filter/dispatch subsystem. This is layer 3 in our control node. |
| 509 | |
| 510 | 1. Event Types - the types of events we can receive from Floodlight's core system. |
| 511 | * switch - new, port change, removed |
| 512 | * message - various !OpenFlow messages: we stick to Packet_In, Port_Stat, Vendor (custom messages), each a separate event |
| 513 | * device - new, removed, changed ( IP, VLAN, MOVED ) |
| 514 | * all - everything above |
| 515 | |
| 516 | 2. Filter Types - the fields of things to match an event on. Varies with the type of event. We want a stable basis, and let the remote services take care of the finer details. Off the top of the mind: |
| 517 | * switch - DPID, current event trigger switch |
| 518 | * device - MAC, current event trigger device, DPID of attachment |
| 519 | * Packet_Ins - certain device (or event trigger device), certain switch (event trigger switch) - by MAC and DPID, respective (we're narrowing our choices for sanity) |
| 520 | * Port_Status - ??? |
| 521 | * Vendor - Vendor ID |
| 522 | * all - anything in that event |
| 523 | |
| 524 | 3. Process chain operations, associated with each server (sID), after we send it off to our service provider: |
| 525 | * ALLOW - just a server telling us to carry on with local processing of the message. Don't write out, just return CONTINUE |
| 526 | * SPLIT - keep processing after sending up - write out and return CONTINUE |
| 527 | * DIVERT - stop processing the message, don't continue until the server answers - write out, save message context (indicate it had been DIVERTED so it can be resumed upon return), return STOP |
| 528 | * DENY - a server wanting us to just drop the message. Don't write out, return STOP. |
| 529 | |
| 530 | These return consensus-driven CONTINUE or STOP commands if multiple servers are interested in one event type. In general, we want to be conservative - STOP-related ops like DIVERT take precedence over Continue-related ops like SPLIT. Basically all of these are ANDed together. |
| 531 | |
| 532 | Dispatcher behavior algorithm. |
| 533 | [[Image(dispatch-algo.png)]] |