frenetic-lang / ocaml-topology

OCaml topology package
5 stars 4 forks source link

Elevate the notion of "ports" #51

Open seliopou opened 10 years ago

seliopou commented 10 years ago

In the current design of this package, ports appear as labels on edges between network entities. Because of this, there is no way to indicate that a network entity has a port this is not yet involved in a known link. This is a problem when trying to determine where to send broadcast traffic given a topology. There may be ports on a switch that are connected to other switches or hosts that have not yet been discovered, but because that port is not represented in the topology, broadcast traffic won't be sent to it.

This package should include the ability to add, remove and query the ports on a network entity.

Related to frenetic-lang/frenetic#330.

basus commented 10 years ago

I suppose the main question is where to add/maintain the port information. I'm thinking the Network module should maintain a mapping from vertices to port information. The add_vertex should then take some kind of port information in addition to the Vertex.t label. At the least, it should require the total number of ports, though we might want richer information like up/down, connected/disconnected etc. One way to do this extensibility would be to define a PORT module like we do for VERTEX and EDGE. Each edge is then a numeric identifier and one such port label which can encapsulate application-specific information.

Another possibility is to add them into the VERTEX type since the ports are technically part of the vertex.