OpenNetAdmin

Track. Automate. Configure.

Home About Features Community Develop
Download this project as a tar.gz file

Switchport Tracking; Network Tree mapping; Host Options

Poikilotherm

06-10-2010 08:35:30

Hi there,

first of all: thanks for all the work on OpenNetAdmin. It is a great tool :)

Unfortunately we are missing some features. "We" is a small networking club in Germany, providing network to students in campus housings. The documentation capabilities of ONA for keeping track of the devices in our network are great, but we need some more features for this. We use ONA to keep track of the MAC addresses of our members, as those are part of a macfilter / 802.1X strategy. We achieved that by writing a little perl script that basically makes a join in the database and puts the mac-ip-pairs into an ipset.

But we also want to be able to see where a specific interface is plugged in on our switches at the moment and where it was in the past. It would be cool to have email notifications on changes. As this option is basically a subpart of having another feature, a full documented network tree of which device is at which port etc etc, we would like to write a plugin (or two) for OpenNetAdmin which provides both features.

My question to the other developers is, how we can integrate our stuff with for example the display of the interfaces. I had a look at the list_interfaces, but there are no hooks or anything, so we would have to hack these scripts. I don't think this is a good opportunity, as we would always need to modify this by hand in every revision. Perhaps there is a possibility to code some kind of hook for a plugin to achieve the display of some more columns in the list, filled with the plugins output?
For keeping track of the interface interconnections it would be cool if the same plugin would be able to make the ip adress input optional, as for example not every switchport has an ip-address, but would be an interface. Perhaps it would be an alternative option to define hooks in the list_interfaces that shows ports under interfaces in the same manner? Of course one could have a completely different view for ports in a separate list - but IMHO this would be not very intuitive to use... Comments?

Same question about hooks goes to host_edit. We would like to write another plugin, which basically relates a host with an UID of a personObject in our LDAP tree and for example displayes the name of the owner of the host. It would be cool if there would be another hook in the host_edit code which displays output of a plugin and optionally (choosen by the plugin-conf) makes the input necessary for adding/editing the host.

Another idea connected to the tracking of the network tree is to build a plugin based on that data that generates a SVG/PNG map of the network (perhaps in combination with location data?). And last but not least: we want to integrate into the switchport tracking the option to disable / enable the specific port via SNMP and get detailed information about an interface just by clicking on something in the webinterface... we'll see how far we can get ;)

Matt

06-10-2010 16:58:53

Hi there,

first of all: thanks for all the work on OpenNetAdmin. It is a great tool :)

Unfortunately we are missing some features. "We" is a small networking club in Germany, providing network to students in campus housings. The documentation capabilities of ONA for keeping track of the devices in our network are great, but we need some more features for this. We use ONA to keep track of the MAC addresses of our members, as those are part of a macfilter / 802.1X strategy. We achieved that by writing a little perl script that basically makes a join in the database and puts the mac-ip-pairs into an ipset.

But we also want to be able to see where a specific interface is plugged in on our switches at the moment and where it was in the past. It would be cool to have email notifications on changes. As this option is basically a subpart of having another feature, a full documented network tree of which device is at which port etc etc, we would like to write a plugin (or two) for OpenNetAdmin which provides both features.


Glad you like the tool!

Sounds like a great function you created. I used to use VMPS that was built from ONA but now with 802.1x things are more robust.

A plugin like this would be a good thing. I think there are several ways it could be implemented so a discussion on that would be great to see if anyone else has input.


My question to the other developers is, how we can integrate our stuff with for example the display of the interfaces. I had a look at the list_interfaces, but there are no hooks or anything, so we would have to hack these scripts. I don't think this is a good opportunity, as we would always need to modify this by hand in every revision. Perhaps there is a possibility to code some kind of hook for a plugin to achieve the display of some more columns in the list, filled with the plugins output?
For keeping track of the interface interconnections it would be cool if the same plugin would be able to make the ip adress input optional, as for example not every switchport has an ip-address, but would be an interface. Perhaps it would be an alternative option to define hooks in the list_interfaces that shows ports under interfaces in the same manner? Of course one could have a completely different view for ports in a separate list - but IMHO this would be not very intuitive to use... Comments?



You are correct, at the moment there are no plugin hooks for adding information to any of the lists. I'll have to see what is possible there. There are some challenges to getting that to work but I'll put some thought into it and see what I can come up with.

I actually would love to restructure the interfaces design a bit. I currently have a device table which represents a physical device. a host is then associated with a device. You can have multiple hosts per device, in the case of a VM machine that has several guest hosts on one physical device. Right now I track ip addresses as interfaces in the interface table. It has attributes like name (port name really) but what it should be structured as is to have a port table that represents the physical ports associated with a device. Then one or more IP address gets assigned to a port.

Having this design then allows us to create another set of tables that show connections between ports. Then all you need is to define the connections that a switch (device) port has to a server(device) port. This change is somewhat envolved so it will take a bit to get into the system. I think it is the right solution for what you are trying to do. Then many things are possible (even tracking logical connections and thing such as wan circuits like frame relay etc.)


Same question about hooks goes to host_edit. We would like to write another plugin, which basically relates a host with an UID of a personObject in our LDAP tree and for example displayes the name of the owner of the host. It would be cool if there would be another hook in the host_edit code which displays output of a plugin and optionally (choosen by the plugin-conf) makes the input necessary for adding/editing the host.


I also agree, any of the edit dialogs currently do not support plugins that add information to their field list. This too needs some work and is something that needs looked into. This one can get fairly complex so some careful thought needs to be put into it. I'm open to any ideas and patches related to these hooks.


Another idea connected to the tracking of the network tree is to build a plugin based on that data that generates a SVG/PNG map of the network (perhaps in combination with location data?). And last but not least: we want to integrate into the switchport tracking the option to disable / enable the specific port via SNMP and get detailed information about an interface just by clicking on something in the webinterface... we'll see how far we can get ;)



I agree about doing a plugin that can generate network maps based on various sets of data in the database. SVG,CANVAS, PNG, PDF, Graphviz etc would all be great output options for this type of thing..

A long time ago I wrote a module that would allow port level configuration based on templates that get sent to switches. It would also show a nice map of switches at a location and how they connected using CDP information. I think something like this would be a great plugin to re-create again. I might have some code for a plugin laying around that shows some SNMP info on hosts.. I'll see if I have it available.

These are all excellent ideas. I look forward to getting more plugins available for download and I think you have some great ideas for some. I know documentation is not the greatest here so if you have any questions or need help doing a plugin just let me know.

Poikilotherm

07-10-2010 06:40:55

Hi Matt,

thanks for your answer.
It is interesting to hear that you have plans to rebuild the structures. As you plan to do so, it makes IMHO no sense that I try to build a plugin for the network tree before that changes in database, etc appear.

The hooks in the host_edit would be cool as we need these connections to our LDAP-tree in the near future. Escpecially when this system goes into production, our user support team needs to have a comfortable input for the user a host belongs to.

I gave the Mapping / Tree plugin another thought. It came to my mind that there is no sense in reinventing the wheel once more, if there is software like Netdisco. We do not use Netdisco at the moment because of only postgres support in there, but my plan is to give it a mysql port. The netdisco docs say that this could be achieved quite easily. I think it will be the best option to create a plugin afterwards, that connects ONA with the Database of Netdisco to act as a alternative frontend.

About the plugins you mentioned: we would like to test those, if you need testers - we run Cisco Switches, so this would be perfect :) We are also interested in those bind and dhcp file generation tools. Again, if you need testers, here you are ;)

Matt

07-10-2010 11:39:05

I should be clear as well. I have lots of plans swirling around in my brain.. actually getting around to implementing them is an interesting challenge. :) This particular change is going to be a lot of work and is not on the top of my priority list at the moment, so I cant guarantee that it wont be months before it gets done. The more interaction I have with end users though keeps me motivated and active on working things. So keep bugging me and help me not be lazy! ;)

I would say the edit hooks is higher on my priority list.. One thing I could suggest for now is to use a custom attribute to track that information? Its not the most integrated solution but it does allow you to store arbitrary bits of information with each host and subnet..

I would agree.. I think integrating with existing solutions would be the best thing. ONA should be able to provide data to feed into some other system to generate the info. There are lots of cool projects that can integrate this way.

I'll send over some stuff to the email associated with this forum account.