Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc

Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc

ID:58867648

大?。?58.50 KB

頁數(shù):8頁

時間:2020-09-21

Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc_第1頁
Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc_第2頁
Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc_第3頁
Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc_第4頁
Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc_第5頁
資源描述:

《Linux內(nèi)核分析-網(wǎng)絡[五]:網(wǎng)橋.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、看完了路由表,重新回到netif_receive_skb()函數(shù),在提交給上層協(xié)議處理前,會執(zhí)行下面一句,這就是網(wǎng)橋的相關(guān)操作,也是這篇要講解的容。viewplaincopytoclipboardprint?1.skb?=?handle_bridge(skb,?&pt_prev,?&ret,?orig_dev);??skb=handle_bridge(skb,&pt_prev,&ret,orig_dev);???????網(wǎng)橋可以簡單理解為交換機,以下圖為例,一臺linux機器可以看作網(wǎng)橋和路由的結(jié)合,網(wǎng)橋?qū)⑽锢砩系膬蓚€局域網(wǎng)LAN1、LAN2當作一個局域網(wǎng)處理,路由連接了兩個子網(wǎng)1.0和

2、2.0。從eth0和eth1網(wǎng)卡收到的報文在Bridge模塊中會被處理成是由Bridge收到的,因此Bridge也相當于一個虛擬網(wǎng)卡。?STP五種狀態(tài)???????DISABLED???????BLOCKING???????LISTENING???????LEARNING???????FORWARDING創(chuàng)建新的網(wǎng)橋br_add_bridge[netbridgebr_if.c]當使用SIOCBRADDBR調(diào)用ioctl時,會創(chuàng)建新的網(wǎng)橋br_add_bridge。???????首先是創(chuàng)建新的網(wǎng)橋:viewplaincopytoclipboardprint?1.dev?=?new_br

3、idge_dev(net,?name);??dev=new_bridge_dev(net,name);???????然后設置dev->dev.type為br_type,而br_type是個全局變量,只初始化了一個名字變量viewplaincopytoclipboardprint?1.SET_NETDEV_DEVTYPE(dev,?&br_type);??2.static?struct?device_type?br_type?=?{??3.?.name?=?"bridge",??4.};??SET_NETDEV_DEVTYPE(dev,&br_type);staticstructdevic

4、e_typebr_type={.name="bridge",};???????然后注冊新創(chuàng)建的設備dev,網(wǎng)橋就相當一個虛擬網(wǎng)卡設備,注冊過的設備用ifconfig就可查看到:viewplaincopytoclipboardprint?1.ret?=?register_netdevice(dev);??ret=register_netdevice(dev);???????最后在sysfs文件系統(tǒng)中也創(chuàng)建相應項,便于查看和管理:viewplaincopytoclipboardprint?1.ret?=?br_sysfs_addbr(dev);??ret=br_sysfs_addbr(dev

5、);將端口加入網(wǎng)橋br_add_if()[netbridgebr_if.c]當使用SIOCBRADDIF調(diào)用ioctl時,會向網(wǎng)卡加入新的端口br_add_if。???????創(chuàng)建新的net_bridge_portp,會從br->port_list中分配一個未用的port_no,p->br會指向br,p->state設為BR_STATE_DISABLED。這里的p實際代表的就是網(wǎng)卡設備。viewplaincopytoclipboardprint?1.p?=?new_nbp(br,?dev);??p=new_nbp(br,dev);???????將新創(chuàng)建的p加入CAM表中,CAM表是用

6、來記錄mac地址與物理端口的對應關(guān)系;而剛剛創(chuàng)建了p,因此也要加入CAM表中,并且該表項應是local的[關(guān)系如下圖],可以看到,CAM表在實現(xiàn)中作為net_bridge的hash表,以addr作為hash值,鏈入net_bridge_fdb_entry,再由它的dst指向net_bridge_port。viewplaincopytoclipboardprint?1.err?=?br_fdb_insert(br,?p,?dev->dev_addr);???err=br_fdb_insert(br,p,dev->dev_addr);????????設備的br_port指向p。這里要明白的是

7、,net_bridge可以看作全局量,是網(wǎng)橋,而net_bridge_port則是與網(wǎng)卡相對應的端口,因此每個設備dev有個指針br_port指向該端口。viewplaincopytoclipboardprint?1.rcu_assign_pointer(dev->br_port,?p);??rcu_assign_pointer(dev->br_port,p);???????將新創(chuàng)建的net_bridge_port加入br的鏈表po

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。