Changes between Version 55 and Version 56 of Internal/OpenFlow/Controllers/MultiCtl


Ignore:
Timestamp:
Mar 15, 2013, 7:48:02 AM (12 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/Controllers/MultiCtl

    v55 v56  
    1010[#iv Logs] - records of work
    1111 || [#w1 week1] || [#w7 week7]   || [#w13 week13] || [#w24 week24] ||
    12  || [#w2 week2] || [#w8 week8]   || [#w15 week15] || ||
     12 || [#w2 week2] || [#w8 week8]   || [#w15 week15] || [#w25 week25]  ||
    1313 || [#w3 week3] || [#w9 week9]   || [#w17 week17] || ||
    1414 || [#w4 week4] || [#w10 week10] || [#w19 week19] || ||
     
    554554The matching occurs in the dispatcher, and returns a set of service IDs and next-hop UIDs.
    555555
     556==== w/o 3/10-3/15 ==== #w24
     557'''Route setup/capabilities advertisement.'''
     558
     559Controllers inform one another of the services that they provide to the control plane. This information is conveyed in the form of a unique service ID (SID) and a series of network events of interest to the service, which should be forwarded to the service in order for them to be properly handled. Control plane service sets are learned by controllers via messages exchanged and propagated across the hierarchy. We construct a message propagation mechanism beginning with the following assumptions:
     560
     561 * since no tier serves a tier above, advertisements only need to move downwards, from high to low tiers.
     562 * control planes remain small and topologically restricted compared to the data plane.
     563 * peers do not serve one another e.g. disregard one another's services, as they provide identicalfunctionalities. Therefore advertisements are disregarded among peers.
     564
     565While the hierarchy restricts the flow of message propagation, measures must be taken to prevent loops, notably within the bidirectional horizontal connections. In addition, multiple routes to a server may exist in the control plane, in which case we wish to choose a shortest path. We employ a message propagation mechanism and path selection mechanism similar to RIP with split horizon:
     566
     567{{{
     568if message received
     569  extract hop count, SID
     570  if SID has already been seen
     571    if this hop count < old hop count
     572      discard old next hop
     573  else
     574    if message is from peer
     575      discard message
     576    else
     577      record SID and next hop
     578for each known adjacency
     579  if not sender of message
     580    send to adjacency
     581}}}   
     582
     583the first block is the path selection stage, and the second, the forwarding stage. Paths are selected based on hop count, as a simple metric that is meaningful in networks whose links have approximately equal throughput.     
     584
     585----
     586'''Forwarding table/filtration subsystem.'''
     587
     588The filter system (forwarding table) pulls up subscribers when events are dispatched. Subscribers are returned by their service IDs, which allows for remapping of Service IDs to next hop, the latter whose mapping to SID is maintained in the route table. This allows for tracking of bot best next hop and event-to-SID mapping despite possibilities of changes in next hop.
     589
     590The syntax of the filter is simple, only functioning on matching against six items:
     591 * DPID : as a hex string beginning with '0x'
     592 * VLAN : a integral value
     593 * Source/destination Hardware address : six colon-separated hex values '00:00:ab:cd:ef:90'
     594 * Source/destination IP address : dotted-decimal integers 'x.x.x.x'
     595 * event trigger item : event type.
     596
     597Event trigger item refers to the cause of a certain event, e.g. a network host that triggered a new device event. So far, the first five are implemented. The last is a dilemma, as it can become a choke point in concurrency when event triggers are updated or checked frequently.
     598
     599Items are described as source, destination, or any. source or destination only apply to network and hardware addresses and these specifiers are ignored for DPID and VLAN. 'any' is a wildcard that matches on either source or destination, and is a default for DPID and VLAN.
     600
     601In addition to sending the event to a next hop to the service ID, a packet process chain action (PPC) is applied to the manner in which the controller behaves. This component is essentially firewall-like, however with four operations:
     602
     603 * ALLOW : process packet as normal
     604 * DENY  : send back a drop message, blocking the packet
     605 * SPLIT : send copy of the packet upstream to SID, at the same time allowing process of message locally
     606 * DIVERT : send copy upstream, however cease processing locally until results are returned.
     607
     608When two service IDs for the same event return a different PPC, the PPCs are consolidated with this precedence order:
     609{{{
     610   allow < [deny|split] < divert
     611}}}     
     612with deny and split being combined into a divert action. This choice for precedence and priority handling is acceptable as long as we stand by the assumption that no two servers provide overlapping rules. For example, no service will absolutely rely upon a event being ALLOWed when another service relies on DIVERTing it, in which case, conflicts in handling will result in control plane malfunction.
     613
     614
    556615----
    557616[#home Home.]