網絡子係統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