TODO List -*-org-*-
THIS LIST IS FAR AWAY FROM BEING COMPLETE, so these are the few things that came up at the right moment to be written down.
it should be possible to run the default config on it, probing the __FreeBSD_kernel__ and doing the right thing.
http://www.kame.net/dev/cvsweb2.cgi/kame/kame/kame/pim6sd/Attic/
in lex & yacc, like mrouted does.
that it is properly implemented
of its default value (16)
prefix, instead of a single priority for the whole RP.
by using the metrics of other asserts received on that iif, or the comparison uses the local metric and preference info (it must be the former!).
If the (S,G) iif or oifs are different from the (,G) or (,*,RP) iifs/oifs, the resp. (,G) or (,*,RP) will delete and disallow creating (,G) MFC. Only after all MRT (S,G) are deleted, the corresponding (,G) or (,,RP) will create (*,G) MFC.
Right now when the MFC (,G) total datarate is above the SPT switch threshold, the (,G) MFC will be deleted, and any further cache miss will result in (S,G) MFC (the problem is that we must do (S,G) monitoring for eventually high datagate sources). Only after all (S,G) MFCs expire, the daemon’s MRT will stop creating (S,G) MFCs (i.e. the next cache miss will result in (*,G) kernel MFC). A better selection should be applied to sort out the higher datarate sources, and at the same time to have (,G)MFC as well. For example, create few (S,G), and after that create the (,G). If some of the created (S,G) MFC entries have very low datarate, delete them.
#ifdef _KERNEL #define __IPADDR(x) ((u_int32_t) htonl((u_int32_t)(x))) #else #define __IPADDR(x) ((u_int32_t)(x)) #endif
downstream router won’t timeout and will refresh each other even if the sender is not active:
S–DR-----------------R1------------RP (S,G)RPbit (S,G) iif toward S
the LAN-scoped addresses
timers (XXX: not in the spec, but should be there)
Cand-RP messages + Cand-BSR messages and the election of the BSR.
same host as the RP for the multicast group (probably was fixed with alpha6, because I cannot reproduce it anymore)
the whole message must be parsed completely before starting processing it.
(There is a nice paper in Sigcomm ‘97 about fast routing tables implementation, so need to check it as well)
is too low (not in the spec, but Ahmed pointed out some complications if this happens)
(The current implementation is very unefficient if the routing table becomes very large)
- accept_group_report():
- add a leaf if DR or forwarder (currently only if DR)???
- accept_leave_message():
- send immediately PIM prune message if the last member has left
- main():
- use a combination of time and hostid to initialize the random generator.
- restart():
- check the implementation
- pim_register():
- IF THE BORDER BIT IS SET, THEN FORWARD THE WHOLE PACKET FROM USER SPACE AND AT THE SAME TIME IGNORE ANY CACHE_MISS SIGNALS FROM THE KERNEL.
- register_stop():
- REGISTER_STOP rate limiting
- process_cache_miss()
- use negative cache.
- add_rp_grp_entry():
- FIX THE BUG when adding an RP for different prefix requires remapping for some groups!!! (Intentionally left, waiting to come up with an idea how to implement it simple and efficient. If you configure all RPs to advertise the same prefix, the bug won’t “show up”)