2015-01-13 4 views
0

немного информации о том, чего я пытаюсь достичь здесь в первую очередь. Я использую Texas Instruments Board EVM6678LE, и я пытаюсь увеличить скорость передачи UDP между доской и моим ПК.Увеличение MTU, но по-прежнему не может отправлять большие UDP-пакеты

Я увеличил MTU на своем ПК через netsh> интерфейс> ipv4 до 15 000. Но когда я пингует плату с моего компьютера, я могу только подкачать до «ping 192.168.2.100 -l 10194», если я пинг с 195 байтами и далее, я получу тайм-аут запроса. Это ограничение моего ПК или что-то еще?

Кто-нибудь может понять, что может быть причиной этого? Любые советы или предложения вообще будут приветствоваться. Как единственный способ увеличить скорость передачи, я мог подумать об увеличении размера пакета, что уменьшает накладные расходы. И в 10k у меня скорость около 9,1 МБ/с, и я пытаюсь достичь 25 МБ/с.

Спасибо!

ответ

0

Увеличение MTU на вашем ПК может не предотвратить фрагментацию. Я не знаю точно, что контролирует это, но ваша сетевая карта или драйвер могут фрагментировать пакет, даже когда MTU не достигнут. Используйте сниффер, например Wireshark, чтобы посмотреть, как отправляются пакеты.

О таймауте, возможно, что ваша доска отклоняет фрагментированные пинги (из-за Ping of Death protection). Также существует вероятность того, что его пакетный буфер имеет длину 10 КБ (10240) байт и не может получать большие пакеты. Кроме того, убедитесь, что принимающая конечная точка имеет соответствующий MTU.

В любом случае, если вы пытаетесь увеличить скорость передачи данных, вы находитесь на неправильном пути. Накладные расходы для UDP составляют 8 байтов, IP 20 байтов, Ethernet 18 байт, которые составляют в общей сложности 46 байт (о, совпадение, 46 + 10194 - ровно 10240). 46 байтов накладных расходов для 1024 MTU составляет 95,5%. 46 байт для 4096 составляет 98,9%, 46 байт за 16384 - 99,7%. Это означает, что вы получаете + 3,5% скорости передачи от 1024 до 4096 MTU, а еще + 0,8% от 4096 до 16384. Прибыль просто смешна, и вы должны просто допустить MTU к стандарту 1500 по умолчанию.

В любом случае, переход от 9.1MB/s до 25MB/s, просто путем изменения MTU НЕВОЗМОЖНО (если это было, почему значение по умолчанию не выше?). Здесь я предполагаю, что вы используете Fast Ethernet (100BASE-T), и вы уже передаете почти полную пропускную способность. Чтобы получить более высокие тарифы, вам понадобится Gigabit Ethernet (1000BASE-T). Это означает, что вам нужны обе конечные точки оборудования для поддержки 1000BASE-T.

+0

Я знаю, что это выглядит смешно .. Мне тоже кажется странным. Но мне говорят, что плата поддерживает Gigabit Ethernet и что не должно быть проблем с достижением скорости. Я написал программу для отправки и получения больших пакетов udp на моем компьютере, и для достижения скорости, которую я хочу, мне нужно отправить около 25-32 килобайт. – Cherple

+0

Что касается фрагментированного пинга. Я использовал wirehark, у меня была фрагментированная проблема с ping до того, как я увеличил MTU, но после увеличения MTU до 15k, на wirehark это выглядит хорошо для меня, я могу видеть запрос ping 11k на wirehark, просто что нет ответа возвращаясь вообще. – Cherple

+0

@Cherple Если пакеты не фрагментированы, возможно, это связано с размером буфера. Проверьте, можете ли вы получить/установить буфер на плате. В Windows вы можете увидеть скорость согласования ссылок, используя 'wmic NIC get Name, Speed'. Если это не 1.000.000.000, то, вероятно, одна конечная точка не поддерживает Gigabit. Кроме того, вы на самом деле измеряли значительное увеличение скорости при увеличении MTU? Если это так, то, возможно, что-то не так с UDP-программой (было бы похоже, что вы отправляете ровно 1 пакет каждые миллисекунды, независимо от размера). – ElderBug

 Смежные вопросы

  • Нет связанных вопросов^_^