[openib-general] OSM: Using lid matrices in ucast manager

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Tue Dec 19 06:27:03 PST 2006


Hal,

Hal Rosenstock wrote:
> Hi Yevgeny & Sasha,
> 
> On Mon, 2006-12-18 at 20:30, Sasha Khapyorsky wrote:
>> Hi Yevgeny,
>>
>> On Tue, 2006-12-19 at 01:33 +0200, Yevgeny Kliteynik wrote:
>>> Hi Hal.
>>>
>>>  
>>>
>>> I have a question about some patch that I want to send regarding lid
>>> matrices usage in osm ucast
>>>
>>> manager:
>>>
>>>  
>>>
>>> The FatTree routing doesn’t use the min hop tables, so we can skip the
>>> lid matrices building in OSM.
>> The lid matrices are used in mcast_mgr for multicast routes generation.
> 
> Good point but fat tree seems to work for multicast (at least in my
> subnet). How could that be ?

The patch that's checked in doesn't disable lid matrices creation,
so we have those matrices created, and then fat-tree routing configures
LFTs, ignoring the lid matrices.

-- Yevgeny
 
> -- Hal
> 
>>> However, uca-st manager uses these lid matrices also to get the max lid
>>> that is accessible from each
>>>
>>> switch, which defines the LTF table size.
>>>
>>> This max lid is obtained by calling osm_switch_get_max_lid_ho()
>>> function, which in turn, calls 
>>>
>>> osm_lid_matrix_get_max_lid_ho() for the switch’s lid matrix.
>>>
>>> If the lid matrices weren’t built, then the
>>>  osm_switch_get_max_lid_ho() function will return 0xFFFF,
>>>
>>> and eventually osm will crash.
>>>
>>>  
>>>
>>> Of course, I don’t want to build all the lid matrices just to know the
>>> max lid, so here’s what I’ve done:
>>>
>>>  
>>>
>>>       * I added a field to the osm_switch_t object: max_lid_ho (with
>>>         default value 0xFFFF, should it 
>>>         be 0x0 instead?).
>> Good thing. 0 is fine as default value IMHO.
>>
>>>       * Added and three osm_switch_t methods for this new field:
>>>         getter, setter, and is_set that returns
>>>         true if this field has been set.
>> Why those methods? Everything you need is to access structure field and
>> 'if (sw->max_lid_ho)' for "is_set" checks.
>>
>>>       * The original osm_switch_get_max_lid_ho() has been updated to
>>>         return this field value if it’s set.
>>>       * Then in FatTree routing I set this field for each switch (I
>>>         get the max lid ‘for free’ as a byproduct
>>>         of the algorithm).
>>>       * Now everything in the ucast manager works fine, except for the
>>>         following two dump functions:
>>>                 __osm_ucast_mgr_dump_ucast_routes (it uses hops)
>>>                 ucast_mgr_dump_lid_matrix (obviously…)
>>>         These two functions check at the beginning whether the
>>>         max_lid_ho was set (using the ‘is_set’
>>>         method), and return w/o printing anything if the answer is
>>>         yes.
>>>
>>>  
>>>
>>> This way any other routing engine that uses lid matrix is not affected
>>> by this change, and any routing 
>>>
>>> engine that doesn’t use the lid matrix has a way to set the max lid
>>> per switch explicitly.
>> Hope you are adding this for existing code.
>>
>>> This approach works great, but I have a feeling that this is kinda
>>> hack…
>> Moving max_lid(_ho) to switch structure looks like a good idea for me
>> regardless to lid matrix build elimination.
>>
>> The only problem I can see with lid matrices is mcast_mgr which uses
>> this.
>>
>> Sasha
>>
>>>  
>>>
>>> What do you think about this solution?
>>>
>>> Any other suggestions?
>>>
>>>  
>>>
>>> Anyway, just wanted to hear your opinion before sending the patch.
>>>
>>>    
>>>
>>> Regards,
>>>
>>>  
>>>
>>> Yevgeny Kliteynik
>>>
>>>  
>>>
>>> Mellanox Technologies LTD
>>>
>>> Tel: +972-4-909-7200 ext: 394
>>>
>>> Fax: +972-4-959-3245
>>>
>>> P.O. Box 586 Yokneam 20692 ISRAEL 
>>>
>>>  
>>>
>>>
> 
> 
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
> 




More information about the general mailing list