буферы протокола google - вероятность появления битовых ошибок и способы их уменьшения - PullRequest
1 голос
/ 23 декабря 2011

Я передаю довольно большое количество сообщений буфера протокола Google через VPN по беспроводной сети через Интернет по TCP, и я чувствую, что получаю относительно высокую частоту появления ошибок (например, переключение логического поля с ложного на истинное или подобное). Что-то между 1 на 10000 и 1 на 50000.

Это возможно? Википедия утверждает, что TCP имеет слабую контрольную сумму, но это обычно исправляется в базовых протоколах:

Контрольная сумма TCP является слабой проверкой по современным стандартам. Уровни канала передачи данных с высокой частотой появления ошибок в битах могут потребовать дополнительных возможностей исправления / обнаружения ошибок канала. Слабая контрольная сумма частично компенсируется обычным использованием CRC или лучшей проверкой целостности на уровне 2, ниже как TCP, так и IP, как это используется в PPP или кадре Ethernet.

У кого-нибудь есть опыт, каким должен быть ожидаемый уровень ошибок? Если вышеупомянутая ставка возможна, что было бы рекомендуемым / самым простым способом исправить это? Дублирование полей? Отправляете сообщение дважды? Или что-то еще можно сделать для повышения надежности?

Спасибо

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Нет, это (разумно) невозможно.Предполагая, что у вас нет аппаратного сбоя (памяти, вашей сетевой карты и т. Д.), Который легко проверить - это происходит на нескольких компьютерах?

Гораздо более вероятно, что выиметь недопустимый доступ к памяти или тому подобное в коде вашего приложения, или то, что отправляемые вами данные просто не соответствуют вашим ожиданиям.Попробуйте запустить свой код под valgrind или чем-то подобным.

Идея дублировать поля как часть нормальной работы кажется абсурдной: в основном никто не делает этого в дикой природе, и вам не нужно ни того, ни другого.В вашей системе есть несколько уровней защиты от тихого повреждения данных, поэтому это, скорее всего, простая (или, возможно, не такая простая) ошибка приложения.

1 голос
/ 01 мая 2015

Ответ Джона Цвинка верен в том, что ваши результаты не являются обоснованными, а исправление на прикладном уровне является ошибкой.

VPN (при условии уровня SW) может помешать работе и потерять соединение, если сетевая карта былавводя такое количество ошибок.

Попробуйте Valgrind, как это было предложено, чтобы выяснить, не повреждает ли ваш SW буфер.

Кроме того, в случае, если «легко проверить» память не выглядело такхорошая ставка - memtest86, http://www.memtest86.com,, которую вы можете прикрепить к USB-накопителю или компакт-диску и оставить на ночь или на выходные.

...