Разработвам Ethernet драйвер в Linux платформа. Открих, че при възникване на TCP повторно предаване, TCP полезните натоварвания на множество пакети за повторно предаване, отнасящи се до едни и същи пакети с пореден номер, са различни. Не мога да разбера защо би се случило. В моя драйвер току-що разпределих нормално мрежово устройство без никакви специфични флагове. Между другото, полето за контролна сума на TCP също беше грешно в тези пакети за повторно предаване, но контролната сума във всички други типове TCP пакети беше правилна, като SYNC, ACK и DUP ACK.
Улових пакетите от wireshark и това означава, че пакетите, които улових, не бяха обработени от моя драйвер, а само от TCP стека в ядрото на Linux. Но когато тествах с други Ethernet устройства и драйвери, този проблем не се случи. Та въпросите ми бяха следните.
- Възможно ли е TCP стека да препредава същите пакети без същия полезен товар?
- Кои видове параметри в ядрото на Linux биха причинили тези проблеми?
- Как моят драйвер може да причини този проблем?