lagg/lacp poor traffic distribution

Eugene Grosbein egrosbein at rdtc.ru
Mon Dec 20 12:40:11 UTC 2010


On 20.12.2010 17:21, Shtorm wrote:

> I had this problem with igb driver, and I found, that lagg selects
> outgoing interface based on packet header flowid field if M_FLOWID field
> is set. And in the igb driver code flowid is set as 
> 
> #if __FreeBSD_version >= 800000
> <------><------><------>rxr->fmp->m_pkthdr.flowid = que->msix;
> <------><------><------>rxr->fmp->m_flags |= M_FLOWID;
> #endif
> 
> The same thing in em driver with MULTIQUEUE 
> 
> That does not give enough number of flows to balance traffic well, so I
> commented check in if_lagg.c
> 
> lagg_lb_start(struct lagg_softc *sc, struct mbuf *m)
> {
> <------>struct lagg_lb *lb = (struct lagg_lb *)sc->sc_psc;
> <------>struct lagg_port *lp = NULL;
> <------>uint32_t p = 0;
> 
> //<---->if (m->m_flags & M_FLOWID)
> //<----><------>p = m->m_pkthdr.flowid;
> //<---->else
> 
> and with this change I have much better load distribution across interfaces.
> 
> Hope it helps.

Thanks, I'll try. I have em interfaces on lagg0 where problem is.


More information about the freebsd-net mailing list