Testing and demo of Multicast Group Analysis
=============================================

This directory holds a set fo files that demonstrate the feature of
multicast-tree checking provided by IBDM.

This document describes the different tests and files ordered like a demo.
The MCG check is invoked by using ibdmchk but that same analysis is invoked
by tools like ibdiagnet which calls the equivalent IBDM API.

The file ibdm mulsticast checks.odp isn an OpenOffice presentation
containig drawings of the test cases described below.

1. Initial set of files:
------------------------
mcg.lst    - an lst of the 2 level fat-tree of 16 nodes made of 8 port
             switches connected by 2 parallel links 
mcg.fdbs   - unicast routing
mcg.good.mcfdbs - a good multicast routing 

The files above were obtained by simlating the topology and letting
each node join a single multicast group (the IPoIB of default P_Key).

RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.good.mcfdbs  
...
-I- Scanning all multicast groups for loops and connectivity...
-I- Multicast Group:0xC000 has:5 switches and:16 HCAs
...

2. Show a loop caused by 2 switches connected by 2 different ports:
RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.sw2sw.loop.mcfdbs  
...
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U5/P5 to port:SW1/U3/P2 which does not point back.
-E- Found a loop on MLID:0xC000 got to node:SW1/U5 again through port:6 connected to:SW1/U3 port:1
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U3/P1 to port:SW1/U5/P6 which does not point back.
-E- Found 2 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1 
    Group:1 has 1 SWs: SW1/U3 
    Group:2 has 12 CAs: H-[1..8,13..16]/U1 
    Group:2 has 4 SWs: SW1/U[1..2,4..5] 

3. Show a disconenct caused by missing one direction: 
RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.miss_dir.mcfdbs  
...
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U5/P5 to port:SW1/U3/P2 which does not point back.
-E- Found 2 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1
    Group:1 has 1 SWs: SW1/U3
    Group:2 has 12 CAs: H-[1..8,13..16]/U1
    Group:2 has 4 SWs: SW1/U[1..2,4..5]
...

4. Show a disconnect caused by missing direction to switch port 0:
NOTE: currently does not work as port0 is not defined as port in ibdm yet.

RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.miss_dir_2sw.mcfdbs  
...
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U1/P2 to port:SW1/U6/P7 which does not point back.
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U3/P2 to port:SW1/U5/P5 which does not point back.
-E- Found 3 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1
    Group:1 has 1 SWs: SW1/U3
    Group:2 has 0 CAs:
    Group:2 has 1 SWs: SW1/U6
    Group:3 has 12 CAs: H-[1..8,13..16]/U1
    Group:3 has 4 SWs: SW1/U[1..2,4..5]
...

5. A loop of fully bi-directional connections:
RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.loop.mcfdbs  
...
-E- Found a loop on MLID:0xC000 got to node:SW1/U1 again through port:8 connected to:SW1/U5 port:1
-E- Found a loop on MLID:0xC000 got to node:SW1/U5 again through port:1 connected to:SW1/U1 port:8
...

6. A loop caused by uni-directional connections:
RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.dir_loop.mcfdbs  
...
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U1/P8 to port:SW1/U5/P1 which does not point back.
-E- Found a loop on MLID:0xC000 got to node:SW1/U1 again through port:2 connected to:SW1/U6 port:7
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U5/P5 to port:SW1/U3/P2 which does not point back.
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U3/P8 to port:SW1/U6/P6 which does not point back.
-W- Found a non-bidir MC route on FullMember tree of MLID:0xC000
    From port:SW1/U6/P7 to port:SW1/U1/P2 which does not point back.
-E- Found 4 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1
    Group:1 has 1 SWs: SW1/U3
    Group:2 has 0 CAs:
    Group:2 has 1 SWs: SW1/U6
    Group:3 has 8 CAs: H-[5..8,13..16]/U1
    Group:3 has 3 SWs: SW1/U[2,4..5]
    Group:4 has 4 CAs: H-[1..4]/U1
    Group:4 has 1 SWs: SW1/U1
...

7. A case of missing some switch connections:
RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.no_con_sw.mcfdbs
...
-E- Found 2 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1 
    Group:1 has 1 SWs: SW1/U3 
    Group:2 has 12 CAs: H-[1..8,13..16]/U1 
    Group:2 has 5 SWs: SW1/U[1..2,4..6] 
...

8. A case of un-needed connection to a switch that has no children:

NOTE: currently does not work as port0 is not defined as port in ibdm yet.

RUN: ibdmchk -s mcg.lst -f mcg.fdbs -m mcg.extra_sw.mcfdbs
...
-E- Found 2 connection groups for MLID:0xC000
    Group:1 has 4 CAs: H-[9..12]/U1 
    Group:1 has 1 SWs: SW1/U3 
    Group:2 has 8 CAs: H-[1..8]/U1 
    Group:2 has 5 SWs: SW1/U[1..2,4..6] 
...

--------------------------------------------------------------------

Other files in this directory

mix_pgft.topo  - a non perfect fat tree (some hosts on middle switches)
mix_pgft.roots - the roots of that topology
mcg.guids - the GUIDs assigned by the simulator to each node
opensm.conf - used for the simulation
