mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-10-23 08:30:19 +00:00
During PIM Neighbor change/UP event, pim_scan_oil api scans all channel oil to see any rpf impacted. Instead of passing current upstream's RPF it passes current RPF as 0 and does query to rib for nexhtop (without ECMP/Rebalance). This creates inconsist RPF between Upstream and Channel oil. In Channel Oil keep backward pointer to upstream DB and fetch up's RPF and passed to channel_oil scan. Decrement channel_oil ref_count in upstream_del when decrementing up ref_count and it is not the last. Created ECMP based FIB lookup API. Testing Done: Performed following testing on tester setup: 5 x LHR, 4 x MSDP Spines, 6 Sources each sending to 1023 groups from one of the spines. Total send rate 8Mpps. Test that caused problems was to reboot every device at the same time. After fix performed 5 iterations of reboot devices and show no sign of the problem. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com> |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| AUTHORS | ||
| CAVEATS | ||
| COMMANDS | ||
| COPYING | ||
| DEBUG | ||
| LINUX_KERNEL_MROUTE_MFC | ||
| Makefile.am | ||
| pim_assert.c | ||
| pim_assert.h | ||
| pim_br.c | ||
| pim_br.h | ||
| pim_cmd.c | ||
| pim_cmd.h | ||
| pim_hello.c | ||
| pim_hello.h | ||
| pim_iface.c | ||
| pim_iface.h | ||
| pim_ifchannel.c | ||
| pim_ifchannel.h | ||
| pim_igmp_join.h | ||
| pim_igmp.c | ||
| pim_igmp.h | ||
| pim_igmpv2.c | ||
| pim_igmpv2.h | ||
| pim_igmpv3.c | ||
| pim_igmpv3.h | ||
| pim_int.c | ||
| pim_int.h | ||
| pim_join.c | ||
| pim_join.h | ||
| pim_jp_agg.c | ||
| pim_jp_agg.h | ||
| pim_macro.c | ||
| pim_macro.h | ||
| pim_main.c | ||
| pim_memory.c | ||
| pim_memory.h | ||
| pim_mroute.c | ||
| pim_mroute.h | ||
| pim_msdp_packet.c | ||
| pim_msdp_packet.h | ||
| pim_msdp_socket.c | ||
| pim_msdp_socket.h | ||
| pim_msdp.c | ||
| pim_msdp.h | ||
| pim_msg.c | ||
| pim_msg.h | ||
| pim_neighbor.c | ||
| pim_neighbor.h | ||
| pim_nht.c | ||
| pim_nht.h | ||
| pim_oil.c | ||
| pim_oil.h | ||
| pim_pim.c | ||
| pim_pim.h | ||
| pim_register.c | ||
| pim_register.h | ||
| pim_routemap.c | ||
| pim_rp.c | ||
| pim_rp.h | ||
| pim_rpf.c | ||
| pim_rpf.h | ||
| pim_signals.c | ||
| pim_signals.h | ||
| pim_sock.c | ||
| pim_sock.h | ||
| pim_ssm.c | ||
| pim_ssm.h | ||
| pim_ssmpingd.c | ||
| pim_ssmpingd.h | ||
| pim_static.c | ||
| pim_static.h | ||
| pim_str.c | ||
| pim_str.h | ||
| pim_time.c | ||
| pim_time.h | ||
| pim_tlv.c | ||
| pim_tlv.h | ||
| pim_upstream.c | ||
| pim_upstream.h | ||
| pim_util.c | ||
| pim_util.h | ||
| pim_version.c | ||
| pim_version.h | ||
| pim_vty.c | ||
| pim_vty.h | ||
| pim_zebra.c | ||
| pim_zebra.h | ||
| pim_zlookup.c | ||
| pim_zlookup.h | ||
| pimd.c | ||
| pimd.conf.sample | ||
| pimd.h | ||
| README | ||
| test_igmpv3_join.c | ||
| TODO | ||
| TROUBLESHOOTING | ||
| WHY_SSM | ||
INTRODUCTION
qpimd aims to implement a PIM (Protocol Independent Multicast)
daemon for the FRR Routing Suite.
qpimd implements PIM-SM (Sparse Mode) of RFC 4601.
Additionally MSDP has been implemented.
In order to deliver end-to-end multicast routing control
plane, qpimd includes the router-side of IGMPv[2|3] (RFC 3376).
LICENSE
qpimd - pimd for FRR
Copyright (C) 2008 Everton da Silva Marques
qpimd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2,
or (at your option) any later version.
qpimd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public
License along with qpimd; see the file COPYING. If not, write
to the Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111-1307, USA.
HOME SITE
qpimd lives at:
https://github.com/freerangerouting/frr
PLATFORMS
qpimd has been tested with Debian Jessie.
REQUIREMENTS
qpimd requires FRR (2.0 or higher)
CONFIGURATION COMMANDS
See available commands in the file pimd/COMMANDS.
KNOWN CAVEATS
See list of known caveats in the file pimd/CAVEATS.
SUPPORT
Please post comments, questions, patches, bug reports at the
support site:
https://freerangerouting/frr
RELATED WORK
igmprt: An IGMPv3-router implementation
- http://www.loria.fr/~lahmadi/igmpv3-router.html
USC pimd: PIMv2-SM daemon
- http://netweb.usc.edu/pim/pimd (URL broken in 2008-12-23)
- http://packages.debian.org/source/sid/pimd (from Debian)
troglobit pimd: This is the original USC pimd from
http://netweb.usc.edu/pim/. In January 16, 2010 it was revived
with the intention to collect patches floating around in
Debian, Gentoo, Lintrack and other distribution repositories
and to provide a central point of collaboration.
- http://github.com/troglobit/pimd
zpimd: zpimd is not dependent of zebra or any other routing daemon
- ftp://robur.slu.se/pub/Routing/Zebra
- http://sunsite2.icm.edu.pl/pub/unix/routing/zpimd
mrd6: an IPv6 Multicast Router for Linux systems
- http://fivebits.net/proj/mrd6/
MBGP: Implementation of RFC 2858 for Quagga
- git://git.coplanar.net/~balajig/quagga
- http://www.gossamer-threads.com/lists/quagga/dev/18000
REFERENCES
IANA Protocol Independent Multicast (PIM) Parameters
http://www.iana.org/assignments/pim-parameters/pim-parameters.txt
Address Family Numbers
http://www.iana.org/assignments/address-family-numbers
-- END --