[This message was posted by Dale Wilson of Object Computing, Inc 
<wilso...@ociweb.com> to the "FAST Protocol" discussion forum at 
http://fixprotocol.org/discuss/46. You can reply to it on-line at 
http://fixprotocol.org/discuss/read/95b5d551 - PLEASE DO NOT REPLY BY MAIL.]

In a recent post on another thread, Hanno said:

> I'm working together with the core mdowg group to improve documentation,
> presentation and training materials to improve the learning curve for
> new-comers, as well as encouraging existing implementers to be able to
> reap the full benefit of FAST.
> 
> We welcome any comments and suggestions on what to include in the work
> that we currently do

As I developed QuickFAST [see my sig], I spent a lot of time with the FAST 
documentation.   In general, I have found it clear and unambiguous as a 
specification, but not as a tutorial.  This is a good thing.  Reference manuals 
and tutorials should be separate.

The FAST protocol is moderately complex, but the complexity is obviously 
targeted at the goal achieving a high degree of practical (as opposed to 
theoretical) lossless data compression.  The learning curve is steep but it 
makes sense once you get it.

The proposed extensions to encoding in FAST 1.2 continue this clarity.  FAST 
1.2 adds some useful new data types while supporting backward compatibility 
such that a properly written FAST 1.2 decoder should be able to handle a FAST 
1.1 data stream without problems.

I had a minor concern about the FAST 1.2 bit map field. As originally proposed 
it did not allow representation of an empty set of bits.  However when I 
expressed this concern and the response on this list was positive.

I also have some concerns about the proposed modifications to the XML template 
definition language, but they are cosmetic rather than functional.  For 
example, rather than:

    [field] [type name="abc"/][/field]

I would much prefer

    [field type="abc"/]

However, that's certainly not a show-stopper. (substitute angle brackets for [] 
where appropriate)

One thing I appreciate about the FAST specification is the separation of the 
payload-data-encoding-decoding issues from the packet framing and session 
management issues.  This was a severe drawback to the FIX standard in which 
message framing, session management and application data issues were muddled 
together.  FAST has avoided this by focusing completely on the 
transcoding/compression issues and trusting that other layers of the software 
will address other issues.

Unfortunately at the moment these "other layers" are left mostly unspecified.  
I say "mostly" because  Session Control Protocol (SCP) attempts to address some 
of the session layer issues , and the FAST specification does mention the 
possibility of "blocking" the FAST encoded messages.  

Blocking is optional and does not appear to have been accepted by the industry 
which seems to be developing a number of ad hoc and incompatible alternatives 
to handle transmission of FAST on a (logically) streaming  medium (TCP) as 
opposed to a logically packetized medium(UDP and Multicast) .  This to me is 
the most important issue that needs to be addressed -- preferably by a solution 
that is clearly distinct from the encoding/decoding concerns of the FAST 
protocol.

Some concerns that could be addressed at the message framing level include:

 -- Resynchronization after "something goes wrong."   

Suppose for example, a fast decoder is delivering data to the application code 
on-the-fly as opposed to assembling a complete message before delivering it to 
the application (there are some obvious latency advantages in doing this.)  If 
the application were to throw an exception, it would be very useful to have a 
way to find the next "clean point" from which decoding could continue.   

There is more involved in this than just identifying the next message because 
the issue of resetting the data dictionaries needs to be addressed as well.  On 
a multicast data feed this is simply a matter of restarting the decoder at the 
next packet. However this is an artifact of the lossy and packetized nature of 
multicast.  On a reliable transport or a streaming transport the problem is 
unsolved.

-- Providing "filtering" information at the framing level to allow an 
application to determine that this message is not of interest and skip forward 
to the next message in the stream of data with minimal decoding overhead.  
Again the issue of resetting the dictionaries would have to be considered.  
(CME's FIX/FAST 2.0 attempts to address this.)

It might be argued that having a framing protocol that addresses these needs 
defeats some of the advantages of FAST encoding, however one thing to consider 
is there is already "framing" information inherent in the IP protocol.  For 
every packet on the wire there are somewhere between 20 and 40 bytes of 
"overhead" information on the wire (IP and TCP and/or UDP headers, etc.).   A 
well designed framing protocol that addresses the above concerns with, say, 8 
to 12 bytes of overhead could easily be an overall win in effective, usable, 
throughput and reduced latency. 

Of course this is speculation on my part, but I think it's an issue worth 
looking into.

And finally there is the session management layer.  I won't even try to get 
into that in this other than to say that in my opinion SCP needs a lot of work 
before it addresses the practical session management issues that are likely to 
be encountered as FAST is used in a wide variety of circumstances.

Dale Wilson
Principal Software Engineer
Object Computing, Inc.  
http://www.ociweb.com/

Lead developer of the QuickFAST open source implementation of FAST.  
http://www.quickfast.org/




[You can unsubscribe from this discussion group by sending a message to 
mailto:unsubscribe+100932...@fixprotocol.org]

-- 
You received this message because you are subscribed to the Google Groups 
"Financial Information eXchange" group.
To post to this group, send email to fix-proto...@googlegroups.com.
To unsubscribe from this group, send email to 
fix-protocol+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/fix-protocol?hl=en.

Reply via email to