网络子系统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);
}
时间: 2024-10-31 10:45:49

网络子系统37_网桥、端口定时器的相关文章

网络子系统32_网桥设备的开启与关闭

// 开启网桥设备 // 调用路径dev_open->br_dev_open // 函数主要任务: // 1.开启传输队列 // 2.使能网桥 1.1 static int br_dev_open(struct net_device *dev) { //开启的传输功能,清除dev->state的__LINK_STATE_XOFF标志 netif_start_queue(dev); br_stp_enable_bridge(dev->priv);//使能网桥 return 0; } //

网络子系统34_网桥设备的传输与接收

// 网桥设备驱动程序的hard_start_xmit函数 // 函数主要任务: // 1.广播或多播地址,在所有端口上扩散 // 2.存在转发项,在指定端口上发送 // 3.没有找到转发项,在所有端口上扩散 1.1 int br_dev_xmit(struct sk_buff *skb, struct net_device *dev) { struct net_bridge *br = netdev_priv(dev); const unsigned char *dest = skb->dat

网络子系统33_网桥设备的配置更新

// 更新网桥配置信息 // 函数主要任务: // 1.重新选择根端口 // 2.重新选择根网桥 1.1 void br_configuration_update(struct net_bridge *br) { br_root_selection(br);//选择根端口,根网桥 br_designated_port_selection(br);//选择指定端口 } // 选择根端口 // 调用路径:br_configuration_update->br_root_selection // 函数

网络子系统25_生成树协议

//参考 深入理解linux网络技术内幕 //生成树协议(Spanning Tree Protocol, STP)是用于消除环路拓扑的分布式算法. //生成树协议的基本元素: // 1.链路开销,当链路没有指定开销,或者都设置成相同开销时,一个节点到达根的距离用网络跃点数来测量. // 2.BPDU,STP通过让各个网桥之间交换称为网络协议数据单元(BPDU)的特殊帧来传递配置信息. // 3.根网桥,唯一能产生BPDU的网桥,其他网桥只有在接收到BPDU时才会传输BPDU(当网桥第一次加入时,

网络子系统30_桥接子系统通用接口

// 添加网桥设备 // 参数: // name,需要全局唯一 // 调用路径:socket ioctl->br_add_bridge // 函数主要任务: // 1.创建一个新的网络设备 // 2.初始化网络设备的通用字段以及网桥设备的字段 // 3.向系统注册网络设备 1.1 int br_add_bridge(const char *name) { struct net_device *dev;//net_bridge->dev int ret; dev = new_bridge_dev

网络子系统27_桥接子系统初始化

//桥接子系统以模块的形式提供 //函数主要任务: // 1.转发数据库slab缓存 // 2.向socket的ioctl添加回调函数 // 3.在netif_receive_skb中路径上添加回调函数 // 4.向netdev_chain注册监听块 1.1 static int __init br_init(void) { //转发数据库初始化 br_fdb_init(); //桥接子系统中有关netfilter的初始化 ... //向socket的ioctl注册回调函数,处理对网桥的io命令

网络子系统35_BPDU的发送与接收

// 传输配置BPDU // 函数主要任务: // 1.检查速率限制 // 2.填充bpdu报文 // 3.发送配置bpdu // 注:每个端口对bpdu的发送速率具有限制,通过net_bridge_port->hold_timer进行限制. 1.1 void br_transmit_config(struct net_bridge_port *p) { struct br_config_bpdu bpdu;//配置bpdu struct net_bridge *br; if (timer_pe

网络子系统28_桥接ioctl

// 1.网桥子系统向用户空间提供的接口: // 1.1 通过socket ioctl创建网桥 // 1.2 通过网桥的特殊设备文件ioctl添加网桥端口 // 桥接在socket ioctl中的衔接处理 // 处理的命令类型: // 1.获取网桥信息 // 2.设置网桥信息 // 3.添加网桥 // 4.删除网桥 1.1 static long sock_ioctl(struct file *file, unsigned cmd, unsigned long arg) { ... case S

如何防止网络监听与端口扫描

1.使用安全工具 有许多工具可以让我们发现系统中的漏洞,如SATAN等.SATAN是一个分析网络的管理.测试和报告许多信息,识别一些与网络相关的安全问题. 对所发现的问题,SATAN提供对这个问题的解释以及可能对系统和网络安全造成影响的程度,并且通过工具所附的资料,还能解释如何处理这些问题. 当然还有很多像这样的安全工具.包括对TCP端口的扫描或者对多台主机的所有TCP端口实现监听:分析网络协议.监视控制多个网段等,正确使用这些安全工具,及时发现系统漏洞,才能防患于未然. 而对于WindowsN