4.9.0 - Zend's dead, baby
IXP Manager v4.9.0 is a milestone release for INEX and the IXP Manager project: it represents the completion of a ~2 year project to remove the end-of-life and end-of-support Zend Framework v1 which has been replaced by Laravel - a modern and hugely popular PHP web application framework.
Support Lifetime for v4: It is our intention to provide bug fix and security support for IXP Manager v4.9 in line with Laravel's published support policy for Laravel v5.5. Note that IXP Manager v4.9 runs on Laravel 5.5. This means bug fix support to August 2019 and security support to August 2020.
Primary IXP Manager development will shortly shift to a new v5 branch and all new features will be added here.
This is a large release and there are a number of user actions required to complete the upgrade from v4.8.x to 4.9.0 successfully - please get a ☕️ (or a 🍺 ) and read through these and perform all the required tasks.
Overall summary:
$ git --no-pager diff --shortstat --no-merges v4.8.0 v4.9.0
1064 files changed, 24949 insertions(+), 46369 deletions(-)
Upgrade Instructions
If you are using sflow to detect BGP sessions to populate the peering matrix and peering manager, please stop the sflow-detect-ixp-bgp-sessions
daemon before you start the upgrade (see Peering Matrix and Peering Manager below).
- please follow the official upgrade documentation without skipping any steps.
- run this command:
${IXPROOT}/artisan ixp-manager:upgrade:copy-contact-names
- if you missed it in the updated upgrade instructions, run this command:
${IXPROOT}/artisan migrate
- remove any existing sessions:
rm ${IXPROOT}/storage/framework/sessions/*
(the authentication backend has switched from Zend Framework to Laravel) - complete some post-upgrade tasks and manual database changes covered in this release notification.
If you stopped sflow-detect-ixp-bgp-sessions
, do not restart it just yet - see below.
Peering Matrix and Peering Manager
These two tools have been fully migrated to Laravel with a number of database optimisations and fixes. You can review the official documentation for these here:
- https://docs.ixpmanager.org/features/peering-matrix/
- https://docs.ixpmanager.org/features/peering-manager/
The following is only relevant to you if you are using sflow to detect BGP sessions to populate the peering matrix and peering manager. If you are not, skip ahead to the next section.
The original database schema required a row per detected BGP packet (TCP port 179, established) rather than a row per BGP session between two peers. We have created a new table called bgp_sessions
which now implements this using the latter schema. We have however not yet updated the sflow-detect-ixp-bgp-sessions
script to use this (that's a future release). During the upgrade process, you refreshed the database views - this will also have added a trigger on bgpsessiondata
to maintain this new table. As IXP Manager's frontend uses the new table, you should populate it with this query:
INSERT INTO bgp_sessions (srcipaddressid, dstipaddressid, protocol, packetcount, last_seen, source)
SELECT
srcipaddressid, dstipaddressid, protocol, count(packetcount) AS packetcount, max(timestamp) AS last_seen, any_value (source) AS source
FROM
bgpsessiondata
GROUP BY
srcipaddressid, dstipaddressid, protocol;
If you stopped sflow-detect-ixp-bgp-sessions
, you can now restart it.
Switches
All of the MVC (model-view-controller) code for managing switches has been migrated to Laravel in this release. The most important change for you is to update the cronjob that routinely polled your switches.
The old version would have looked like this:
php /srv/ixpmanager/bin/ixptool.php -a -a switch-cli.snmp-poll
This should be replaced with the following:
php /srv/ixpmanager/artisan switch:snmp-poll --quiet
You should read the new switch management documentation here:
We also added a new port speed audit tool which audits port speeds as configured in physical interfaces against what has been discovered in the last SNMP run.
We would recommend setting this up as a cronjob also as per the documentation.
RIR Objects
IXP Manager can generate (and email) your RIR objects - for example your AS-SETs, AS object, etc - to your RIR for automatic updates / maintenance. See the new documentation here.
This has been migrated also and requires changes to your cronjobs if you had this feature enabled. The main change is that it was previously triggered by a HTTP-based API call and it is now triggered as an artisan command.
Your old cronjob entries may have looked like this:
# RIPE - update AS-SET and AUTSYS objects
curl -sf "$IXP_API_URL/apiv1/rir/update-object/key/$IXP_API_KEY/tmpl/autnum/email/[email protected]"
These should be replaced with Artisan commands as per the above documentation.
Expunging Logs
For data protection best practices, we have added a new CLI based tool which expunges logs that are greater than 6 months old (such as a user's login history). Add a line such as the following to your crontab:
19 2 * * * www-data /srv/ixpmanager/artisan utils:expunge-logs
Users and Contacts
IXP Manager of pre-April 2013 had separate contacts and users which - at the time - some felt was quite confusing. LONAP sponsored a rework of this in 2013 to merge the concept of users and contacts with login privileges. Strangely, this actually caused more confusion and also was a developer nightmare with hacked in code to handle the database tables in multiple places. As such, in 2019 with release v4.9, this was undone and contacts and users are now separate entities again.
All user and contact management controllers have been migrated to Laravel and updated documentation now exists at:
Passwords
In previous versions of IXP Manager, administrators had the facility to set a user's password. This has been removed as we believe it to be bad practice - only a user should know their own password. User's can set (and reset) their passwords via their Profile page or using the password reset functionality.
Welcome Email Templates
As you may know, IXP Manager sends a welcome email to newly created users. If you had previously skinned this (or wish to customise it now), please see this documentation on how to do that with IXP Manager v4.9.
RIPE-NONAUTH
During 2018, RIPE moved route[6]:
entries for IP space that was out-of-region for RIPE to a new source attribute - RIPE-NONAUTH
. This means that those prefixes would not longer be found (and most likely deleted) by IXP Manager's IRRDB discovery for creating route server prefix lists.
If you wish to continue including those prefixes for the (most likely small) set of customers affected, add a new IRRDB source by selecting IRRDB Configuration on the left-hand-side menu under IXP ADMIN ACTIONS and then add a new source with these attributes:
Host: whois.radb.net
Protocol: irrd
Source: RIPE,RIPE-NONAUTH
and then edit the affected customers and update their IRRDB source.
Post-Upgrade Checks
Once you complete the upgrade, the application/
, library/
and var/
directories in ${IXPROOT}
should have been deleted. If they are not, it should be safe to remove them as IXP Manager does not use them. Do ensure you check what files remain in them to satisfy yourself that you do not need them.
Other New Features and Improvements
- Add API support for sflow receiver list in json / yaml format
- Added support for the sflow p2p graphing system to use configured MAC addresses
- Expose configured and learned mac address via sflow receiver interface
- Added a user interface to manage network information (network address and subnet mask) of peering LANs (previously this required manual database queries)
- A lot of house keeping to remove files that are no longer required / used
- Added UI (browser / Laravel Dusk) tests for a number of controllers
- Added support for Comware to update-l2database.pl
- Added documentation links to a number of controllers
- Add more detail to patch panel LoAs - closes #472
- Show reseller for resold customers - closes #478
- Port speeds are now correctly ordered - closes #482
- Add return to 'Virtual Interface Details' button on layer 2 ACLs page - islandbridgenetworks/IXP-Manager-Archive-Yann#49
- Add optic inventory function (closes islandbridgenetworks/IXP-Manager-Archive-Yann#190)
- Option to restrict access to the peering matrix
Bug Fixes
-
#307 - issue with changing partner duplex port when editing a duplex patch panel
-
#424 - p2p link from search needs updating
-
#429 - issue with patch panel port js apostrophe
-
#433 - Cross-connect email address changes - original addresses are kept (via @listerr)
-
#435 - Deleting a customer note throws an error (via @listerr)
-
#438 - Cannot save Left date in 4.8.0 interface.
-
#439 - Contact groups not appearing correctly in 4.8.0
-
#440 - VLAN interfaces without a hostname cannot have an ARPA entry
-
#445 - Customer with no country defaults to "Afghanistan"
-
#449 - issue with rewired duplex ports on patch panels
-
#451 - bad link for test API keyOther
-
#453 - small formatting issue on customer overview page
-
#463 - issue with artisan mailing list script generator
-
#468 - tooltip typo
-
#487 - don't send billing update email for resold customers
-
#488 - edit Customer Details: 'NOC Hours' field display drop-down not updating correctly
-
#494 - Fix null error
-
islandbridgenetworks/IXP-Manager-Archive-Yann#185 - Error 404 when viewing IPv4/6 address lists
-
islandbridgenetworks/IXP-Manager-Archive-Yann#201 - Error when trying to delete a Physical Interface linked with a core bundle
-
islandbridgenetworks/IXP-Manager-Archive-Yann#208 - 'Contact Us' link gives a 404 once you are logged in