I'm trying to build a high-speed iSCSI server.  I have two Chelsio T6
cards providing 4x 25GbE ports.  I have a requirement for
high-availability networking, and I also need multiple ports' worth of
bandwidth.  What's the best way to use them?

First I tried LACP, of course.  That works.  But it doesn't work in
combination with cxgbei iSCSI offload.  The clients can't connect.
This makes sense, because the offload engine probably requires all
packets from a single iSCSI session to enter and leave through the
same network port.  With LACP, that won't be the case.

Next I tried ALUA.  I disabled LACP and assigned a different IP
address to each network port.  On the clients I connected to each
target via all four ports.  Then I used gmultipath for each target in
Active/Active mode.  This did not work, even with cxgbei disabled.
iSCSI requests were well-distributed, but the server sent all
responses out of cc0.  It seems that ctld doesn't do any kind of
source-routing.

Using cxgbei makes the situation even worse.  Without source-routing,
the clients almost immediately get disconnected.  No doubt that's
because requests and responses are going through different network
ports again.

Is there any way to use cxgbei iSCSI offload with multiple NICs?  My
best idea, which I haven't yet tried, is to assign each NIC to a
different VLAN, then use ALUA over those.  That should ensure that
requests and responses for each iSCSI session go through the same
port.  However, gmultipath would still round-robin requests for each
iSCSI target through different sessions.  I don't know if that would
be a problem.

-Alan

Reply via email to