Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Track: FRR Quagga fork #230

Closed
mimugmail opened this issue Aug 17, 2017 · 42 comments
Closed

Track: FRR Quagga fork #230

mimugmail opened this issue Aug 17, 2017 · 42 comments
Assignees
Labels
feature Adding new functionality

Comments

@mimugmail
Copy link
Member

https://github.com/FRRouting/frr

Just to track the steps this project goes. It's a very active fork of Quagga and currently implementing EIGRP, NHRP and ISIS. Some limitations on BSD, some only for OpenBSD.

pfSense will replace their mixup with this.

ATM I don't see any reason to go for it but it seems worth to track.

Changelog FRR 3.0:
https://github.com/FRRouting/frr/wiki/FRR-2.0-%E2%86%92-FRR-3.0-Changelog

@obrienmd
Copy link

obrienmd commented Aug 21, 2017

Given support from the Linux foundation, a more open dev model with well-documented governance, and (less absolutely positive but I like) Github-based development, I'd love OPNSense to give this serious consideration.

FRR already has a number of interesting improvements over Quagga (BGP AddPath, BGP unnumbered, 32-bit route tags, ldpd, etc.), and development velocity seems pretty fantastic ATM: https://github.com/FRRouting/frr/pulse

@fichtner fichtner added the support Community support label Aug 21, 2017
@obrienmd
Copy link

pfSense, as it stands right now, has frr as a package which is mutually exclusive with the quagga-based routing packages. Given quagga is not in core, perhaps a "middle way" with less risk would be to allow both a quagga-based routing package and an frr-based one?

@fichtner
Copy link
Member

I would think having both would be less beneficial in the future. We should pick the one that gives us the best results in the mid and especially long term...

@fabianfrz and @mimugmail should decide, they work on the plugin regularly.

@fabianfrz
Copy link
Member

@fichtner I think we cannot support both but if we switch we will have to be careful not to break old installations. this means we would have to move the plugin to frr and provide a meta package called quagga with a newer version which installs the frr plugin as a dependency.

If the vtysh output and the config file format has not changed, we can simply switch, otherwise we will have to adjust the plugin code (especially the regular expressions in quagga.rb).

@obrienmd
Copy link

I ran through the migration with a few non-trivial configs on a linux box (BGP, OSPF, didn't try a RIP config). Config files were not changed and worked as expected, and vtysh output didn't change.

Cumulus has a doc on the transition on their OS which provides useful context: https://docs.cumulusnetworks.com/display/DOCS/Upgrading+from+Quagga+to+FRRouting

The commit activity on frr is astounding. On its own, that's not necessarily a good thing (tm), but most of it seems to not be window dressing - real outstanding bugfixes and cleanup that have been long-standing on Quagga are being resolved.

@mimugmail
Copy link
Member Author

Recently there was a discussion on the Quagga ML:

https://lists.quagga.net/pipermail/quagga-users/2017-August/014824.html

Seems there are some global players not interested in any changes since it runs fine for them :)

@obrienmd
Copy link

I read that differently - that entrenched interests are not super interested in a continuously improving open source routing engine competing against their wares :)

@fichtner
Copy link
Member

frr will be in packages starting with 17.7.3. Do you guys want to keep discussing or should we close this ticket in favour of action-based follow up tickets?

@obrienmd
Copy link

obrienmd commented Sep 17, 2017

Love it. I'm open to closing this up, and look forward to testing 17.7.3. Do you think it will drop by end of September? I have a deployment starting testing the last week of September that I'd like to try frr out on, based on some initial solid results I've had with frr in linux-land.

@fichtner
Copy link
Member

fichtner commented Sep 17, 2017 via email

@obrienmd
Copy link

Awesome, thanks :) Looking forward to playing with it. No need for the switcheroo, this is a pretty minimal config.

@fabianfrz
Copy link
Member

I have to look how much time I have but I may be able to give it a try.

@obrienmd
Copy link

obrienmd commented Sep 19, 2017

Quick report: Installed frr via pkg install, replaced quagga, configured manually in /usr/local/etc/frr/ files, and OSPF is working beautifully against 2 other OPNSense hosts running quagga.

@obrienmd
Copy link

@fichtner I take back my previous comment, and add a couple reports - if you want to switch this to separate action-based issues please feel free!

  • The previous 'success' was the box rememering Quagga routes.
  • When I try to start ospfd using the same conf file Quagga used, I get, for each interface: MPLS-TE(initialize_linkparams) Could not find corresponding OSPF Interface for (e.g.) igb0
  • I suspect this might be an issue with perms for the frr user, given the following:
  • vtysh is running as frr user, so 'copy run start' fails in vtysh (though I don't know if that's critical, as I don't know if OPNSense's Quagga stuff will use vtysh), as it cannot write to the root:wheel owned /usr/local/etc/frr/* files. chowning that dir -R as frr:wheel solved this problem, but may cause many others :)

@fabianfrz
Copy link
Member

@obrienmd the current quagga files are owned by quagga - this is done by the setup script.
VTYSH is used by quagga.rb for printing out the routing tables etc.

@obrienmd
Copy link

Thanks for the context - so, my manual chown of the frr config files should have worked. I'll dig into the OSPF error message.

@obrienmd
Copy link

Still trying to figure this one out. It can clearly see the interfaces in 'show interface' on vtysh, but when I try to start the ospf service, it just pukes with that error. Odd one.

@obrienmd
Copy link

obrienmd commented Sep 27, 2017

@fichtner would it be possible to package a clone of the os-quagga UI plugin for frr, so I can see if GUI config just implements something I'm missing?

Not sure how big an ask this is, i.e. if it's just pointing it to a different config directory, or something more complex. Happy if it's broken, not-qc, and I'm just a guinea pig :)

@fichtner
Copy link
Member

I wouldn't want a full clone yet, maybe we can build a type of QUAGGA_IS_FRR switch into the current quagga port?

@fichtner
Copy link
Member

On the plugins.git level, not from the GUI. /CC @fabianfrz @mimugmail

@fabianfrz
Copy link
Member

@fichtner there are also some path adjustments so it will not completely work. 'quagga' -> 'frr'
However the models and controllers will be probably untouched which means in worst case we have to add some changes to the config files - but I will probably not work on it now.

@obrienmd
Copy link

@fichtner @fabianfrz I'd need some guidance, but I'd be happy to help!

@obrienmd
Copy link

obrienmd commented Sep 27, 2017

@fichtner @fabianfrz Note, I have a fork of plugins with os-frr alongside os-quagga (not installed at same time), and it works as well as manual config did (i.e. still has MPLS-TE(initialize_linkparams) Could not find corresponding OSPF Interface for (e.g.) igb0 error on all ints).

I'm digging in with frr on slack on that right now. Edit: Or would if it was an open slack workspace, apparently :)

@obrienmd
Copy link

obrienmd commented Sep 27, 2017

Ha! Apparently those MPLS-TE log messages are warnings. With my find/replace version of os-quagga installed as os-frr, OSPFv2 is working as expected. Awesome!

Plugins fork with os-frr as 0.1.1 is here: https://github.com/obrienmd/plugins

Let me know if you want a pull request - I suspect based on previous comments probably not :) Hope the fork is helpful for experimentation regardless, if only just to save a few minutes of mundane case-sensitive find/replace.

@fichtner
Copy link
Member

fichtner commented Sep 27, 2017 via email

@mimugmail
Copy link
Member Author

I'd wait till v3 .. no matter if 18.1 is behind or ahead :)

@fichtner
Copy link
Member

fichtner commented Sep 27, 2017 via email

@obrienmd
Copy link

Makes sense. Let me know if I can help in any way!

@fabianfrz
Copy link
Member

I think @mimugmail is right - there is a RC available at the moment:
https://github.com/FRRouting/frr/releases

So for integration waiting for stable is probably the best idea before any changes are done.

@obrienmd
Copy link

Cool, makes sense.

@mimugmail
Copy link
Member Author

I'm going to love FRR and hate Quagga. All my 4 core routers were affected by this:

https://lists.quagga.net/pipermail/quagga-users/2017-September/014830.html

All iBGPs were flapping and 2 of the 4 cores crashed. If 4 were crashed the complete AS would be gone.

FFR fixed this in code ... and Quagga will stay with it I believe. :/
donaldsharp/frr@0840023

@fabianfrz
Copy link
Member

@mimugmail you can ask @fichtner if he can build an rc package of frr 3.0 for you and then you can start porting your stuff. Just keep everything except those things which have be changed (paths, filenames etc.) to keep the plugin functional and don't loose the configuration (model refers to the same XML element).

@obrienmd
Copy link

@fichtner I'd be interested in that rc package of frr 3.0 as well!

@fichtner
Copy link
Member

3.0 seems to have been released: https://github.com/FRRouting/frr/releases/tag/frr-3.0

I'm working on a port update at the moment. :)

@fichtner
Copy link
Member

Done, packages tomorrow... opnsense/ports@5f90b819d

I can't find a 3.0 release announcement, looks like this either isn't final or still being assembled...

@fichtner fichtner added feature Adding new functionality and removed support Community support labels Oct 20, 2017
@fichtner
Copy link
Member

We have pushed FRR to FreeBSD ports as well. It looks like it's working ;)

@fichtner
Copy link
Member

FRR will be version 3.0.2 in 17.7.8. If anyone wants to start migrating/copying the quagga plugin, that would be a good time to start it on our way to 18.1 ;)

From the model perspective, maybe we can keep "quagga" naming, but only change the internal service usage.

@fichtner
Copy link
Member

Plugin exists, probably hitting 1.0 with 18.1.

@fabianfrz
Copy link
Member

@fichtner if this is released, os-frr should be released at the same time.

@fichtner
Copy link
Member

@fabianfrz yes, this will both automatically land on stable/18.1. maybe os-frr should be bumped right now to 1.0 as well?

@fabianfrz
Copy link
Member

sure

fichtner added a commit that referenced this issue Dec 27, 2017
@fichtner
Copy link
Member

great, thanks.. see 7a8fe4a6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Adding new functionality
Development

No branches or pull requests

4 participants