ifb идеологически вернее. Шейпится любой трафик, другое дело можно на это смотреть с той стороны, что из сети на интерфейс этот трафик все равно прилетает c той же скоростью, если это не tcp, который уменьшит скорость.
То есть если ваш клиент будет делать запросы UDP, и ответы ему будут приходить UDP, то ваш довнлоад будет зависить только от количества запросов, и хоть клиенту вы отшейпите сколько хочется, но ваш канал от шейпера до провайдера все равно будет загружен.
Если софт использует udp итп и не умеет масштабироваться по пропускной способности канала то никак, горбатого могила исправит.
Но если, скажем, в udp завёрнут tcp(туннелирование) то этот механизм всё равно сработает нормально.
Я даже и не знаю что за не-tcp трафик может гулять в больших объёмах. Могу предположить что видео.
В остальных случаях хоть дропами хоть очередями проблема решается. Делал через очереди на pf, полёт нормальный.