Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17893222
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 系统运维

2008-05-20 10:41:24

网桥和交换机对帧的转发送采用的机制基本是一样的.网桥单独的根据目标MAC地址来转发帧.所有节点的MAC地址将被学习到,并以表的形式保存在RAM或cache memory中.在以太网环境中,转发帧的决定的过程叫透明桥接(transparent bridging),而在令牌环网络中该过程叫源路由桥接(source route bridging)

the Three Functions of a Transparent Bridge

透明网桥,如同它的名字,意思是它在以太网环境中对于端用户(end user)来说是透明的.它的3个作用:   
1.学习
2.转发和过滤
3.避免环路(loop)

Learning

网桥要基于目标MAC地址来做转发决定,所以它要能学习到目标节点的MAC地址.当网桥连接到一个物理网段上去,它读取经过它的帧的源MAC地址,并做出推断,如果帧从来自某个它的特定的端口(port),它就认为工作站的位置是和那个端口相连.然后把这些信息放进自己的bridging table中,在放进去之前先计算FCS计算,这样能消除错误的判断.在Cisco Catalyst上,bridging table也叫做CAM(content address memory)

如下图:   

A发送数据给B,B和网桥都接收到帧.当网桥接收到帧以后,学习到工作站A和port 1相连(因为是这个端口接收到A发来的帧的),于是它把工作站A的MAC地址和端口放进bridging table中
反过来,B对A做出应答的时候,如下图:

原理和刚才一样,B的MAC地址和端口信息被放进bridging table中去

Forwarding and Switching

网桥通过之前学习到的bridging table来做转发决定.这个决定是基于帧的目标MAC地址的.转发的过程如下图:   


当A传输数据到C的时候,C的条目之前已经被学习到了,网桥就把帧转发到C所在的物理网段2 过滤的流程图如下:
 
当A发数据给B的时候,网桥根据bridging table判断出B和A在同一个物理网段,网桥就不会把帧发到物理网段2上去   

Avoiding Loops

透明网桥的还有1个功能就是环路的避免.先来看看1个环路的产生,如下图:
 

A发送一个广播帧给Y和X,Y又发给Z,X也发给Z;Z又把从Y接收到的发给X,又把从X接收到的发给Y.这样就产生了一个bridge loop.阻止环路的产生的办法就是破坏掉冗余的链路,这就要考生成树协议(Spanning Tree Protocol,STP)完成

STP有几种版本,而且它们之间互不兼容.在交换机和网桥上实现STP之前要先验证下STP的版本,不同版本的STP是不会协同工作的.2种最常使用的STP版本是DEC版本的和IEEE版本的.Cisco的Catalyst在以太网上使用的是IEEE版本的STP,在Token Ring上使用的是IBM版本的STP

Spanning Tree Protocol

网桥会向其他那些有可能引起环路的交换机发送一种叫做BPDU(bridge protocol data unit)的包.Cisco的Catalyst每10秒从它所有的活跃端口向外发送BPDU,收到BPDU的交换机通过生成树算法(Spanning Tree Algorithm,STA)进行运算来决定需要关闭哪些冗余链路和端口,这一关闭的过程叫blocking.处于blocking状态的端口仍然是活跃的,它仍然能够接收和读取到BPDU,它会等到环路消除以后,才能转发帧.BPDU和STA的目的就是造就一个无环路的交换环境    

The Root Bridge

所有的生成树(tree)都必须要有个根(root),作为根的那个网桥就叫根桥(root bridge),所有的网桥都分配了1个叫做网桥优先级(bridge priority)的数值.默认Catalyst的优先级都为32768.术语bridge ID是由MAC地址决定的,MAC地址最小的网桥就被选举为根桥

Which Ports Should Be Blocked?

当决定关闭一些产生环路的端口的时候,假如卷入的端口有2个甚至更多,那到底把哪些端口更改为blocking状态呢?这就要根据端口耗费(port cost)来决定.端口耗费一般是基于传输介质的速率来分配的,一般这个耗费的值是用1000除以传输介质的速率得到的,比如100Mbps的快速以太网的端口耗费就是10,以太网的是100
与根桥直接相的端口,或到达根桥距离最短的端口,就叫根端口(root port);假如有多条到达根桥的最短的链路,就比较port cost,耗费低的作为根端口;假如耗费一样,就比较bridge ID,ID小的作为根端口
还有个术语叫指定端口(designated port),它是在物理网段上,离根端口最近的那个端口

STP工作的一些步骤如下:
1.决定根桥:在优先级相同的情况下,比较bridge ID,ID小的作为根桥
2.决定指定端口:到达根桥的最短的链路的端口port cost低的作为指定端口;假如耗费一样,就比较bridge ID,ID小的作为指定端口.指定端口处于转发(forwarding)状态
3.决定根端口:与根桥直接相的端口,或到达根桥距离最短的端口,就叫根端口(root port);假如有多条到达根桥的最短的链路,就比较port cost,耗费低的作为根端口;假如耗费一样,就比较bridge ID,ID小的作为根端口
4.决定哪些端口应该被堵塞为blocking状态:只要是非根端口和指定端口的,都进入blocking状态
5.决定哪些端口处于转发状态:根端口和指定端口   

例子如下图,拓扑图给出了已知的MAC地址,并且所有优先级均为32768:
 

注意A的MAC地址最小,优先级均为32768,所以A作为根桥,并且要注意的是根桥的所有端口均作为转发模式(指定端口).接下来决定根端口,直接与根桥相连的作为根端口,而且作为转发模式,所以可以判定出根端口个指定端口,bridge ID决定指定和非指定端口.但是注意D和E之间,由于D的bridge ID小,所以D的为指定端口,E的作为非指定端口,如下图:   

Spanning Tree Port States

STP端口的几种状态如下图:

阅读(1083) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~