[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