UDP фактически должен работать лучше, чем TCP, в сетях с потерями (или в перегруженных сетях).TCP намного лучше передает большие объемы данных, но когда сеть выходит из строя, более вероятно, что UDP пройдет.(На самом деле, недавно я провёл исследование, тестирующее это, и обнаружил, что SNMP через UDP был успешнее, чем SNMP через TCP в сетях с потерями, когда тайм-аут UDP был установлен правильно).Как правило, TCP начинает работать плохо при потере примерно 5% пакетов и становится абсолютно бесполезным при 33% (ish), а UDP все равно будет успешным (в конце концов).
Так что, как всегда, правильно выбратьправильный инструмент для правильной работы.Если вы делаете рутинный мониторинг большого количества данных, вы можете рассмотреть TCP.Но будьте готовы прибегнуть к UDP для устранения проблем.Большинство стеков в наши дни могут фактически использовать как TCP, так и UDP.
Что касается отправки TRAP, да, TRAP ненадежны, потому что они не подтверждены.Тем не менее, SNMP INFORMs являются подтвержденной версией SNMP TRAP.Таким образом, если вы хотите знать, что получатель уведомлений получил сообщение, пожалуйста, используйте INFORM.Обратите внимание, что TCP не решает эту проблему, поскольку предоставляет только уведомление уровня 3 о том, что сообщение было получено.Нет уверенности в том, что получатель уведомления действительно его получил.SNMP INFORMs делают подтверждение на уровне приложения и гораздо более надежны, чем если предположить, что подтверждение TCP указывает, что они его получили.