[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 multicast three continue to send Path messages in refresh. If they are leaf nodes, why do they continue 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)

All nodes aren't leaf nodes. Why ?

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