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! >
