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

EIGRP Support #275

Closed
donaldsharp opened this issue Mar 14, 2017 · 22 comments
Closed

EIGRP Support #275

donaldsharp opened this issue Mar 14, 2017 · 22 comments

Comments

@donaldsharp
Copy link
Member

Add EIGRP to FRR

@donaldsharp
Copy link
Member Author

Currently being worked:

https://github.com/donaldsharp/frr/tree/EIGRP

@donaldsharp
Copy link
Member Author

This code forms neighbors and passes eigrp updates with routes around.

@mTaleqani
Copy link

hi Donald. i do not know if it is right to announce this problem here or should i create another Issue. any way i post it here.
after running eigrpd daemon, it successfully formed neighborship with GNS3 cisco router and the learned routes visible in EIGRP Topology table but not inserted into zebra routing table. the problem has already been detected by other guys as it is announced here : "janjanovicsk/Quagga-EIGRP#5".
i hope you could fix it.
The following pictures show the problem :
topology table
zebra routing table

@donaldsharp
Copy link
Member Author

@mTaleqani Yes I am aware of this issue. I have not had time to look at this issue, yet. I was hoping @diivious was going to have time to look at it and point out the issue for me :)

@donaldsharp
Copy link
Member Author

@mTaleqani -

Please check out my branch listed above, EIGRP now installs routes:

robot.cumulusnetworks.com# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct,
> - selected route, * - FIB route

K>* 0.0.0.0/0 via 10.0.2.2, enp0s3
C>* 10.0.2.0/24 is directly connected, enp0s3
E 192.168.2.0/24 [0/0] via 127.0.0.1, enp0s10 inactive
C>* 192.168.2.0/24 is directly connected, enp0s10
E>* 192.168.3.4/32 [0/0] via 192.168.2.144, enp0s10
E>* 192.168.4.5/32 [0/0] via 192.168.2.144, enp0s10
E>* 192.168.4.6/32 [0/0] via 192.168.2.144, enp0s10
C>* 192.168.22.11/32 is directly connected, lo
robot.cumulusnetworks.com# show ip route 192.168.4.5
Routing entry for 192.168.4.5/32
Known via "eigrp", distance 0, metric 0, best

  • 192.168.2.144, via enp0s10

robot.cumulusnetworks.com#

Probably still needs work... and no real testing has been done other than to prove that they have been installed

@diivious
Copy link
Member

hummm...
You may not have permission to access frr-eigrp. Check Preferences to make sure you’re still logged in.

@donaldsharp
Copy link
Member Author

@diivious - Try here: I just gave you collaborator permission too on the REP
https://github.com/donaldsharp/frr/tree/EIGRP

@donaldsharp
Copy link
Member Author

a

@mTaleqani
Copy link

mTaleqani commented Apr 2, 2017

@donaldsharp - I have tested it several times and now EIGRP successfully inserts routes into zebra daemon, then i leave it running and after 30 minutes (sometimes after an hour) zebra daemon crashes and a syslog message saying "Warning: closing connection to zebra because of an I/O error!" is printed and zebra daemon is killed and thus all the routes are removed from the kernel, but EIGRP daemon is still running and working.
but if i run zebra daemon along with for example OSPF daemon, neither of them crashes.
zebra only crashes when it is running along with EIGRP (leave it running for at least one hour then you will see that zebra crashes)

@donaldsharp
Copy link
Member Author

@mTaleqani do you have a stack trace? Since Zebra is crashing that implies that eigrp is sending bad data. Do we have any other logs?

I'll set this up a bit later today and see what I can make happen.

@mTaleqani
Copy link

@donaldsharp - unfortunately did not get any other logs except the one i mentioned above.

@donaldsharp
Copy link
Member Author

@mTaleqani - I just found and fixed an issue in the send of data to zebra involved with a route delete. Please give this new version another try.

@mTaleqani
Copy link

@donaldsharp - now route delete does not work for the zebra. i mean if an eigrp route is gone, eigrpd topology table reacts to it and it removes it from it's topology table but that route still alive in zebra daemon :(

@donaldsharp
Copy link
Member Author

@mTaleqani -> Fixed another issue with the send down of data. Probably still more work ahead :)

@mTaleqani
Copy link

mTaleqani commented Apr 4, 2017

@donaldsharp - now eigrpd and zebra successfully add and remove routes when changes happen to the network.
eigrpd right now can not handle equal cost routes as by default eigrp maximum-path should be 4 so equal-cost routes should be inserted into zebra daemon but right now only one of them is inserted into the zebra daemon although there are some equal cost routes in the eigrp topology table as it is shown below :
image

image

@mTaleqani
Copy link

mTaleqani commented Apr 4, 2017

@donaldsharp - i made some changes to the one of the eigrpd neighbors (cisco router) and one of the neighbors now advertise the same routes with higher metric. so now both routes are visible in eigrp topology table but none are inserted to the zebra daemon! it is shown in the following pictures :

image

image

this is the topology that i am using :
image
in the above topology, both clouds are connected to the virtual machine hosting FRR.

Conclusion : when both routers advertise the routes with the same metrics, although it is shown in the topology table as "2 Successors", only one of them is inserted to the zebra daemon.

but if one of the neighbors advertise the same routes with higher metrics, although they are shown in the topology table and stated as "1 Successor Route", none of them are inserted to the zebra daemon.

@donaldsharp
Copy link
Member Author

@mTaleqani I just addressed some rib add/del issues, cleaned up some memory leaks. Please give it another whirl

@mTaleqani
Copy link

mTaleqani commented Apr 7, 2017

@donaldsharp - they are all fixed and working like a charm 👍 .

when vtysh is called some warnings are printed out but i guess do not affect to vtysh functions. the warnings are shown in the following pictures :
image

there are still some EIGRP features that not working still (probably not implemented yet) :
1 - eigrp router-id : possible to configure it via eigrpd cli but not functioning (not added to running-config)
2 - maximum-path : possible to configure it via cli but not functioning. (it is added to running config but not functioning). i made maximum-path = 1 but still got two equal cost routes in RIB.

@donaldsharp
Copy link
Member Author

@mTaleqani - I fixed the max-path issue last night (untested) and pushed it up. router-id is going to be more work than I want to do.

Question to all -> What do we need to do to consider this ready for a PR?

@mTaleqani
Copy link

@donaldsharp - maximum-path still not working. when it is set to 1 there are still 2 eigrp routes in rib.
passive-interface : it is not feasible to make an interface as passive-interface in eigrpd. when we type passive-interface in eigrpd cli, only the following options are available :
image
so based on the above options i can not make my eth0 as passive-interface. but in ospfd it is possible to make an interface as Passive. in ospfd when we type passive interface, the following options are available :
image
and by using the "ifname" option, it is possible to make an interface as passive.

@donaldsharp
Copy link
Member Author

@mTaleqani - Yes you are correct, I wrote no code to handle the situation of setting max-paths after we have already brought up neighbors. Save the config and reload and things should work. Hopefully 'good enough' for the moment.

I'll take a look at passive-interface while I got some time this afternoon to see what I can scrumble up.

@donaldsharp
Copy link
Member Author

passive-interface commands are now accepted on the branch but nothing is done about it yet. That code has not been written yet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants