Route Table Configuration

Brad.Goodman at Brad.Goodman at
Thu Jan 10 12:45:57 PST 2008

* From the T10 Reflector (t10 at, posted by:
* Brad.Goodman at
I have been working on firmware for a chassis expander device, and have 
been doing some integration testing with other manufacturers' devices. 
(Disks, HBAs and Expanders).
I have had several "edge" cases, where things have failed - and in trying 
to determine who was "at-fault" - came to the conclusion that the SES spec 
was too ambiguous to determine who was required to do what - when. These 
cases deal with the routing tables - specifically, the mechanism by which 
they are altered *outside* of a "normal" power-on enumeration.
Case in point:
A bunch of disks are runnig off of an expander, 2 expanders down from an 
 The expander to which the disks are immediately connected [ExpB] is 
disconnected from ExpA, and connected to a different *port* pm ExpA. I 
have seen several different pieces of equipment react completley 
differently to such a case:
- Some will reprogram every index of every port of every device - This 
appears as though it is probibly correct
- Some will only *add* the new entries to ExpA and ExpB. 
- Some will only reprogram the indexes of the newly-connected port on 
ExpA, and ones downtstream on ExpB.
Intuitivley, the last two don't seem so bad -  however, seeing as how the 
Route entries for the *old* port on ExpA have not been *cleared* - 
problems arise on some devices. After running into this, I thought maybe I 
should erase all my own local tables (in my expander) after BROADCAST 
(CHANGE) , seeing as how the domain would have to be re-discovered anyway. 
Right? Well, no:
Some devices, after a BROADCAST (CHANGE) would just to a REPORT GENERAL 
and a DISCOVER - and if it did not notice anything different under a given 
phy, would not re-program the route table.
So I think the real solution needs to be a clarification in the 
specification to say when these tables must be updated - and to what 
extent, and by who. My gut reaction is to say "All Entries in All Tables" 
shall be updated in response to any/all  "BROADCAST (CHANGE)" events, by 
any initiator that would normally do a discovery. And furthermore, I 
beleive (but am not sure) that upon recieving a BROADCAST (CHANGE) , any 
expander could invalidate all their tables, as they may be bad anyway, and 
shall be be re-programmed anyway.
I may not have it all 100%, but I think thats enough of a brain-dump so 
they you might know what I'm talking about...
Brad Goodman
SeaChange International
bgoodman at
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at

More information about the T10 mailing list