Hello,

  about a month ago I wrote I'm glad about em(4) driver which works
  pretty well on few of my boxes. However I need to change my
  opinion... after what I saw today in the lab:

  We have connected pretty well testing box - Navtel InterWatch
  (www.navtelcom.com).
  It has one 6 slots and in one of them it has 2 GigE TX ports.
  We've configured the following scenario:

  1)
  Navtel port A --- em0 --- em1 --- Navtel port B

  2)
  Navtel port A --- em2 --- em3 --- Navtel port B

  em0 and em1 are built-in mainboard:
em0 at pci4 dev 0 function 0 "Intel PRO/1000 PT (82571EB)" rev 0x06: apic 2 int 
16 (irq 10),
em1 at pci4 dev 0 function 1 "Intel PRO/1000 PT (82571EB)" rev 0x06: apic 2 int 
17 (irq 11),

  and em2 and em3 are Intel Dual Port Server Adapter on PCI-e (4x):
em2 at pci5 dev 0 function 0 "Intel PRO/1000MT (82573E)" rev 0x03: apic 2 int 
19 (irq 10),
em3 at pci6 dev 0 function 0 "Intel PRO/1000MT (82573L)" rev 0x00: apic 2 int 
16 (irq 11),

  pf is disabled, between em0 and em1 whole traffic goes through
  kernel routing process (Navtel port A and em0 in one /24 network,
  and em1 and Navtel port B are in different /24 network)

  sysctl tcp.send & receive space is turned to 65535

  When we generate 500Mbps of traffic (1434 bytes in ethernet, which
  gives 1400 bytes of payload in TCP) from port A to B and from B to A
  (two streams, each of 500Mbps) everything works pretty well on
  PT chips and MT chips.

  When we change payload to 64bytes (called IP killer :P) and put it
  in scenario 1) machine gets freeze and no packet is comming to port
  B of Navtel device. It's rather normal, there are no ASIC-based
  boxes which can work with such traffic :)

  What was strange, when we connected Navtel to em2 and em3 which is one
  PCI-e (4x) dual-port card and started to generate traffic from port
  A to B and from B to A machine has restarted about a second after test
  started.

  We've change sysctl values to move machine to debugger if anything
  goes bad, but it didn't change anything. I think that it's somehow
  connected to chipsets of that cards and mainboard bridges which are
  responsible for transferring packets through the mainboard.

  Anyway, I started to feel badly about Intel...

  Second test was to generate 900Mbps of pure IP traffice (payload
  1400 bytes) from port A to B and second stream from B to A.
  In scenario 1 machine got freeze and hasn't forward any packet from
  em0 to em1. When we changed em0/1 to em2/3 all traffic is comming
  from port A to B without any loss and machine gets 75% interrupt on
  uniprocessor kernel.

  So, we've changed to MP kernel and... scenario 1) hasn't changed at all
  (freeze all the time), and scenario 2 got 100% idle and 0%
  interrupts on both CPUs (strange, I thought that it'll be 1/2 of
  previous 75% :P). Anyway, when we connected anything to em0/1 ports
  during that test and generate more than 100Mbps (bittwist software
  packet generator run at the second box) our test machine got freeze
  again...

  What else? Kernel is taken from CVS -current tree.

  After all these tests I'm changing my opinion about Intel cards,
  especially when I read that PT chipsets are Intel's newest "baby".

  Does anyone got simmilar problems ?
  Maybe there are other ways to tune NICs to work under such traffic
  (buffers on NIC?). I'm not an expert in Intel network cards so any
  idea will be appreciated :)
  
  Maybe you can tell about other chipsets that works fine under such
  "heavy" traffic ?

-- 
regards,
Sylwester S. Biernacki <[EMAIL PROTECTED]>
X-NET, http://www.xnet.com.pl/

Reply via email to