Changes between Version 15 and Version 16 of Internal/OpenFlow/FloodlightFVModule


Ignore:
Timestamp:
Jun 25, 2012, 10:31:46 PM (12 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/FloodlightFVModule

    v15 v16  
    88[#s Setup] [[BR]]
    99[#bg Background] [[BR]]
    10 [#a Approach] -  a diary-style log of the implementation.
     10[#a Approach] -  a diary-style log of the implementation. Following are some 'highlights' relevant to the software being ported in general:
    1111 * [#fl-1 Floodlight Module System]
    1212 * [#fv-1 Flowvisor FlowMap Overview]
    13  * [#fv-2 Flowvisor DB interface(?)]
     13 * [#fv-2 Flowvisor Internals, Continued]
    1414[#end jump to bottom.]
    1515== Overview. == #o
     
    197197The !Matchtype is used to describe ''Intersections'', descriptions of how two !FlowEntries relate. An intersection takes the form of a !FlowEntry built by choosing the more heavily constrained pattern for each header field and DPID(s). !FlowIntersect.java implements the representation of the intersection, and !FlowEntry defines matches(), which compares two !FlowEntries to produce the intersection. Comparisons are implemented in !FlowTestOp.java. 
    198198
    199 ==== (6/22):[Flowvisor DB interface(?)] ==== #fv-2
     199==== (6/22): ====
     200Some thoughts from reading Flowvisor code. 
    200201 * FVConfig interfaces database access operations pertaining to Flowspaces, slices, switches, and Flowvisor itself. The DB-related classes are all named *Impl.
     202 * The handling of messages received by Flowvisor are defined within the messages themselves, as part of the implementation of Classifiable and Sliceable interfaces.
    201203 * The static flow pusher and related components may be eventually useful for these configuration aspects.
    202204
     205==== (6/25):[Flowvisor Internals, cont'd] ==== #fv-2
     206Today's conference call elucidated quite a bit about the workings of the !FlowMap and how it fits in with the rest of the system.
     207
     208''Item 1: the usage of config databases.'' [[BR]]
     209In Flowvisor, the !FlowMap is coupled to the database, but only loosely - the specific implementations are, indeed, hidden behind FVConfig. Furthermore, the database is only accessed when:
     210
     211 * an FVClassifier initializes connections to controllers (see FVClassifier.java:751)
     212 * the flowspace changes.
     213
     214in short, the database is a convenience item for storing configurations, and for initial purposes of this project, something that can likely be dealt with later.     
     215
     216''Item 2: !FlowMap internals.'' [[BR]]
     217The two implementations of interface !FlowMap process the flowspace very differently.
     218
     219The Linear !FlowMap takes a literal copy of the flowspace; to save space, the flowspace is carted up by DPID, and the piece representing the 'correct' DPID e.g. matching that of the incoming message, is processed. 
     220
     221The Federated !FlowMap manipulates references. If multiple !FlowMaps existed, they would all point to the same flowspace. This !FlowMap relies on a global bitset, indexed by !FlowEntry ID, to keep track of entries that are part of a intersection (1=member, 0=otherwise). Starting with DPID, each field of a OFMatch is taken and compared to those of the flow entries. Each field is stored in its own hashmap, keyed by value. Each field comparison should narrow the number of 1's in the global bitset. At the end, the entry with the highest priority is chosen.   
     222
     223The goal of the Federated !FlowMap is speed - many of its operations are kept to bitwise ops, and storage, hashmaps. Slower operations that involve loops e.g. IP address matching, are kept until later when the set of entries to work with is smaller.
     224
    203225== . ==#end