My Xen PV network driver is failing for reasons I don’t quite
understand, and I need to send a few gigabytes of data on a single TCP
connection before I have any hope of observing the fault (I have only
seen the fault while running a backup across the network), so testing is
becoming a real pain. The failure mode is that my drivers don’t put the
packet onto the (virtual) wire properly and it is received as a
corrupted packet, and when the windows TCP engine retries the packet it
retries it exactly the same as before and so the connection stalls,
times out, and then fails. All other current connections are not
affected when that connection fails.
Because of the way it is failing, I suspect that somehow a packet is
sneaking under the checking I am doing and I am sending it out with too
many sg elements attached. Any other cause would either affect all other
TCP connections or would right itself on retransmit.
So what I want to do is be able to construct a few specific packet
buffer layouts to try and break it deliberately, rather than throwing
masses of data at it in the hope that it will eventually fail. Does
anyone know of how I could do this? Preferably from user space?
Thanks
James