Pense en asignarle los costos del enlace en el "Source port name" y "Target port name", pero un mismo nodo no puede tener dos enlaces con el mismo target o source port name. Se me ocurrio asignarle el costo como [idArista]:[costo], ejemplo e32:8 significa que el nodo posee una arista con id e32 y costo 8. Claramente no me parece una solucion muy limpia, por lo que pregunto si hay alguna forma mejor de hacer esto.
si, es una carencia del DisJ. una posibilidad es hacer algo como lo que sugerís, con un mapa de costos por puerto de salida mantenido en cada entidad y preocuparse de que haya coherencia entre las tablas de las entidades. no es tan loco. sería como configurarle un costo administrativo a la interfaz de un router en la realidad.
otra forma puede ser usar los Delay Seed (el delay de un link) que se pueden setear via la interfaz del DisJ (ver el cookbook) como propiedades de los links y que es un costo de lo más razonable a para usar.
el problema con eso es que para acceder a ese valor en el DisJ, tal como está ahora, desde una implementación de la clase Entity hay que dar una vuelta un poco rara. la clase GraphFactory tiene un método estático getGraphList() a partir del que pueden obtener el Graph. con el Graph pueden obtener los Edge y de los Edge puede obtener los delays. es un lio que se resolvería con un cambio menor al código de DisJ que, casualmente, pueden encontrar en:
Se me acaba de ocurrir que hasta podrían mandar un pseudo ping y averiguar el RTT del enlace y deducir un costo así.
en resumen: experimenten y documenten.
saludos,
J