《计算机网络概论》学习笔记整理之bridge
/ / 点击 / 阅读耗时 13 分钟这一篇主要涉及以下4个方面:
- A bridge is a layer2 device which relays frames among physically seperated LANs and makes the physical LANs appear as one logical LAN to the end stations
- Bridge的基本功能()
- 封包转送和过滤
- address learning
- 解决拓扑结构中的环状结构问题
- spanning tree algotithm,涉及到root、root port、designated port、RPC
- spanning tree的维护
Bridge
bridge是MAC层的设备,用于在物理分隔的LAN之间转播封包。对于LAN上相连的stations,bridge的存在让相连的LAN表现的好像一个逻辑LAN(one logical LAN).
one logical LAN:station 4和station 5本来位于不同的LAN上,但通过bridge相连后,在逻辑上可以看成在同一个LAN上(one logical LAN)
bridge的重要功能:
- 封包的转送和过滤
- address learning:知晓网络上的每一个station在什么地方
- 解决拓扑结构中可能出现的回路问题,使用spanning tree algorithm
bridge的其他功能:
- congestion control(拥塞控制):比如由于连接的双方网络网速不同,导致封包拥塞,使用buffer来解决
- static filter:从安全角度出发,提前设定好参数,不允许某个station给某个station送封包
- 封包转送:比如将1个Ethernet封包转送到wireless上(两类封包格式不同)
- 路由
- segmentation:将大封包切割用于传送
bridge的参数
- id:由8bytes构成
- priority part(2 parts): programmable
- address part(6 parts)
- bridge之间要相互交流,如果一个封包带有特定形式的MAC address就是广播形式的封包,所有的bridge都要收起来处理
- bridge上的每一个端口都有一个唯一id,用于进行端口的识别
Bridge LAN(BLAN)
BLAN的特点:
- 提高网络的可靠性
- 提高网络的传输性能,因为不同的LAN上可以有封包同时传送
- 提高网络的安全性
- 可以覆盖较大的地理区域
在BLAN中,每个bridge收到封包都有两个重要的任务:
转送和过滤(forwarding)
每个bridge都维护一个entry:[address, port, time]结构的database,每一个封包进来,bridge都会用封包中的destination MAC address去database中寻找。首次或不知道的情况下会进行广播。
使用的参数就是下图中的DA。
address learning
将封包中的source Mac address及相关参数存入database中。
使用的参数是下图中的SA。
forwarding and address learning algorithm:
有回路BLAN的问题和解决办法
回路是为了提高网络的可靠性,但同时会造成下面的问题:
- 封包会重复接收(frame duplication)
回路会造成错误的address learning(比如不清楚一个station到底来自哪个port)
当A向B发送数据时:
- LAN2是双向传输,t0时刻,BridgeX和BridgeY都会收到封包,BridgeX记录A的地址及进入端口是X1,BridgeY记录A的地址及进入端口Y1
- BridgeX继续将封包转输到LAN1上,t1时刻,封包被B收到,继续向前传输,从BridgeY的Y2端口进入,BridgeY修改A的地址及进入端口Y2
- BridgeY继续将封包转输到LAN1上,t2时刻,B再次收到相同封包,继续向前传输,从BridgeX的Y2端口进入,BridgeX修改A的地址及进入端口X2
造成的结果:
- B会收到2次相同的封包
- 当B给A送封包时,BridgeX和BridgeY都会过滤,因为它们认为A和B在同一侧,导致封包无法到达A
解决办法:spanning tree algorithm
spanning tree algorithm
该算法中的重要概念:
- root bridge: The bridge with the lowest value of bridge identifier(id最小的bridge,使用分散式的方法找到网络上id最小的bridge)
- path cost: For each port, the cost of transmitting a frame onto a LAN(从一个prot发送数据所花的成本,速度越慢,传输成本越高)
- root port: For each bridge, the port on the minimum cost path to the root bridge(对于每一个bridge,走哪个port通向root bridge的cost最小,这个port就是root port)
- root port cost(rpc): For each bridge, the cost of the path to the root bridge with minimum cost
- designated bridge: For each LAN, the bridge that provides the minimum cost path to the root bridge. The only bridge allowed to forward frames to and from the LAN(LAN本身没有处理封包的能力,它不知道经由哪条路线送封包到root bridge的cost最小,就要找到1个bridge完成这个任务,找到之后,所有的封包都要通过该bridge,因为cost最小,这个bridge就是designated bridge,cost相同的情况下,选id小的bridge)
- designaged port: The port of the designated bridge that attacheds the bridge to the LAN. All internet traffic to and from the LAN pass through the designated port.
spanning tree(分散式演算法)的步骤:
- 决定root bridge:bridge之间互相通信,比较bridge id的大小
- 决定其他bridge的root port
决定每一个LAN的designated port
- 如果1个bridge有两个cost相同的port接到1个LAN上,选择id小的那个
- 如果多个bridge都提供相同的rpc,选择bridge id小的那个
一旦通过spanning tree algorithm计算得到结果,所有的路线就都确定,每一个bridge仅有一个R port,每一个LAN仅有一个D port,比如下图:
port的状态机
每一个port只可能扮演一个角色:或者Root Port(R port)或者Designated Port(D port),没有扮演角色的port就会被block,成为block port,相当于断线,封包进来不再转送,也不再进行address learning
对上述状态转换的描述:
- 开始,所有的bridge都只知道自己的id,认为自己是最小的,都把自己认作root bridge,然后向其他bridge发送自己的信息
- 其他bridge收到,如果id比自己小,就被征服,帮助扩散这个小id的bridge的信息,如果比自己大,就反扑回去
- 所有port在bridge开机前都是block状态,开机后都是D port状态,然后在上述交流过程中,可能变为R port或者重新回到block状态
- 再经过15s后没变成可forward的port就彻底稳定,完成spanning tree的构建
Bridge Protocol Data Unit(BPDU)
Bridge交换的封包有两种类型:
- network configration BPDU
topology change BPDU
计算一个bridge的rpc是将其他bridge发来的封包带的rpc加上它自己发出方向的port的transmitting cost
spanning tree的特点
- spanning tree中,每一个bridge到root bridge的rpc最小(每一个bridge都有一个R port)
- spanning tree中,每一个LAN通过代理bridge到root bridge的rpc最小(每一个LAN都有一个D port)
- 不是图学中的minimum cost spanning tree(也不知道图中的这个是个啥。。。)
- BLAN中的的spanning tree是可以人工计算的
spanning tree的维护
- root会启动configuration BPDU的传送
- root会周期性的发送configuration BPDU,送往相连的所有LAN
- configuration会沿着spanning tree传送下去
- 如果有bridge或link断掉,就可能会启用其他的线路以修复spanning tree(正常的block port会收到configuration BPDU,断掉后,block port会timeout,然后尝试成为相连LAN的代理,进入竞争阶段),然后向root发送TCN(topology change notification)封包,这种封包为保证可靠性,通过TCP协议
- root收到后,通知其他bridge重新做address learning
- 如果是LAN坏掉,可能会导致整个网络被切分。被切的那个会形成一个新的root bridge,进而形成一个新的网络(这样部分网段被隔离,很浪费,所以要连成环状,增加网络可靠性)