So I'm going to throw some statistics here, and I'd like somebody to correct me if they think I'm wrong. As I see it, the general use-case for AoE deployment consists of one or more mostly dedicated machines serving several initiators on one or more interfaces (or vlans). This would mean that most, if not all, of the traffic would consist of AoE frames. Let's assume that we are running several targets on the same interface (let's say 5, differing by their major number and having 0 as their minor). If I take a normal sample of traffic under said conditions and pass it trough the filter, we would see: - check Frame type - 2 ops - 0% of frames removed - 100% of frames pass this - check Response flag - 3 ops - 2 ops - 50% of frames removed - 50% of frames pass this - check Major - 2/4 ops - 80% of frames removed - 10% of frames pass this - check Minor - 2/4 ops - 0 % of frames removed - 10% of frames pass this If I were to reorder the checks and move the major/minor checks first, response after that and leave the frame type to the end: - check Major - 2/4 ops - 80% of frames removed - 20% of frames pass this - check Minor - 2/4 ops - 0 % of frames removed - 20% of frames pass this - check Response flag - 3 ops - 2 ops - 50% of frames removed - 10% of frames pass this - check Frame type - 2 ops - 0% of frames removed - 10% of frames pass this This would lead to a fast-fail path for 80% of vblade traffic in 4 ops, versus the 9 ops used currently. If we were to include a moderate amount of other kinds of traffic into the mix, major and minor have the nice effect of sitting on top of the Total Length and Identification fields of IP, which vary wildly and have a small chance of collision. This is not shared, unfortunately, by IPv6, where it would collide with part of Flow Label and part of Payload Length. In normal environments these bytes would probably be 0, and so would the response flag. If both our major and minor are set to 0, we would have a fail in 9 ops to find that out, instead of 2 ops in the current case, for said vblade instance, but all other instances would fail in 4 ops. This trade-off would not be convenient in an environment with more non-AoE traffic than AoE traffic, but, as stated, I'd argue that that is not the general case. Implementation-wise I would argue against the need to keep both version, as the latency difference is small, but flipping between these by a command-line argument would be an option that wouldn't cost anything at runtime (something like - favour dedicated or mixed environments with a flag) One more note - since I'm deploying this on FreeBSD (and I believe Linux also has something similar) I can make sure I don't see frames sent by this machine, so I can drop the removed count for the Response flag to 0% in certain conditions. I'm about to follow this up with freebsd-net@ and maybe raise a question on linux-net@. I submit this for your consideration, and will provide the needed changes. Cheers, Catalin Salgau ------------------------------------------------------------------------------ HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems _______________________________________________ Aoetools-discuss mailing list Aoetools-discuss@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/aoetools-discuss