Traceroute funktioniert so:
Du kannst deinen (Ich glaube IP-) Paketchen eine Time To Live (TTL) mitgeben, das heißt sie dürfen über x Server hüpfen und bei jedem Server an dem sie vorbeikommen reduziert sich die TTL um 1. Wenn die TTL dann 0 (oder -1?) ist kriegst du ein Paket vom Server der das Paket als letztes hatte wo drinsteht "Hey ich hab ein Paket von dir gekriegt, das hatte einen timeout".
Also, ja, theoretisch kann jedes Mal so ne Route wohl bei jeder Anfrage anders sein, praktisch ändert sich das (glaube ich) nicht soo oft weil ja beim Routing einiges an Caching passiert damit man nicht jedes mal die Route neu suchen muss, sodass so ne Route schon ne Zeit lang konstant bleibt.