阅读982 返回首页    go 阿里云 go 技术社区[云栖]


网络子系统37_网桥、端口定时器

//	网桥定时器初始化
//		在添加网桥时,同时创建网桥使用的定时器
//	调用路径:br_add_bridge->new_bridge_dev->br_stp_timer_init
//	网桥使用的定时器:hello, tcn, tc, gc
1.1 void br_stp_timer_init(struct net_bridge *br)
{
	//根网桥周期性向通过指定端口向其他网桥发送配置BPDU
	setup_timer(&br->hello_timer, br_hello_timer_expired,
		      (unsigned long) br);
    //网桥检测到拓扑变化,通过根端口,发送TCN,直到接收到TCA标志的配置BPDU
	setup_timer(&br->tcn_timer, br_tcn_timer_expired,
		      (unsigned long) br);

    //根网桥通过该定时器,在发送的配置BPDU中,设置TC标志,指示网络拓扑发生变化
	setup_timer(&br->topology_change_timer,
		      br_topology_change_timer_expired,
		      (unsigned long) br);
    //垃圾回收,见转发数据库
	setup_timer(&br->gc_timer, br_fdb_cleanup, (unsigned long) br);
}


//	端口定时器初始化
//		使能网桥端口的stp时,同时创建端口使用的定时器
//	调用路径:br_stp_enable_port->br_init_port->br_stp_port_timer_init  
2.1 void br_stp_port_timer_init(struct net_bridge_port *p)
{
	//用于端口使用的配置BPDU有效性
	setup_timer(&p->message_age_timer, br_message_age_timer_expired,
		      (unsigned long) p);
    //状态转移定时器
	setup_timer(&p->forward_delay_timer, br_forward_delay_timer_expired,
		      (unsigned long) p);
    //端口发送配置bpdu的速率限制定时器
	setup_timer(&p->hold_timer, br_hold_timer_expired,
		      (unsigned long) p);
}

最后更新:2017-04-03 14:53:53

  上一篇:go zoj 2290 GAME 博弈
  下一篇:go effective c++条款1:视C++为一个语言联邦