Archive for the ‘general’ Category

This week's developments

Wednesday, June 18th, 2008

Being full of hayfever and lacking decent air-conditioning in the office has slowed down development temporarily, but at last – there’s an end to the 40s delay in inventorying a device!

The two other notable points:

  • Searching for an interface based on Layer 2 address is now supported.
  • The interface detail page shows parent and child interfaces.

Over the coming week or two, I hope to finish support for the physical entity MIB and come up with a way of showing relationships between interfaces and cards.

This week's developments

Sunday, May 18th, 2008

What a miserable week it’s been for the weather! Here are the latest developments on NetHorus this week:

  • Error messages – in particular, the flash messages, are now much prettier and will grey the background out to make the user aware something’s gone wrong.
  • Configuration files – NetHorus will now check that a configuration file has been loaded, and raise an error if it hasn’t.
  • Testing – we have some tests for the EventLog model, updated tests for the Ipv4Network models.
  • Interface dependencies using the IF-MIB::ifStackTable are now working, although the table isn’t straightforward to parse. Credit to Brian Candler for explaining the acts_as_tree plugin to me.
  • Model changes – the Ipv4Network model has been tidied up – testing proved that there were some cases where invalid data would be passed and cause errors.
  • Credits – Martin Gleadow is now credited properly for keeping tabs on dependencies for the latest releases – something I should write up in the Wiki soon.
  • Bugfixes – we destroy_all event logs for a device, rather than delete_all-ing them. This removes the data from the table, rather than breaking the device-to-eventlog relationship and leaving the data sitting stale.
  • Interface layout – improvements to make things look prettier and simpler.
  • Device inventorying now uses IF-MIB::ifHighSpeed if present to record the speed of an interface, since it appears generally more accurate than IF-MIB::ifSpeed.

So, that’s the past week. How did this week’s planned features go? Not too well…

  • SNMPv3 support is still incomplete, I will be de-prioritizing this as it isn’t strictly required for any new functionality, but will be a very-nice-to-have.
  • VRF support is lacking – the VRF Lite functionality on my Cisco 877W is slightly limited. I’m aware that full-fat VRF on bigger Cisco boxes works well, and I’m aiming to get started with VRF support this week.
  • ifStackTable support is complete in the back-end database, however I want to come up with a way of displaying interface relationships visually.

And finally, here’s what I have planned for the coming weeks:

  • ARP table polling – read in the ARP table from a device periodically and use it to track the Layer 2 addresses of devices on the network, and will also be useful for device discovery (incidentally, something I despite but I’m aware it’s a good way to get up and running).
  • Layer 2 Forwarding table polling – used in combination with ARP table polling, will allow us to track devices throughout the network.
  • Cisco CDP support – for displaying connected neighbour switches.
  • ATM VC/VP information – for displaying details of virtual circuits and virtual paths on an ATM switch.
  • Frame Relay PVC information – to display PVCs on an interface, their details, etc.
  • Neighbour relationships – automatically detecting which devices share common subnets.
  • Configuration generation – for Nagios primarily, so we can generate configurations based on the topology information stored in NetHorus. No need to set everything up once in NetHorus and again in Nagios!

Phew. That’s a lot of stuff, but it gives you an idea of what I have planned for the future.

As always, your feedback is important – please email me: peter.hicks@nethorus.org.

This week's developments

Sunday, May 11th, 2008

Summer is finally here – the last few days in the UK have been pleasantly warm. Us Brits are much happier when there’s direct sunlight!

Despite first glances, there’s been a lot of work going on this week – here’s a summary:

  • Error handling and testing has been this week’s theme. If the SNMP proxy isn’t working, or we receive errors, there’s a much prettier ‘flash’ that appears on-screen.
  • SNMP improvements – in particular, we now supply MIBs for use with NetHorus as there are some really rather badly maintained MIBs out there. These hang out in mibs/ and will automatically be loaded on startup.
  • Application configuration is taken care of by appconfig.yml. You will need to rename config/appconfig.example to config/appconfig.yml for the application to work properly!
  • SNMP proxy support has been greatly improved, thanks to Brian Candler’s suggestions. The proxy will now daemonize, write a PID file, provide debugging information… much more useful than before.

Features in the pipeline – this week, if I get time amidst reunions with old colleagues and trips to Dublin:

  • SNMPv3 support as suggested by Martin Gleadow. Some of the database schema is already in place.
  • VRF support and the ability to add VRF information in to interface inventories.
  • ifStackTable support so we can identify which interfaces are children of which other interfaces – this will become useful later on in diagramming and monitoring

Please continue to send in your feedback to peter.hicks@nethorus.org – and note I’ve fixed email now so it won’t bounce. Oops.

This week's developments

Monday, April 28th, 2008

It’s just over a week since the last update, and thanks to being away from work for a few days, I’ve had plenty of time to hack away at Ruby.

  • Milestone – the 100th check-in!
  • Unit tests for some of the models, a process which is remarkably straightforward and I’m really surprised I didn’t grok how easy this was before now.
  • SNMP proxy functionality is now working – this requires perl, SNMP.pm and a collection of MIB files. Remember to start external/snmp_proxy.pl!
  • Database changes – the iftype association is gone, since this was a hack to get around Ruby’s lack of MIB-parsing.
  • Model changes – device models now have get_oid and get_table methods which use the SNMP proxy, providing a useful abstraction from the guts of the SMP proxy.
  • UI changes – the interface layout has been refreshed.

Gathering speed

Friday, April 11th, 2008

So much has happened over the past week. I can’t quite believe how straightforward Rails is. It isn’t without its problems, but most of them are down to the author’s growing knowledge rather than Ruby itself.

In summary:

  • Devices now show a ‘last inventory’ timestamp to help identify when they were last inventoried
  • ActiveRecord editing/searching/browsing works as it should
  • IPv4 network names are looked up and displayed next to IPv4 addresses, e.g. “192.168.1.5 – Home Network”. The closest match is chosen based on netmask.
  • Device inventorying has been simplified – there is now just one inventory function which will be extended as necessary, and a ‘delete inventory’ function for when you want to clear information about a device from the database.

As usual, lots of database changes, so please rake db:migrate when you check out the latest code from Subversion.

April Update

Friday, April 4th, 2008

So, what’s been going on?

  • Layer 3 interfaces are now probed correctly, but there’s still work to do so that changes are correctly identified.
  • A lot of database schema changes – remember to ‘rake db:migrate’ before checking out a new version from Subversion
  • The concept of ‘sites’ for devices and subnets is gradually being introduced
  • Views are being tidied up

Oracle support is still in the pipeline, as is the IPv4 database and searching. But it’s looking good so far, and I’m trying my best to ensure that the Subversion repository always contains a working copy of NetHorus.

Finally, have a look at http://trac.nethorus.org/ – I’m going to use this for issue tracking.

March goings-on

Saturday, March 29th, 2008

NetHorus is starting to take shape. If you check out the current SVN repository, you’ll find all the source code you need to start testing – although there isn’t much of it.

Plans for the next few weeks:

  • Documentation of Layer 3 interfaces, as well as Layer 2 (which is more complicated than it sounds)
  • Support for Oracle as a backend database
  • IPv4 address database and allocation management
  • Search for an interface by IP address, MAC address or description
  • Basic diagramming – “what’s connected to this subnet?”

NetHorus on Rails now available in SVN

Thursday, January 31st, 2008

At long last, the rewritten NetHorus is available in Subversion at http://svn.nethorus.org/svn/nethorus/

To check it out:

svn co http://svn.nethorus.org/svn/nethorus/

Enjoy!

New Year, New Platform

Tuesday, January 8th, 2008

It is with some regret that I have to announce that I’m recoding NetHorus in Ruby-on-Rails.  Catalyst and DBIx::Class is proving too difficult for me to code, resulting in a lack of progress and the danger of de-motivation.

The old SVN repository will disappear over the next few days and I’ll start checking in the RoR codebase.

Autumn Update

Wednesday, October 17th, 2007

It’s been weeks since I’ve had the time to work on NetHorus! A combination of a hectic work and busy social life mean I simply don’t have time right now.

Ideas are still in the pipeline, the project is not dead.