欢迎来到天天文库
浏览记录
ID:41848898
大小:292.86 KB
页数:17页
时间:2019-09-03
《Linux桥接功能的分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、STAR-NET星网盅捷网桥设计与实现相关知识文档编号:00・6201・100当前版本:1.0.0.0创建日期:2011-8-17编写作者:ganjingwei网桥知识总结前言3关于此文档3参考资料3第一章网桥的基本概念41.1网桥的作用41.2网桥的工作原理4第二章Linux桥功能52」数据包流程112.2相关代码13221br_handle_frame函数132.2.2br_handle_frame_finish函数14前言关于此文档此文档是本人这段时间内学习Linux网络协议栈网桥功能相关知识
2、,总结并且整理出来的文档。供大家参考。本文档描述Linux相关知识,各章节说明如下:1前言,即此章节;2网桥理论知识;3重要数据结构4网桥和端口的创建过程5Linux网桥的实现及数据包流程;参考资料网络资源。木文中的所有代码以broadcomd.12L.01为依据,内核代码为2.6。第一章网桥的基本概念1.1网桥的作用网桥工作在ISO层次结构中的二层,通过mac地址来区分,实现几个网络或主机之间的互联。1-2网桥的工作原理网桥的工作原理其实很简单,就是:某个主机的消息从哪个端口进来,那么这个主机必定
3、位与这个端口这一侧,从这个端口一定能找到这个主机,给这个主机的消息也就应该从这个端口转发。比如,一个网桥连接主机A和主机当主机A连接到网桥时,会告诉网桥,它在端口A。网桥会维持一个映射表,让端口A与主机A的mac地址对应。当有其他主机试图通过网桥转发目的mac地址为主机A的mac地址的消息时,网桥会通过查表来指导应该由端口A转发。同理,当网桥连接两个或两个以上主机或主机构成的网络时,也按照这个原则,维持一个记录端口和mac地址的映射表,需要转发消息的时候通过查找这个表来找到应该去的地址。当然,如果收
4、到的消息是发给网桥木身的,就要交给上层协议来处理。这就是网桥的工作原理。第二章数据结构2.1net_bridge这个结构体描述一个网桥。clev是这个桥对应的设备。port_list是netbridge_port的链表头。hash[BRHASHSIZE]是netbridgefdbentry的散列表,也是网桥MAC地址和端口的映射表CAM。structnet_bridgespinlock_tlock;structlist_headportjist;structnet_device*dev;struct
5、net_device_statsstatistics;spinlock_thash_lock;structhlist_headhash[BR_HASH_SIZE];structlist_headagejist;unsignedlongfeature_mask;unsignedlongflags;bridgedesignated_root;bridge_idbridge_id;u32root_path_cost;unsignedlongmax_age;unsignedlonghello_time;un
6、signedlongforward_delay;unsignedlongbridge_max_age;unsignedlongageingunsignedlongbridge_hello_time;unsignedlongbridge_forward_delay;u8group_addr[ETH_ALEN];u!6root_port;enum{BR.NO.STP,/*nospanningtree*/BR_KERNEL_STP,/*oldSTPinkernel*/BR_USER_STP,/*newRS
7、TPinuserspace*/}stp_enabled;unsignedchartopology_change;unsignedchartopology_change_detected;structtimer_listhello_timer;structtimer_listtcn_timer;structtimer_listtopology_change_timer;structtimer_liststructkobjectgc_timer;*ifobj;};2.1net_bridge_port这是
8、网桥端口的结构体。br指向它属于的网桥。port_no是端口ID,唯一的标识。structnet_bridge_port{structnet_bridgestructnet_devicestructlist_headu8u8u!6unsignedcharunsignedcharport_idport_idbridge」dbridge_idu32u32structtimer_liststructtimerjiststructtimerjiststructkobjects
此文档下载收益归作者所有