svn commit: r191367 - head/sys/net

Robert Watson rwatson at FreeBSD.org
Sat Apr 25 19:13:58 UTC 2009


On Wed, 22 Apr 2009, Bruce Simpson wrote:

>> I'm not familiar with the workings of SSM, but my feeling is that it 
>> probably needs to take the (3) approach rather than (2) -- rather than 
>> preventing the ifnet from going away until a socket closes, it should 
>> detect that the ifnet is going away and take appropriate remedial action. 
>> Possibly it should detect when a similarly configured ifnet re-appears and 
>> consider attaching to that, but it will most likely be a different instance 
>> of struct ifnet, and there are semantic considerations.
>
> SSM isn't high traffic -- it actually reduces the chattiness of IGMP by 
> implementing per-interface output queues and state change report merges. 
> Same for MLDv2 in IPv6. Timeliness and stability are what counts, it's 
> control plane, not data plane. At the moment it mostly does (3) by doing an 
> ifindex lookup in the netisr dispatch callback before calling ip_output().
>
> Of course if ip_output() were to look before it leapt, the book keeping 
> involved would go away. I have to stash the vimage context and ifindex in 
> the queued mbuf packet headers to implement this.
>
> Now that Giant is nuked, the netisr could be eliminated and the ifnet rlock 
> taken as it is before dispatching an entire chain. I only implemented a 
> netisr to allow the code to be back-ported, however I don't care about 
> back-porting any more -- it's too much effort and the time/funding budget 
> doesn't justify that amount of work.

Have you thought about registering a callback with the ifnet_departure_event 
event handler to handle interfaces disappearing?

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the svn-src-head mailing list