[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RSVP/ns
Hi,
I run the script "rsvp_merge.tcl" and observed that the RSVP agents linked in leaf nodes in multi
cast three continue to send Path messages in refresh. If they are leaf nodes, why do they continu
e to send Path message ? I'm trying to understand this logic.
I ran the script with some "printf" and the partial result is below:
1 PATH EVENT at 2.001 : SID: 0 RATE: 500000 BUCKET: 5000 SENDER: 0
RSVPAg_o183::send_path_message(s 0x82b3138, psb 0x83a20e8)
2 PATH EVENT at 3.002 : SID: 0 RATE: 500000 BUCKET: 5000 SENDER: 0
RSVPAg_o182::send_path_message(s 0x83a6aa0, psb 0x83a7150)
3 PATH EVENT at 3.002 : SID: 0 RATE: 500000 BUCKET: 5000 SENDER: 0
RSVPAg_o181::send_path_message(s 0x839ed60, psb 0x83a1e10)
4 PATH EVENT at 3.002 : SID: 0 RATE: 500000 BUCKET: 5000 SENDER: 0
RSVPAg_o184::refresh_path(s = 0x83a4100, is-leaf = 0)
RSVPAg_o184::send_path_message(s 0x83a4100, psb 0x83a2d18)
RSVPAg_o185::refresh_path(s = 0x82f6180, is-leaf = 0)
RSVPAg_o185::send_path_message(s 0x82f6180, psb 0x8243fa0)
RSVPAg_o183::refresh_path(s = 0x82b3138, is-leaf = 0)
RSVPAg_o183::send_path_message(s 0x82b3138, psb 0x83a20e8)
RSVPAg_o184::refresh_path(s = 0x83a4100, is-leaf = 0)
RSVPAg_o184::send_path_message(s 0x83a4100, psb 0x83a2d18)
RSVPAg_o182::refresh_path(s = 0x83a6aa0, is-leaf = 0)
RSVPAg_o182::send_path_message(s 0x83a6aa0, psb 0x83a7150)
RSVPAg_o185::refresh_path(s = 0x82f6180, is-leaf = 0)
RSVPAg_o185::send_path_message(s 0x82f6180, psb 0x8243fa0)
RSVPAg_o181::refresh_path(s = 0x839ed60, is-leaf = 0)
RSVPAg_o181::send_path_message(s 0x839ed60, psb 0x83a1e10)
According to execution, all nodes aren't leaf nodes, but in topology RSVP Agents _o184 and o_185
are linked in leaf nodes.
In rsvp.cc:
...
/* Create and send path messages for this session, then reschedule
the session. */
void RSVPAgent::refresh_path(session *s) {
psb *p = s->psb_list;
while (p != NULL) {
if (!is_mcast(s->s->get_dest()) ||
!is_leaf(p->sender->get_addr(), s->s->get_dest())) {
char result = is_leaf(p->sender->get_addr(), s->s->get_dest());
printf("RSVPAg%s::refresh_path(s = %p, is-leaf = %d)\n",name(),s,result);
send_path_message(s, p);
}
p = p->next;
}
s->path_ref = Scheduler::instance().clock() + s->path_tv->get_r();
reschedule_session(s);
}
...
Thanks in advance,
Paulo