Eu finalmente cheguei ao fundo disso. Acabou sendo um problema com a implementação do descarregamento de segmentação TCP da VMware na NIC virtual do servidor de destino.
A pilha TCP / IP do servidor enviaria um grande bloco para a NIC, com a expectativa de que a NIC dividisse isso em segmentos TCP restritos à MTU do link. No entanto, a VMware decidiu deixar isso em um grande segmento até que - bem, eu não tenho certeza quando.
Parece que na verdade ele permaneceu um grande segmento quando atingiu a pilha TCP / IP da VM, o que provocou a rejeição.
Uma pista importante foi enterrada no pacote ICMP resultante: o cabeçalho IP do pacote rejeitado indicava um tamanho de 2960 bytes - muito maior do que o pacote real que parecia estar rejeitando. Esse também é exatamente o tamanho que um segmento TCP estaria no fio se tivesse combinado os dados de ambos os segmentos enviados até agora.
Uma coisa que tornou o problema muito difícil de diagnosticar foi que os dados transmitidos foram divididos em quadros de 1500 bytes até o WireShark sendo executado em outra VM (conectado ao mesmo vSwitch em um separado , grupo de portas promíscuas) poderia ver. Eu realmente não estou certo porque a VM do gateway viu um pacote enquanto a VM WireShark viu dois. FWIW, o gateway não tem grande sobrecarga de recebimento ativada - eu poderia entender se isso acontecesse. A VM WireShark está executando o Windows 7.
Eu acho que a lógica da VMware em atrasar a segmentação é para que, se os dados forem sair de um NIC físico, o real descarregamento de hardware do NIC possa ser aproveitado. Parece buggy, no entanto, que ele não conseguirá segmentar antes de enviar para outra VM, e inconsistentemente, para esse assunto. Eu já vi esse comportamento mencionado em outro lugar como um bug do VMware.
A solução era simplesmente desativar o descarregamento de segmentação TCP no servidor de destino. O procedimento varia por SO mas fwiw:
No Windows, nas propriedades da conexão, na guia Geral ou na guia Rede, clique em "Configurar ..." ao lado do adaptador e procure na guia Avançado. Para o Server 2003 R2, ele é fornecido como "Descarregamento de Segmentação TCP IPv4". Para o Server 2008 R2, é "Large Send Offload (IPv4)".
Esta solução é um pouco desajeitada e pode afetar o desempenho em alguns ambientes, então ainda aceitarei uma resposta melhor.