Peter Memishian wrote:
> Siddharth, Nitin, and David,
>
> While working on the Clearview IPMP implementation, I've uncovered a few
> landmines in the interaction between ARP and SDP/IBTF IP Addressing which
> merits discussion:
>
>       1. Both ibcm_arp_pr_lookup() and sdp_pr_lookup() appear to assume
>          that the source IRE they lookup can be directly mapped to a
>          hardware address via ire_ipif->ipif_ill->ill_phys_addr.  This
>          no longer holds with the new Clearview IPMP bits because
>          IRE_LOCALs will be associated with IPMP ills that do not have
>          directly associated hardware.  However, each local address can
>          be mapped to an "underlying" IP interface which will be used
>          to send and receive traffic.  Thus, I plan to update the code
>          to perform this mapping when the ire_ipif->ipif_ill turns out
>          to be an IPMP interface.
>
>       2. Both ibcm_arp_pr_lookup() and sdp_pr_lookup() call routines
>          to check whether ire_ipif->ipif_ill is a loopback or IB
>          interface.  Unfortunately, they do this using bcmp() on the
>          interface name rather than actually testing properties of the
>          interface itself.  This is not robust, and breaks completely if
>          an administrator uses Clearview Vanity Naming (available in
>          snv_83 and later), since any IP interface can be named to start
>          with "ibd" or "lo".  It seems like the functions in question
>          should be checking the ill_flags and ill_media fields of the
>          ill_t to determine this information.
>
>       3. As currently written, the interface that's passed into the
>          "check" functions mentioned in (2) would end up being the IPMP
>          interface after Clearview IPMP, which will never be loopback or
>          IB.  As such, the IP interface used to send and receive packets
>          (determined as per (1) above) would need to be passed instead.
>
>       4. I'm having a tough time understanding the source IRE logic for
>          sdp_pr_lookup() -- it seems to try to use the destination IRE
>          for source information.  Could someone please explain this code?
>   
The IRE is used to just figure out which interface to send the packet 
out on. Also I think
the name sire is a bit misleading and is used as an alternative name for 
the ire if ire_lookup
fails for an exact match (i.e. reachable only through a gateway, 
mismatch in zone-ids etc).

Siddharth
>          
> Regarding points 1 through 3: I've made preliminary changes in my
> Clearview IPMP workspace to address these issues.  In particular, could
> someone look over the ibcm_arp_link.c and sbd_link.c changes at:
>
>       http://zhadum.east/ws/clearview/clearview-ipmp/webrev
>   
>       [ Note 1: internal webrev because sbd_link.c is closed source.
>         Note 2: no need to review anything other than those two files. ]
>
> Could someone familiar with this code to look over the changes ASAP and
> provide feedback?  Finally, can someone offer advice on how to test these
> changes -- ideally in an automated fashion?
>
> Thanks!
>   


Reply via email to