inex / IXP-Manager

Full stack web application powering peering at over 200 Internet Exchange Points (IXPs) globally.

Home Page:https://www.ixpmanager.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IX-F export: allow excluding VLANs

lucix-mich opened this issue · comments

Currently, IXP Manager exports all VLANs which are not tagged as private VLANs.

IXPs may have a longer list of VLANs on their infrastructure, and for many good reasons (documentation, config generation, ...) would like to be 100% complete in documenting all VLANs in IXP Manager. However, some of these VLANs may be used for very specific other services or use cases, which the IXP may not want to export in the IX-F JSON. Let's call these VLANs non-peering VLANs.

While the obvious workaround would be to tag all these VLANs as private, this is sub-optimal for the following reasons:

  • in the context of an IXP, a private VLAN is a very specific (paid) service interconnecting typically two members
  • non-peering VLANs might contain a large number of members
  • there are a number of semantics attached to a private VLAN, which IXP Manager implements quite well in in its GUI
  • using the same semantics for other non-peering VLANs is highly sub-optimal, for example:
    • in the list of VLANS, they are marked "private", and are easily confused with the service "private VLAN"
    • in the display of the ports assigned to a member, private VLANs show the other members in the same VLAN. This makes sense for the service "private VLAN", but not for generic non-peering VLANs, making the display unnecessarily long and cumbersome
    • the same applies to the tab "private VLANs", where other members in the same VLAN are displayed

While implementing a third category of VLANs could be seen as a long-term solution, I am not sure just one other category would cover most use cases, hence I see this route as useful only if the VLAN types could be user-configured, which is a much bigger change.

Therefore, I propose to implement a more generic workaround which I think can be useful to many users of IXP Manager: add a configuration option to exclude certain VLAN IDs from IX-F export, while building on the existing framework of IX-F exclude options (see #722)

IXP_API_JSONEXPORTSCHEMA_EXCLUDE_VLAN="id[|id]*"

id is of course the internal VLAN ID of IXP Manager.

Thanks for consideration!

@lucix-mich - @nickhilliard pushed some code to handle this via a toggle switch on the VLAN interface. This has been pushed to master but as it requires a small database migration, won't be in release-v6 for a couple weeks until we have a new release packaged.

@barryo thanks for the information, no issue for us, we have my patch in our code - so simple and unintrusive, we can keep this in place until we migrate to a version that includes the UI change.