Hi all, We're trying to get L2 tansparent bridge using PF_RING 5.6, PF_RING aware ixgbe, Linux 3.2 (debian wheezy) and PF_RING transparent mode 2.
Testing with pktgen and PF_RING show that bridging small (64 byte) packets hits the same threshold that we see when using standart linux bridge or simply test with netperf (UDP), i.e. about 480Mbit/s (about 1.5Mpps). The detailed description of hardware used and testing conditions are given below. Is this an expected behavior or we missed something in PF_RING configuration and/or ixgbe and kernel tuning? PF_RING in this config behaves almost the same way as original Linux stack, and that concerns me and makes think that we missed something in configuration. Hardware configuration: System: Supermicro X9DRW Processors: 2 x Intel Xeon CPU E5-2665 @ 2.40GHz. 2 x 8 cores with HT. Chipset: Intel C602 Memory: 8x8Gb DIMM DDR3-1600 - 64 Gb total Network adapters: 2 x 82599EB 10 Gigabit TN Network Connection (one adapter equipped with twisted pair, other with optical SFP+ modules). Each adapter has two ports. Testing configuration: Vanilla pf_ring (version 5.6.0) with pf_ring-aware ixgbe (3.11.33) drivers and transparent_mode=2 (non-transparent) is used. LRO, gro features disabled. irq-affinities spread across all processors No DNA present. Traffic generated with pktgen reporting approximately 4 Mpps. Adapter with twisted pair media used and pf_ring is used to bridge traffic within two ports of one network adapter. We are using rings in userspace for bridging in following manner: .... ring1 = pfring_open (interface1, snapshot, 0 | (promiscuous ? PF_RING_PROMISC : 0)) ring2 = pfring_open (interface2, snapshot, 0 | (promiscuous ? PF_RING_PROMISC : 0)) memset(&rule1, 0, sizeof(rule)); memset(&rule2, 0, sizeof(rule)); rule1.rule_id = 1; rule2.rule_id = 2; strcpy(rule1.reflector_device_ name, interface2); strcpy(rule2.reflector_device_name, interface1); rule1.rule_action = reflect_packet_and_stop_rule_evaluation; rule2.rule_action = reflect_packet_and_stop_rule_evaluation; pfring_enable_ring(ring1); pfring_enable_ring(ring2); while(true) sleep(1); ..... On bridge output interface we have only 37.5% of generated traffic, so 62.5% drop. If userspace application opens 8 rings for each reflect direction we have 43.5% of bridged drivers, and 57.5 % drop. This gives approximately the same 1.5-2Mpps. Kind regards, Dennis Gamayunov
_______________________________________________ Ntop-misc mailing list [email protected] http://listgateway.unipi.it/mailman/listinfo/ntop-misc
