Connectionless Mode and User Defined DDM in RTING V6 - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

Connectionless Mode and User Defined DDM in RTING V6

Description:

RTI-NG was designed for configurability and extensibility to ... federates were already optimized to use inset grids as implemented in the RTI-S DDM strategy ... – PowerPoint PPT presentation

Number of Views:135
Avg rating:3.0/5.0
Slides: 14
Provided by: Caro423
Category:

less

Transcript and Presenter's Notes

Title: Connectionless Mode and User Defined DDM in RTING V6


1
Connectionless Mode and User Defined DDM in
RTI-NG V6
  • Mark Hyett
  • mhyett_at_dctd.saic.com
  • Roger Wuerfel
  • Roger.D.Wuerfel_at_saic.com

2
Overview
  • Introduction
  • Connectionless Mode
  • Need
  • Implementation
  • Usage
  • Experience
  • User Defined DDM
  • Need
  • Implementation
  • Usage
  • Summary

3
Introduction
  • RTI-NG was designed for configurability and
    extensibility to allow its use in a broad range
    of simulation types
  • Each simulation type has different requirements
    for
  • Performance
  • Reliability
  • Operational characteristics
  • RTI 1.3NGv6 introduced two new features
  • Connectionless Mode
  • User Defined DDM

4
Need for Connectionless Mode
  • RTI-NGs default configuration creates reliable
    connections between all the federates
  • Federates that are not IF Spec compliant cause
    problems
  • Crashing federates
  • Network outages
  • Federates in debuggers
  • Requires cleanup of broken connections or
    buffering of data
  • IF Spec does not address this type of fault
    tolerance

5
Connectionless Mode
  • Remove reliable traffic and reliable connections
  • Federate data
  • RTI administrative traffic
  • IF Spec implies some reliable communication so
    some services are not available
  • Reliable transportation type for federate data
  • Time Management
  • Ownership Management
  • Save and Restore
  • Synchronization
  • MOM
  • DDM is still available!

6
Connectionless Mode Implementation
  • All network traffic is UDP multicast
  • Federate handle is random and broadcast out for
    collision detection
  • Federation handle is hash of federation name and
    FED file
  • Lazy Discovery
  • No rtiexec or fedex processes
  • rtiConsole replaced with federateList that uses
    best effort broadcast to discover federates

7
Connectionless Mode Usage
  • RTI.RTIMode RID file parameter specifies
    Standard or Connectionless
  • Standard mode is the default, verifiable mode
  • Since object discovery and deletes are best
    effort, federates need to implement heartbeat and
    timeout semantics
  • Crashed federates need only wait for objects to
    time out before rejoining

8
Connectionless Mode Experience in MC02
  • Federation execution ran for two weeks, 24/7 over
    a WAN connecting 5 sites
  • Federation consisted of about 90 federates
    representing 42 simulations
  • Federation stayed up for the entire two weeks
    with
  • Federates crashing
  • Whole sites disappearing
  • Network CRC errors occurring

9
Need for User Defined DDM
  • DDM is designed to improve network performance by
    providing data segmentation based on federation
    knowledge
  • There are many potential implementations of DDM
  • One DDM implementation may not be optimal for all
    DDM schemes
  • RTI-NG provides 3 different implementations
  • MC02 federates were already optimized to use
    inset grids as implemented in the RTI-S DDM
    strategy
  • Re-optimization for RTI-NG strategy would have
    lost optimization for RTI-S

10
User Defined DDM Implementation
  • Similar to FedTime
  • Users implement a defined DDM class and compile
    it as a separate dynamic library
  • Swap in the new dynamic library for the one
    supplied with the RTI-NG distribution
  • Implementation must map RTIRegion, class,
    and/or attribute instances to a list of RTI-NG
    communication channels
  • The RTI-NG will then handle
  • Setting up connections
  • Sending/receiving data
  • Removing connections as needed.

11
User Defined DDM Steps
  • Initialize user code
  • Ask user code for a list of channels to create
    along with a requested transport protocol to use
  • Ask the user code which information it needs in
    order to compute channel mappings
  • As needed, ask the user code for channel mappings
    between Regions, Object/Interaction classes,
    Attributes and their associated channels
  • Shutdown user code

12
User Defined DDM Usage
  • Select User DDM in the RID file
  • RTI-NG DDM strategies are still available after
    swapping libraries
  • During execution the RTI-NG will periodically ask
    the user DDM code for a mapping between an
    RTIRegion instance and a list of channels

13
Summary
  • Connectionless mode allows better fault tolerance
    for non-compliant federates at the expense of
    availability of some HLA services
  • User defined DDM gives federation designers the
    flexibility to map RTIRegion instances to
    channels in a federation specific way to
    optimized performance

14
Additional Information
  • include ltRTI.hhgt
  • include ltvectorgt
  • include ltsetgt
  • include ltutilitygt
  • include ltstringgt
  • ifndef _RtiUserDefinedDdmStrategy_h
  • define _RtiUserDefinedDdmStrategy_h
  • // Setup the windows export macro
  • if defined(_WIN32)
  • if defined(BUILDING_USERDDM)
  • // define the proper qualifiers to import/export
    symbols from/to DLL
  • define RTI_EXPORT_USERDDM __declspec(dllexpor
    t)
  • else // ! BUILDING USERDDM
  • define RTI_EXPORT_USERDDM __declspec(dllimpor
    t)
  • endif // BUILDING_USERDDM
  • else // !WIN32

15
Additional Information (contd)
  • class RTI_EXPORT_USERDDM RtiUserDefinedDdmStrategy
  • public
  • typedef int ChannelId
  • typedef stdpairltChannelId,
    RTITransportationHandlegt
  • ChannelToTransportationPair
  • typedef stdvectorltChannelToTransportationPai
    rgt
  • ChannelToTransportationList
  • typedef stdsetltChannelIdgt ChannelSet
  • public
  • // Default ctor will get called when a
    federate joins a federation
  • RtiUserDefinedDdmStrategy(stdstring const
    optionsFromRidFile)

16
Additional Information (contd)
  • // This method will get called after the ctor
    but before any other
  • // methods. This method returns the list of
    channel IDs along with
  • // their associated transportation type. The
    RTI will use this
  • // information to create the proper
    communication channels. Each
  • // channelId must be unique and may not
    change throughout the existance
  • // of the RtiUserDefinedDdmStrategy instance.
  • virtual ChannelToTransportationList
    getChannelToTransportationList()
  • // If the user ddm strategy needs class
    and/or attribute handles
  • // to compute channelSets, then the value
    true should be returned from
  • // the appropriate method(s). If a class or
    attribute handle is
  • // not needed to compute channelSets, then
    false should be returned for
  • // the appropriate method(s). Class or
    attribute data will not
  • // be passed to the getXXXChannelSet methods
    for each false value and
  • // will thus improve performance. These
    methods may only be called
  • // once by the RTI and thus the value
    returned should be considered
  • // constant throughout the scope of the
    RtiUserDefinedDdmStrategy instance.
  • virtual bool needObjectClassToComputeChannels(
    )
  • virtual bool needAttributeToComputeChannels()

17
Additional Information (contd)
  • // These methods may be called many times
    thoughout the execution of the
  • // federate. The method returns the list of
    channel IDs to be used for
  • // outgoing updates interactions. The list
    must contain unique IDs.
  • // Each ID must have been returned previously
    by the
  • // getChannelToTransportationList() method.
    The TransportationHandle
  • // parameter is always valid and represents
    the requested
  • // transportation types of the outgoing
    channel(s).
  • // The ObjectClassHandle InteractionClassHan
    dle parameters are invalid
  • // if needClassToComputeChannels() previously
    returned false. The
  • // AttributeHandle parameter is invalid if
    needAttributeToComputeChannels()
  • // previously returned false. The ChannelSet
    returned will be used
  • // by the RTI to send data to each of the
    channels listed. In general,
  • // these methods are only called whenever
    publications or regions used
  • // for publications change but may, in fact,
    be called at any time.
  • virtual ChannelSet getOutgoingChannelSet(
  • RTITransportationHandle
    desiredTransportationTypeOfChannels,
  • const RTIRegion region,
  • RTIObjectClassHandle objectClassHandle,
  • RTIAttributeHandle attributeHandle)

18
Additional Information (contd)
  • // These methods may be called many times
    thoughout the execution of the
  • // federate. The method returns the list of
    channel IDs to be used for
  • // receiving updates interactions. The
    list must contain unique IDs.
  • // Each ID must have been returned previously
    by the
  • // getChannelToTransportationList() method.
  • // The ObjectClassHandle InteractionClassHan
    dle parameters are invalid
  • // if needClassToComputeChannels() previously
    returned false. The
  • // AttributeHandle parameter is invalid if
    needAttributeToComputeChannels()
  • // previously returned false. The ChannelSet
    returned will be used
  • // by the RTI to subscribe to data from each
    of the channels listed.
  • // Channels used for both Reliable
    Best_effort traffic should be
  • // returned in the ChannelSet.
  • // In general, these methods are only called
    whenever subscriptions or
  • // regions used for subscriptions change but
    may, in fact, be called at
  • // any time.
  • virtual ChannelSet getIncomingChannelSet(
  • const RTIRegion region,
  • RTIObjectClassHandle objectClassHandle,
  • RTIAttributeHandle attributeHandle)

19
Additional Information (contd)
  • // This method should return the channel ID to
    use for broadcast LRC
  • // communication using the specified
    Transportation type.
  • // This method will be called when the LRC
    needs to communicate with
  • // other LRCs. The method may only be called
    once so values returned
  • // should not change throughout the
    execution.
  • virtual ChannelId getOutgoingBroadcastAdminist
    rationChannel(
  • RTITransportationHandle
    desiredTransportationTypeOfChannel)
  • // This method should return the channel ID
    to use for direct LRC to LRC
  • // communication using the specified
    Transportation type.
  • // This method will be called when the LRC
    needs to communicate
  • // directly with another specific LRC. The
    method may only be called
  • // once so values returned should not change
    throughout the execution.
  • virtual ChannelId getOutgoingPoint2PointAdmini
    strationChannel(
  • RTITransportationHandle
    desiredTransportationTypeOfChannel,
  • RTIFederateHandle)
  • // This method should return the channel ID
    to use for receiving
  • // broadcast LRC communication using the
    specified Transportation type.

20
Additional Information (contd)
  • // This method should return the channel ID to
    use for receiving
  • // direct LRC to LRC communication using the
    specified Transportation type.
  • // This method will be called when the LRC
    needs to subscribe to
  • // communications directly from other LRCs.
    The method may only be called
  • // once so values returned should not change
    throughout the execution.
  • virtual ChannelId getIncomingPoint2PointAdmini
    strationChannel(
  • RTITransportationHandle
    desiredTransportationTypeOfChannel,
  • RTIFederateHandle)
  • endif //_RtiUserDefinedDdmStrategy_h
Write a Comment
User Comments (0)
About PowerShow.com