pimd-2.1.0

所属分类:网络编程
开发工具:C/C++
文件大小:243KB
下载次数:44
上传日期:2006-10-25 15:00:44
上 传 者city_lovelace
说明:  支持PIM-SM组播路由,支持组播 路由表,稍微修改即可构建组播路由器
(support PIM-SM Multicast routing, multicast support multicast routing table, can be modified slightly Construction multicast routers)

文件列表:
pimd-2.1.0\include\freebsd\netinet\in.h (18432, 2000-03-08)
pimd-2.1.0\include\freebsd\netinet\ip_mroute.h (10036, 2000-03-08)
pimd-2.1.0\include\freebsd\netinet (0, 2006-04-03)
pimd-2.1.0\include\freebsd (0, 2006-04-03)
pimd-2.1.0\include\freebsd2\netinet\in.h (13795, 2000-03-08)
pimd-2.1.0\include\freebsd2\netinet\ip_mroute.h (10142, 2000-03-08)
pimd-2.1.0\include\freebsd2\netinet (0, 2006-04-03)
pimd-2.1.0\include\freebsd2 (0, 2006-04-03)
pimd-2.1.0\include\linux\netinet\in-glibc-2.0.h (9054, 2000-03-08)
pimd-2.1.0\include\linux\netinet\in-glibc-2.1.h (10589, 2000-03-08)
pimd-2.1.0\include\linux\netinet\in-slackware.h (5897, 2000-03-08)
pimd-2.1.0\include\linux\netinet\in.h (764, 2000-03-08)
pimd-2.1.0\include\linux\netinet\ip_mroute.h (21, 2000-03-08)
pimd-2.1.0\include\linux\netinet\mroute.h (6065, 2000-03-08)
pimd-2.1.0\include\linux\netinet (0, 2006-04-03)
pimd-2.1.0\include\linux (0, 2006-04-03)
pimd-2.1.0\include\netbsd\netinet\in.h (11071, 2000-03-08)
pimd-2.1.0\include\netbsd\netinet\ip_mroute.h (7713, 2000-03-08)
pimd-2.1.0\include\netbsd\netinet (0, 2006-04-03)
pimd-2.1.0\include\netbsd (0, 2006-04-03)
pimd-2.1.0\include\netinet\pim.h (4290, 2003-05-21)
pimd-2.1.0\include\netinet\pim_var.h (4165, 2003-05-21)
pimd-2.1.0\include\netinet (0, 2006-04-03)
pimd-2.1.0\include\openbsd\netinet\ip_mroute.h (7782, 2000-10-13)
pimd-2.1.0\include\openbsd\netinet (0, 2006-04-03)
pimd-2.1.0\include\openbsd (0, 2006-04-03)
pimd-2.1.0\include\sunos-cc\netinet\igmp.h (1990, 2000-03-08)
pimd-2.1.0\include\sunos-cc\netinet\in.h (7061, 2000-03-08)
pimd-2.1.0\include\sunos-cc\netinet\ip_mroute.h (8503, 2000-03-08)
pimd-2.1.0\include\sunos-cc\netinet (0, 2006-04-03)
pimd-2.1.0\include\sunos-cc\sys\sockio.h (4416, 2000-03-08)
pimd-2.1.0\include\sunos-cc\sys (0, 2006-04-03)
pimd-2.1.0\include\sunos-cc (0, 2006-04-03)
pimd-2.1.0\include\sunos-gcc\netinet\igmp.h (1990, 2000-03-08)
pimd-2.1.0\include\sunos-gcc\netinet\in.h (7077, 2000-03-08)
pimd-2.1.0\include\sunos-gcc\netinet\ip_mroute.h (8507, 2000-03-08)
pimd-2.1.0\include\sunos-gcc\netinet (0, 2006-04-03)
pimd-2.1.0\include\sunos-gcc\sys\sockio.h (4372, 2000-03-08)
pimd-2.1.0\include\sunos-gcc\sys (0, 2006-04-03)
pimd-2.1.0\include\sunos-gcc (0, 2006-04-03)
... ...

$Id: README,v 1.42 2005/01/15 01:26:45 pavlin Exp $ ================================================================== NOTE: As of January 14, 2005, pimd is officially RETIRED. It hasn't been updated properly for years (only bug fixes reported by users), and has been superseded by newer and better open-source implementations. See http://netweb.usc.edu/pim/ for a list of such implementations. Also, note that as of January 14, 2005 the *BSD kernel patches have been committed to DragonFlyBSD, FreeBSD, NetBSD and OpenBSD, hence the *BSD kernel patches available from the pimd site are obsoleted. All the code is preserved for historical interest. Pavlin Radoslavov Fri Jan 14 17:24:28 PST 2005 ================================================================== WARNING! WARNING! WARNING! THIS RELEASE IS VERY ALPHA, SO PLEASE DO NOT REDISTRIBUTE AND DO NOT TRY IT OUTSIDE OF YOUR TESTBED. This is README for pimd, the PIM multicast daemon. PIM-SM version: 2 Check http://netweb.usc.edu/pim/pimd/ for lastest pimd version. NOTE: If you have any questions, suggestions, bug reports, etc., do NOT send them to the PIM IETF Working Group mailing list! Instead, send them to the current maintainer: Pavlin Ivanov Radoslavov pavlin@catarina.usc.edu SUPPORTED PLATFORMS: FreeBSD, NetBSD, OpenBSD, Linux (Note that I have only FreeBSD on my testbed, and I relay exclusively on users feedbacks to make it working on other platforms). AVAILABLE PIM KERNEL PATCHES: FreeBSD, NetBSD, OpenBSD Check http://netweb.usc.edu/pim/pimd/pimkern-current/ or http://netweb.usc.edu/pim/pimd/pimkern-tmp/ for available kernel patches WARNING WARNING WARNING: XXX: this pimd release is unofficial, and by default will not work with the *BSD patches in the pimkern-current directory; use the pimkern-tmp patches instead or recompile pimd with PIM_OLD_KERNEL defined (see the beginning of Makefile). Linux users: linux-2.1.103 and later has PIM-SMv2 kernel support, but if your kernel is older than version 2.2.11 and 2.3.6, you need a kernel patch-fix. Check the following file for details: http//netweb.usc.edu/pim/pimd/pimkern-current/README.checksum Existing old PIM kernel patches: SunOS-4.1.3, SGI, BSDI-3.0, BSDI-3.1 PLATFORMS NOT SUPPORTED ANYMORE: - SGI: pimd may still be OK, but the available PIM-kernel patches may be obsolete - SunOS-4.1.3: pimd may still be OK, but the available PIM-kernel patches may be obsolete - Solaris-2.5.1 and 2.6: most of the pimd code was developed on Solaris-2.5.1, but the used kernel patches were Sun internal property, and were never released to the public. - BSDI: pimd may still be OK, but the available PIM-kernel patches may be obsolete Mini-FAQ: - Q: My RP is a Cisco router, but it doesn't work with pimd A1: If your Cisco is running PIM-SMv1, it won't work with pimd which implements only PIM-SMv2. You need to upgrade/configure your Cisco to run PIM-SMv2 A2: If your Cisco is indeed running PIM-SMv2, and it is the RP, you need to recompile pimd with BROKEN_CISCO_CHECKSUM defined (see the beginning of Makefile). Note that then the PIM Register messages may not be accepted by some other vendors (pimd-to-pimd should still be OK). - Q: I have added in the past PIM patches to my *BSD kernel, but recent pimd versions (pimd-2.1.0-alpha29 and later) do not work with that kernel. A: Around the time pimd-2.1.0-alpha29 was created, the kernel PIM API was changed. Unfortunately, the result was non-compatibility. Either update your kernel to use the most recent API, or recompile pimd with PIM_OLD_KERNEL defined (see the beginning of Makefile) - Q: I have Solaris 8, but my kernel crashes when I start pimd A: There is a bug in the Solaris 8 kernel. I guess there is a patch that fixes it, but I don't know its location. - Q: Do I need to re-configure my Linux kernel to run pimd? - A: Very likely, yes, because some of the options below are not enabled by default. Make sure that you have: * enable CONFIG_IP_MULTICAST * enable CONFIG_IP_PIMSM_V2 * enable CONFIG_IP_MROUTE * You _may_ enable CONFIG_IP_PIMSM_V1 as well, but I don't think it is required if you are running only PIM-SMv2 * enable the NETLINK-related options * Make sure that those options are set to "y" to include the relevant code in the kernel; if you enable them as modules, then you may have to load that module after you boot with the new kernel. One way to find-out if multicast routing is not working, is to use command `cat /proc/sys/net/ipv4/conf/eth0/mc_forwarding' after you have started pimd (you may use other interface name instead of eth0). If it returns zero, the multicast forwarding on that interface is not working. - Q: I tried to run pimd on Linux, but I get the following error message: "netlink socket: Address family not supported by protocol" - A: You need to enable the NETLINK-related stuff in the kernel and recompile it. - Q: pimd compiled and is running on a single machines, but when I run it on 2+ machines, the multicast packets do not reach the receivers. - A: Without detailed debug information I cannot answer this question. Please send to the pimd maintainer a scheme of your network, and the debug output from each router (pimd -d all) - Q: How do I debug my multicast routing? - A: Check README.debug for some hints. - Q: How do I use pimd with GRE tunnels? - A: See file README.config - Q: How do I run pimd but without configuring it as a Cand-RP and/or a Cand-BSR? - A: See file README.config - Q: How do I configure pimd to do FOO? - A: See file README.config. If the answer is not there, send email to the current pimd maintainer. FAST START (read "fast explanation" :)) 1. Apply the PIM kernel patches, recompile, reboot 2. Copy pimd.conf to /etc and edit as appropriate. Disable the interfaces you don't need. Note that you need at least 2 physical interfaces enabled. 3. Edit Makefile by uncommenting the line(s) corresponding to your platform. 4. Recompile pimd 5. Run pimd as a root. It is highly recommended to run it in debug mode. Because there are many debug messages, you can specify only a subset of the messages to be printed out: usage: pimd [-c configfile] [-d [debug_level][,debug_level]] Valid debug levels: dvmrp_prunes,dvmrp_mrt,dvmrp_neighbors,dvmrp_timers,igmp_proto,igmp_timers,igmp_members,trace,timeout,pkt,interfaces,kernel,cache,rsrr,pim_hello,pim_register,pim_join_prune,pim_bootstrap,pim_asserts,pim_cand_rp,pim_routes,pim_timers,pim_rpf If you want to see all messages, use "pimd -d all" only. 6. Note that it takes of the order of 30 seconds to 1 minute until the Bootstrap router is elected and the RP-set distributed to the PIM routers, and without the RP-set in the routers the multicast packets cannot be forwarded. 7. There are plenty of bugs, some of them known (check BUGS.TODO), some of them unknown, so your bug reports are more than welcome. ACKNOWLEDGEMENTS (apology if I have missed your name): * The PIM kernel modifications and pimd itself were originally written by Ahmed Helmy (ahelmy@catarina.usc.edu) as a summer intern in SGI. * The "up to the March '97 I-D spec" + RSVP support pimd version was done by Pavlin Radoslavov during his summer'97 intern in Sun Microsystems under Michael Speer's supervision. * BSDI 3.0/3.1 support + various improvements and bug reports by Hitoshi Asaeda (asaeda@yamato.ibm.co.jp). * Bug reports and SGI tests by Nidhi Bhaskar (nidhi@cho-oyu.engr.sgi.com). * Bug reports and SunOS tests by Isabelle Girard (girardi@rc.bel.alcatel.be) and Dirk Ooms (oomsd@rc.bel.alcatel.be) * NetBSD-1.3 compilation support (both for pimd and the kernel mods) and bug reports by Heiko W.Rupp * Bug reports by Chirayu Shah (shahzad@torrentnet.com) * A number of changes copied back from pimdd (PIM-DM) stand-alone implementation by Kurt Windisch (kurtw@antc.uoregon.edu) * Linux patches by "Jonathan Day" and Fred Griffoul * Bug reports and Linux tests by Kaifu Wu * Linux kernel internals help by Alexey Kuznetsov * Bug reports by Fred Griffoul * Bug reports and fixes for Linux by "Venning, Roger" * Various patches and bug fixes by JINMEI Tatuya * Solaris 8 fixes by "Eric S. Johnson" * Bug reports by Azzurra Pantella and Nicola Dicosmo from University of Pisa. * Bug reports and fixes by Sri V * Bug reports, fixes and new features (ALTNET, SCOPED traffic) by Marian Stagarescu and Ashok Rao * Bug reports by Philip Ho * Bug reports by * GRE configuration examples, bug fixes, and code contribution by Hiroyuki Komatsu * Bug report and fix by Xiaofeng Liu * Bug reports and fixes by SAKAI Hiroaki * Bug reports and fixes by "Jiahao Wang" and "Bo Cheng" ) * Bug report by Andrea Gambirasio * Bug reports by "J.W. (Bill) Atwood" * Bug report by "Eva Pless" * Bug reports and fixes by SUZUKI Shinsuke * Bug report by Serdar Uezuemcue * Bug reports and fixes by * All alpha testers who were brave enough to try it and then sent me feedbacks (apology for not keeping the list). * Thanks to the FreeBSD team and particularly to the freebsd-hackers mailing list participants for the help with the real-time debugging of the FreeBSD kernel. ======================================== MISC NOTES: IMPLEMENTATION NOTE FOR "SCOPED traffic" (from Marian Stagarescu ): In order to minimize the search for the matching groups the implementation is limited to (and requires adequate testing): packets are stopped from being forwarded by installing a NULL outgoing interface: the user space (pimd) is not up-call-ed any more for these packets which are dropped by kernel (nil oif) except for when we de-install the route are re-create it (timer 3 minute). this translates into adding : pim/route.c process_cache_miss(): add_kernel_cache(mrtentry_ptr, mfc_source, group, MFC_MOVE_FORCE); #ifdef SCOPED_ACL APPLY_SCOPE(group,mrtentry_ptr); #endif k_chg_mfc(igmp_socket, mfc_source, group, iif, mrtentry_ptr->oifs,rp_addr); where: #define APPLY_SCOPE(g,mp) { \ register vifi_t _i; \ for (_i = 0; _i < numvifs; _i++) \ if (scoped_addr(_i, g)) \ (mp)->oifs = NULL; \ } with scoped_addr (as in mrouted) uses the VIF acl that was installed via config scoped statements. file changed: config.c route.c NOTE: not sure if the above filter needs to be installed when we have the case of "the iif doesn't match" ========================================

近期下载者

相关文件


收藏者