这一篇主要涉及以下4个方面:

  1. 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
  2. Bridge的基本功能()
    • 封包转送和过滤
    • address learning
    • 解决拓扑结构中的环状结构问题
  3. spanning tree algotithm,涉及到root、root port、designated port、RPC
  4. spanning tree的维护

Bridge

bridge是MAC层的设备,用于在物理分隔的LAN之间转播封包。对于LAN上相连的stations,bridge的存在让相连的LAN表现的好像一个逻辑LAN(one logical LAN).

bridge

one logical LAN:station 4和station 5本来位于不同的LAN上,但通过bridge相连后,在逻辑上可以看成在同一个LAN上(one logical LAN)

bridge的重要功能:

  1. 封包的转送和过滤
  2. address learning:知晓网络上的每一个station在什么地方
  3. 解决拓扑结构中可能出现的回路问题,使用spanning tree algorithm

bridge的其他功能:

  1. congestion control(拥塞控制):比如由于连接的双方网络网速不同,导致封包拥塞,使用buffer来解决
  2. static filter:从安全角度出发,提前设定好参数,不允许某个station给某个station送封包
  3. 封包转送:比如将1个Ethernet封包转送到wireless上(两类封包格式不同)
  4. 路由
  5. segmentation:将大封包切割用于传送

bridge的参数

  1. id:由8bytes构成
    • priority part(2 parts): programmable
    • address part(6 parts)
  2. bridge之间要相互交流,如果一个封包带有特定形式的MAC address就是广播形式的封包,所有的bridge都要收起来处理
  3. bridge上的每一个端口都有一个唯一id,用于进行端口的识别

Bridge LAN(BLAN)

BLAN

BLAN的特点:

  1. 提高网络的可靠性
  2. 提高网络的传输性能,因为不同的LAN上可以有封包同时传送
  3. 提高网络的安全性
  4. 可以覆盖较大的地理区域

在BLAN中,每个bridge收到封包都有两个重要的任务:

  1. 转送和过滤(forwarding)

    每个bridge都维护一个entry:[address, port, time]结构的database,每一个封包进来,bridge都会用封包中的destination MAC address去database中寻找。首次或不知道的情况下会进行广播。

    使用的参数就是下图中的DA。

  2. address learning

    将封包中的source Mac address及相关参数存入database中。

    使用的参数是下图中的SA。

    ethernetFrameFormat

forwarding and address learning algorithm:

forwardingAndAddressLearningAlgorithm


有回路BLAN的问题和解决办法

回路是为了提高网络的可靠性,但同时会造成下面的问题:

  1. 封包会重复接收(frame duplication)
  2. 回路会造成错误的address learning(比如不清楚一个station到底来自哪个port)

    LoopBlanProblem

    当A向B发送数据时:

    1. LAN2是双向传输,t0时刻,BridgeX和BridgeY都会收到封包,BridgeX记录A的地址及进入端口是X1,BridgeY记录A的地址及进入端口Y1
    2. BridgeX继续将封包转输到LAN1上,t1时刻,封包被B收到,继续向前传输,从BridgeY的Y2端口进入,BridgeY修改A的地址及进入端口Y2
    3. BridgeY继续将封包转输到LAN1上,t2时刻,B再次收到相同封包,继续向前传输,从BridgeX的Y2端口进入,BridgeX修改A的地址及进入端口X2

    造成的结果:

    1. B会收到2次相同的封包
    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(分散式演算法)的步骤:

  1. 决定root bridge:bridge之间互相通信,比较bridge id的大小
  2. 决定其他bridge的root port
  3. 决定每一个LAN的designated port

    • 如果1个bridge有两个cost相同的port接到1个LAN上,选择id小的那个
    • 如果多个bridge都提供相同的rpc,选择bridge id小的那个

    一旦通过spanning tree algorithm计算得到结果,所有的路线就都确定,每一个bridge仅有一个R port,每一个LAN仅有一个D port,比如下图:

    spanningTree


port的状态机

每一个port只可能扮演一个角色:或者Root Port(R port)或者Designated Port(D port),没有扮演角色的port就会被block,成为block port,相当于断线,封包进来不再转送,也不再进行address learning

portStateMachine

对上述状态转换的描述:

  1. 开始,所有的bridge都只知道自己的id,认为自己是最小的,都把自己认作root bridge,然后向其他bridge发送自己的信息
  2. 其他bridge收到,如果id比自己小,就被征服,帮助扩散这个小id的bridge的信息,如果比自己大,就反扑回去
  3. 所有port在bridge开机前都是block状态,开机后都是D port状态,然后在上述交流过程中,可能变为R port或者重新回到block状态
  4. 再经过15s后没变成可forward的port就彻底稳定,完成spanning tree的构建

Bridge Protocol Data Unit(BPDU)

Bridge交换的封包有两种类型:

  • network configration BPDU
  • topology change BPDU

    BPDU

计算一个bridge的rpc是将其他bridge发来的封包带的rpc加上它自己发出方向的port的transmitting cost


spanning tree的特点

  1. spanning tree中,每一个bridge到root bridge的rpc最小(每一个bridge都有一个R port)
  2. spanning tree中,每一个LAN通过代理bridge到root bridge的rpc最小(每一个LAN都有一个D port)
  3. 不是图学中的minimum cost spanning tree(也不知道图中的这个是个啥。。。)
  4. BLAN中的的spanning tree是可以人工计算的

spanning tree的维护

  1. root会启动configuration BPDU的传送
  2. root会周期性的发送configuration BPDU,送往相连的所有LAN
  3. configuration会沿着spanning tree传送下去
  4. 如果有bridge或link断掉,就可能会启用其他的线路以修复spanning tree(正常的block port会收到configuration BPDU,断掉后,block port会timeout,然后尝试成为相连LAN的代理,进入竞争阶段),然后向root发送TCN(topology change notification)封包,这种封包为保证可靠性,通过TCP协议
  5. root收到后,通知其他bridge重新做address learning
  6. 如果是LAN坏掉,可能会导致整个网络被切分。被切的那个会形成一个新的root bridge,进而形成一个新的网络(这样部分网段被隔离,很浪费,所以要连成环状,增加网络可靠性)