... but not sure if its wise to leave Flow control enabled as it could interfere with latency and other aspects also ?
In theory flow control kicks in when receiver's buffers get nearly full.
- With flow control enabled the receiving device will ask sender to pause transmission for a while. This makes possible for receiver to gracefully flush the buffer by sending buffered frames forward. OTOH this makes sending device to buffer the frames in the mean time. Alas, this device can ask it's sending peer to pause as well and this cascade can go all the way up to original sender if needed. With additional delay incurred it is likely that TCP stack would throttle down Tx speed.
- With flow control disabled, sending device will continue to send further frames and receiver will have to drop frames. TCP stack will hurt a lot, speeds tend to crash down to very low values with packets lost ... but in mid-term this also helps with L2 buffer overflow.
Now, option a) causes delay jitter, option b) causes dropped packets. The former hurts gaming performance and to a lesser extent "normal" TCP streams. The later hurts everybody (including gamers). UDP as a protocol doesn't care about packet loss, it's up to application to handle it. Some apps don't care about lost packets, some experience some issues. For the apps that experience big issues due to packet loss it's better to use TCP in the first place.
IMO option a) is way better.
Option a) has a nasty side effect: consider situation where there's fast upstream port and a few slower access ports. One slow access port, struggling with transmissions (and filling up buffer) will cause stall of the faster upstream port and that will hurt throughput of other (non-congested) access ports. The reason is that flow control can not signal any details about which downstream port is having issues ... and upstream switches don't care either (even if in theory they could if pause frames would include list of destination MAC addresses for which pause is needed).
hiya @mkx
first of all thnks for your input, as surely if it doesn´t work, at we least we will find another road path on how not to approach things hehehhehe
ok so both x86 servers are Dell R620s..
both have 160GB RAM DDR3
2 CPus E5-2697v2 (on mikrotik we see 48cores beeing used, but the actual physical cores are only 24c/48t) so mikrotik uses threads as cores ...
our traffic average is 3.5gbps to 5gbps max peak times.. under system/resources/hardware we have enabled Multi-cpu and allow x86_64..
average max peak on single core is around 10% and global cpu showing from 3% to 6% at peak traffic times os 5gbps..
ou setup is both servers have Dell Intel x710-da4 mezzanine card with 4 ports sfp+10 + on higher riser card mellanox connect-x4 MCX24241 dual sfp+ 10G port and on the other riser card x16 we have mellanox Connect-x3 pro MCX354ECAT dual port 40gb.
Both BNG/BRAS PPPOE running same exact hardware and BGP running same hardware..
ATM only ports enabled on both ends as our ISP carrier internet link from operator is a 10G link running on 10G sfp+ port. out of a mellanox mcx2424 port..
on the bgp side on the intel x710-da4 we have our vmwares on 1 port our dns servers on another port.. connected straight with intel 850nm gbics to our other dell servers running ERP, DNS servers, monitoring system etc.. all running good without any errors at all. zero rx-errors..
on our BNG/BRAS/PPPoe server side.. we have 3 ports of the Intel X710-DA4 card also connected to 3 different fiber OLTs in our datacenter again with short 3mts 850nm multimode cables and intel sfp+ 850nm 330mts GBIC cables... both OLTs have tx- and rx flow control disabled and on the ethernet interfaces showing on the x86 server also disabled flow control and we have 0 rx-errors.. on port 4 connecting BGP directly to PPPOE server we have again 3mts cable 850nm multimode cable with intel sfp+ gbics 850nm multimode gbics ... and this is the only ethernet interface were we do get errors.. on the RX- only.. we have incresed mkpfifo up to 50000 packets now.. we still get errors about 6000 at each 24h running..
we have same MTU setup on both interfaces, sema VLAN mtu size setup on both servers.. we even tried swapping ports on the intel x710, we even managed to tryout on the mellanox interfaces on both servers.. and still get errors.. swapped out gbics.. etc.. different vendors.. and we still get errors.. just on the RX-ERROR.. and funny enough BGP side interface normally has around 1k more errors that on the PPPOE interface side on the RX-errors..
i will try to remove the vlan.. on both machines to try out direct routing without vlan between both interfaces.. even do the other interfaces connected to OLTs and other servers do have VLAN setup also same way and we do not have errors showing up on the interfaces...
the only thing that seem to be working is rx-tx flow control enabled on both sides.. or placing a Switch in between both interfaces wich is even more odd and strange.. as the CRS317 switcOS mode, does not have tx-rx flow control enabled. its switched off on the config.
one other thing that confused me was on the IRQ site... it shows eth0,eth1,eth2,eth3 when i disabled ether1 and ether3 on the interfaces intel x710-da4 card.. i40e eth0 and i40e eth2 disappear letting just i40e eth1 and i40e eth3 counting the mellanox card where our main link is arriving its not displaying on the irq but this one we have no errors on it.
i then understood that i40e eth0 = ether1 i40e eth1=ether2 i40e eth2= ether3 and i40e eth3=ether4 on the interfaces the irq aparently starts splitting traffic from ether1 on i40e-eth0 as shown on the pic bellow seems like its splitting traffic across the cpu cores..the mellanox also are getting traffic split across the cpus even do it states that the only active cpu is 0 on the cpu count..
pic2.png
pic1.png
on the mellanox card irq it displays various counts cpus active..
mellanox por3.png
like pictures below
mellanox por1.png
mellanox por2.png
You do not have the required permissions to view the files attached to this post.