]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/pim6sd/BUGS.TODO
This commit was generated by cvs2svn to compensate for changes in r75937,
[FreeBSD/FreeBSD.git] / usr.sbin / pim6sd / BUGS.TODO
1   $Id: BUGS.TODO,v 1.1.1.1 1999/08/08 23:30:57 itojun Exp $
2   $FreeBSD$
3
4 THIS LIST IS FAR AWAY FROM BEING COMPLETE, so these are the few things 
5 that came up at the right moment to be written down.
6
7   * Experimental kernel MFC (*,G) related:
8     If the (S,G) iif or oifs are different from the (*,G) or (*,*,RP)
9     iifs/oifs, the resp. (*,G) or (*,*,RP) will delete and disallow
10     creating (*,G) MFC. Only after all MRT (S,G) are deleted, the
11     corresponding (*,G) or (*,*,RP) will create (*,G) MFC.
12
13   * Experimental kernel MFC (*,G) related:
14     Right now when the MFC (*,G) total datarate is above the SPT switch
15     threshold, the (*,G) MFC will be deleted, and any further cache miss
16     will result in (S,G) MFC (the problem is that we must do (S,G)
17     monitoring for eventually high datagate sources). Only after all
18     (S,G) MFCs expire, the daemon's MRT will stop creating (S,G) MFCs
19     (i.e. the next cache miss will result in (*,G) kernel MFC).
20     A better selection should be applied to sort out the higher
21     datarate sources, and at the same time to have (*,G)MFC as well.
22     For example, create few (S,G), and after that create the (*,G). If some
23     of the created (S,G) MFC entries have very low datarate, delete them.
24
25   * Use NetBSD's definition for IPADDR (netinet/in.h):
26 #ifdef _KERNEL
27 #define __IPADDR(x)     ((u_int32_t) htonl((u_int32_t)(x)))
28 #else
29 #define __IPADDR(x)     ((u_int32_t)(x))
30 #endif
31
32  
33   * The (S,G)RPbit in the DR for the sender and the (S,G)SPT in the
34     downstream router won't timeout and will refresh each other even
35     if the sender is not active:
36
37     S--DR-----------------R1------------RP
38        (S,G)RPbit        (S,G)
39                        iif toward S
40
41   * Check whether the kernel code sends CACHE_MISS and WRONG_IIF for
42     the LAN-scoped addresses
43
44   * If the RP for a group changes, the DR should cancel any PIM-register-stop
45     timers (XXX: not in the spec, but should be there)
46
47   * If a new interface is configured, include it automatically
48
49   * Don't create routing entries for local link scoped groups
50
51   * Implement adm. scoped filters
52
53   * Do precise check of the timer events to speed up the propagation of the
54   Cand-RP messages + Cand-BSR messages and the election of the BSR.
55
56   * Fix the bug for messing up the things when the receiver is on the
57   same host as the RP for the multicast group (probably was fixed with alpha6,
58   because I cannot reproduce it anymore)
59
60   * Do more precise error check for the received PIM messages. In most cases, 
61   the whole message must be parsed completely before starting processing it.
62
63   * Clean up the debugging messages.
64
65   * Use Patricia tree to search the routing table 
66   (There is a nice paper in Sigcomm '97 about fast routing tables
67   implementation, so need to check it as well)
68
69   * Do switch back to the Shared Tree by timing out the SPT if the rate
70   is too low (not in the spec, but Ahmed pointed out some complications if
71   this happens)
72
73   * Change all countdown timers to events timeout (callout.c)
74   (The current implementation is very unefficient if the routing table becomes
75   very large)
76
77   * Send immediately Join/Prune, instead of relying of Join/Prune timer = 0
78
79   * Fix the code allowing interface UP/DOWN without restarting pimd.
80
81   * Do more testings for SPT switch, Join/Prune, asserts, etc...
82
83   * Test the (*,*,RP) code (need PIM/DVMRP border router to do so)
84
85   * Test the RSRR (RSVP support) code
86
87   * Send Initial_Reply RSRR message if the interfaces detected by pimd change
88
89   * SNMP support 
90
91 ===TODO by function name===
92 igmp_proto.c:
93   * accept_group_report():
94     - add a leaf if DR or forwarder (currently only if DR)???
95   * accept_leave_message():
96     - send immediately PIM prune message if the last member has left
97
98 main.c
99   * main():
100     - use a combination of time and hostid to initialize the random generator.
101   * restart():
102     - check the implementation
103
104 pim_proto.c
105   * pim_register():
106     - IF THE BORDER BIT IS SET, THEN FORWARD THE WHOLE PACKET FROM USER SPACE
107        AND AT THE SAME TIME IGNORE ANY CACHE_MISS SIGNALS FROM THE KERNEL.
108   * register_stop():
109     - REGISTER_STOP rate limiting
110
111 route.c
112   * process_cache_miss()
113     - use negative cache.
114
115 rp.c
116   * add_rp_grp_entry():
117     - FIX THE BUG when adding an RP for different prefix requires remapping
118       for some groups!!!
119     (Intentionally left, waiting to come up with an idea how to implement
120      it simple and efficient. If you configure all RPs to advertise the
121      same prefix, the bug won't "show up")
122
123 ================DONE=====================
124
125   * When receive PIM_REGISTER, check whether I am the chosen RP
126