La scelta di UDP rispetto a TCP dipende dal tuo caso d'uso e dal tipo di DDos. Per i DDos semplici che consumano la larghezza di banda non importa molto perché se tutta la larghezza di banda viene utilizzata dall'attacco non ci sarà più traffico per la tua applicazione, non importa se basata su UDP o TCP. UDP potrebbe avere un leggero vantaggio in questo caso perché UDP di per sé non ha bisogno di più pacchetti per una connessione stabilita (ma il protocollo dell'applicazione potrebbe averne bisogno).
Se ti preoccupi di più degli attacchi che mangiano risorse sul sistema (come l'allagamento di SYN o semplicemente l'apertura di molte connessioni), UDP potrebbe sembrare migliore all'inizio, dal momento che non utilizza molte risorse nel sistema come fa TCP. Ma se la tua applicazione ha bisogno di qualche idea di connessione, di affidabilità e di trasferimento ordinato dei dati, finisci per implementare tutte le cose belle che il protocollo TCP ha già nella tua applicazione. E lì probabilmente impiegheranno più risorse rispetto alle implementazioni ottimizzate all'interno del kernel del sistema operativo, il che significa che finirai per essere più influenzato da DDos che se usassi semplicemente TCP.
Inoltre, utilizzando le tecnologie consolidate invece di eseguire la gestione della rete a livello di applicazione, è possibile utilizzare le soluzioni Anti-DDos esistenti. Con il tuo protocollo speciale invece avresti bisogno di inventare la tua soluzione Anti-DDos speciale.
I am building a service that I can implement equally well with either TCP or UDP.
Se è possibile implementare lo stesso servizio con la stessa affidabilità in UDP e TCP e l'implementazione UDP utilizzerà meno risorse di sistema rispetto all'implementazione TCP (cioè risorse di kernel e spazio utente combinate) allora potresti andare su UDP perché usare meno risorse è una buona idea quando si confronta con DDos.