桥接相关概念
2019獨角獸企業重金招聘Python工程師標準>>>
?中繼器、網橋以及路由器
中繼器通常配有兩個端口,只是簡單地把在一個端口所接收的東西復制到另一個端口,反之亦然。它復制數據時是按位復制,并且對協議毫不關心,因此它無法區分不同的幀或封包。
網橋和中繼器不同,它了解鏈路層協議,因此可以按幀復制復制數據,而非按位復制。也就是說,網橋在每個端口上至少可以緩存一個幀。
路由器是了解l3網絡層協議的設備,它可以根據路由表轉發入口封包。
當網橋不知道該用哪個接口來連接特定的L2地址時,就會把幀復制到所有接口上(接收該幀的接口除外),這種行為就成為擴散。當網橋接收到一個目的地址是鏈路層廣播地址或L2多播地址的幀時,會將該幀復制給每個端口(接收該幀的端口除外)。多播地址和廣播地址不能在幀中作為源地址。網橋不關心主機究竟在何處,它只需知道該用哪個端口連接該主機。透明網橋不能用在環路拓撲上。網橋用于找出最佳無環路拓撲的算法是生成樹協議。
網橋地址學習的老化
橋接:生成樹協議
使用多臺網橋有一下優點:有助于分離流量,出于同一子層的以太網幀只處于該子層中;很容易管理大量的主機。
STP協議是一種分布式協議,網絡中所有網橋都必須執行這個協議。執行此協議后,網橋就可以開啟他們的某些端口并關閉其他端口,此時得到的整體拓撲結構就是最佳有根生成樹。根節點的選擇也是該協議的一部分:主機都同意誰是根節點,然后決定要開啟和關閉哪些鏈路。
STP通過讓各個網橋之間交換稱為網橋協議數據單元(BPDU)的特殊幀來達到其目標,用BPDU交換的信息可讓:
- 為每個網橋端口指定一個明確的狀態,例如轉發或阻塞,以定義該端口可否接收數據流量
- 通過對端口狀態的設定,從環路拓撲中選擇或丟棄適當的鏈路,以這種方式最終生成無環路拓撲
根網橋:
指定網橋:
生成樹端口:
端口狀態:
網橋協議數據單元(BPDU):
配置BPDU:用于定義無環路拓撲。
TCN,當檢測到拓撲變化時,網橋用于通知根網橋
傳輸配置BPDU的時機
根網橋會運行一個定時器(Hello定時器),該定時器到期后就觸發配置BPDU的傳輸。同一個BPDU從根網橋的每一個指定端口傳輸出去。只有根網橋能產生新的BPDU,但是當一個網橋加電啟動時,它會以為自己就是根網橋(因為沒有其他優先級向量可以比較)。所以,該網橋會將其他所有端口都設定為指定角色。啟動Hello定時器,然后開始產生BPDU。
非根網橋只有在應答其根端口收到的BPDU才會產生BPDU,也就是說,非根網橋會傳遞BPDU。由非根網橋傳輸的BPDU,其所攜帶的信息和他們所接受的BPDU出下列字段之外都是相同的,非根網橋會更新這些字段:
- 傳輸者的網橋ID和端口ID會被該網橋自己的信息替換
- 該網橋會把開銷更新為其所接受的開銷加上其本地網橋中接受BPDU的端口(根端口)的開銷之和
- 消息生存期會按照“BPDU老化”一節所講述的邏輯進行更新。
無論網橋是否為根網橋,在下列情況下也會傳輸一個配置BPDU:
- 當一臺網橋接收到一個BPDU,如果其優先級向量低于該網橋在其端口上所用的,那么,網橋就會以其自己(較高級)的信息應答
- 當一臺網橋接收到一個TCN BPDU時,會立刻發出一個設有特殊標識的配置BPDU作為應答。
不管是因何種原因從某一給定的端口發送出一個配置BPDU,STP都會對其速率進行限制:網橋從其任何端口中每秒只能最多傳輸一個配置BPDU。
每臺網橋按照本地配置信息和接收到的入口配置BPDU中的信息,可完成下列工作:
- 選出根網橋
- 從其幾個端口中選出一個作為根端口
- 對每個端口,為該端口所屬的LAN分配指定的網橋和指定端口
每當網絡發生變化時,就可產生配置更新:
- 開啟或關閉一個端口
- 如果一個端口的Message Age定時器到期了。此端口會重新啟動
- 一臺網橋的本地配置信息發生變化
- 一個網橋端口接收的一個配置BPDU,其優先級向量比該端口先前收到的BPDU的優先級向量高級。
轉載于:https://my.oschina.net/longscu/blog/58967
總結
- 上一篇: 我爱你,与你无关——登录系统的逻辑与结构
- 下一篇: 用 jQuery 获取 iframe 父