Windows XP 网桥的运作原理-The Cable Guy
Network Bridge(网桥)是Windows XP的一个新增特性,其使用第2层和第3层桥接,将多个局域网(LAN)网段组合形成单个网段。 一个局域网网段是相同数据链路层链路上的网络节点的集合。例如,连接到相同以太网集线器的所有计算机就构成了一个局域网网段。 一个网段是共享相同网络层地址的网络节点的集合。例如,一个TCP/IP网段就是一个子网。 相同TCP/IP子网上的所有节点共享相同的IP网络标识符。第2层桥接
Network Bridge中的第2层桥接即执行IEEE 802.1D透明桥接,后者已在网桥和第2层交换机中使用了多年。
学习过程
Network Bridge将物理网桥的网络适配器置于混合模式,并检查每个传入帧的目标媒体访问控制(MAC)地址。如果该MAC地址分配给了网桥计算机,那么将把其作为目标帧进行处理。 如果该MAC地址没有分配给网桥计算机,Network Bridge将记录该帧的源地址,接收该帧的端口,并创建或刷新一个第2层网桥表中的一个条目。 端口是标识网络适配器及其对应的局域网网段的一个数字。第2层网桥表中的每个条目分别由一个MAC地址、与接收来自该MAC地址的帧的局域网网段相对应的端口号以及一个超时值组成。第2层网桥表中的条目在被删除之前会保留5分钟。
由于第2层网桥表建立在传入帧的MAC源地址基础上,因此决不会包含广播或多播MAC地址条目。
筛选、选择性转发和扩散
当接收到不是针对该网桥的有效帧时,网桥计算机将在第2层网桥表中查找目标MAC地址,并采取如下操作之一:
• 如果找到目标地址,并且其位于接收该帧的相同端口上,该帧将自动被丢弃。 这个操作称为过滤。网桥计算机会阻止段内的帧被转发到其所建立的局域网网段之外。
• 如果找到目标地址,并且其位于不同于接收该帧的端口上,该帧将通过对应于目标局域网网段的端口被转发出去。这个操作称为选择性转发。透明的网桥会智能地转发具有已知目标MAC地址的段内帧。透明网桥的过滤和选择性转发操作在大型网络中用于对网络流量进行分段。
• 如果没有找到目标地址,该帧将通过除接收其的端口之外的其他所有端口转发出去。这个操作称为扩散(flooding)。为保持局域网网段连接的透明性,网桥计算机会盲目地转发具有未知目标MAC地址的帧。 所有广播和多播MAC流量都会被扩散,因为第2层网桥表中从来没有任何广播或多播条目。
扩散、循环和生成树算法
透明网桥的扩散操作虽然对于保持连接局域网网段的透明性很有用,但是每当循环连接各个已在所有端口上启用了转发功能的网桥时,这种操作就引起转发具有未知目标地址的帧的风暴。 观察这种行为的最简单的途径就是在一个简单循环配置中发送一个MAC级广播帧,如下图所示。 例如:
1.
节点 A 发送一个广播帧,同时由网桥1和网桥2进行接收。
2.
网桥1将该广播帧扩散到网段2,从而创建该广播帧的第一个拷贝(拷贝1)。
3.
网桥2将该广播帧扩散到网段2,从而创建该广播帧的第二个拷贝(拷贝2)。
4.
网桥2接收拷贝1,并将其扩散到网段1。
5.
网桥1接收拷贝2,并将其扩散到网段1。
6.
网桥1接收拷贝1,并将其扩散到网段2。
7.
网桥2接收拷贝2,并将其扩散到网段2。
8.
从第4步开始重复此过程。
这个例子的结果是,一个广播帧变成了两个广播帧,这两个广播帧无休止地在两个局域网网段间以网桥所能处理的速度进行转发。这种情况称为以太网崩溃(Ethernet meltdown)。
为防止这类情况以及其他问题,IEEE 802.1D规范包括了生成树算法(Spanning Tree Algorithm,STA),这是一种确保转发循环永远不会发生的机制。 STA使用网桥协议数据单元(Bridge Protocol Data Units,BPDU),自动配置网桥上处于转发或阻塞状态的独立端口。BPDU是网桥发送到一个已保存的多播MAC地址(对于以太网,这个地址是01-80-C2-00-00-00)的消息,所有透明网桥都会侦听该地址。在阻塞状态下,端口不会获悉或转发已接收到的帧。STA的最终结果是一个无循环的桥接环境,不管局域网网段拓扑结构是否改变,这个环境总是一直存在。
第3层桥接
如果网络适配器不支持混合模式,则会使用第3层桥接。 第3层桥接不需要任何特殊的网络适配器功能。第3层桥接仅适用于TCP/IP流量。 对于广播或多播流量,Network Bridge接收到的数据包将通过除接收该数据包的端口之外的其它所有端口传输出去。
对于单播流量,第3层桥接建立在地址解析协议(Address Resolution Protocol,ARP)的基础上。 TCP/IP节点使用ARP解析对应于出站(outbound)IP数据包的下一跳地址(即下一个希望到达的地址)的MAC地址。 如果该出站IP数据包的目的地在本地子网上,下一跳地址就是目标地址,ARP将用于解析目标节点的MAC地址。 如果该出站IP数据包的目的地不在本地子网上,下一跳地址就是默认网关地址,ARP将用于解析默认网关的MAC地址(假设在典型的主机配置环境下)。
网桥充当ARP代理,代表另一个网段上的节点应答来自某个局域网网段上的节点的ARP请求,并在不同的局域网网段间传输单播数据包。下图显示了一个示范网络配置。 Network Bridge(节点B)连接网段1和网段2,并具有单个IP地址(IP_B)。 当节点A向节点C发送一个IP数据包时,将首先发送一个ARP请求,其中包含节点A的MAC地址(MAC_A)、节点A的IP地址(IP_A)以及节点C的IP地址(IP_C)。 节点B接收该广播ARP请求,并检查自己的第3层转发表。
第3层转发表由Network Bridge维护,其包含具有如下信息的条目: 节点IP地址、节点MAC地址和端口(该节点所在的网络适配器)。 当接收到一个ARP请求时,将在第3层转发表中创建一个针对该请求的发送方条目。 那些条目将在每次使用时得到刷新。未使用的条目将在5分钟后过期。在这个示例中,Network Bridge创建或者刷新第3层转发表中的以下条目: IP_A、MAC_A、Port 1。
如果在第3层转发表中找到了该ARP请求的目标IP地址的一个条目,Network Bridge将使用一个ARP应答响应该ARP请求,应答内容中包含它自己接收该请求的端口的MAC地址。 如果在第3层转发表中找到了该ARP请求的目标IP地址的一个条目,并且在相同的端口上,那么发送节点和目标节点就在相同的局域网网段上,因而该ARP请求将被忽略。
在这个例子中,Network Bridge使用以下信息向节点A单播一个ARP应答: 节点B在端口1上的地址(MAC_B_1)、节点C的IP地址(IP_C)、节点A的MAC地址,以及节点A的IP地址(IP_A)。 当节点A向节点C的IP地址发送数据包时,这些数据包将发送到节点B在端口1上的MAC地址(MAC_B_1)。
如果某个已接收到的单播IP包的目标IP地址被分配给了Network Bridge,该地址将传递到IP和更高的层以进行处理。 如果某个已接收到的单播IP包的目标IP地址没有分配给Network Bridge,它必须确定下面哪种情况是正确的:
1.
目标是本地子网的另一个局域网段上的一个节点。
2.
目标是另一个子网上的一个节点,并且该数据包正在被转发给Network Bridge,因为Network Bridge是一个IP路由器。
3.
目标是另一个子网上的一个节点,并且该数据包正在被转发给本地子网的另一个局域网网段上的一个路由器。
Network Bridge使用以下算法来确定这其中哪种情况是正确的:
• 在第3层转发表中查找目标地址。
• 如果找到一个条目,则将数据包转发到该目标地址(针对上述第一种情况)。
• 如果没有找到一个条目,则使用IP路由表来确定该目标地址的下一跳地址。
• 如果确定了下一跳地址,则在第3层转发表中查找该下一跳地址。
• 如果找到下一跳地址的一个条目,则将数据包转发到对应于该下一跳地址的节点(针对上述第三种情况)。
• 如果没有找到下一跳地址的一个条目,则将包转发给IP和更高的层进行处理(针对上述第二种情况)。
• 如果未能确定下一跳地址,则将数据包转发给IP和更高的层进行处理(针对上述第二种情况)。
在这个例子中,节点B接收到由节点A转发到目标IP地址(IP_C)的数据包。 由于第3层转发表包含节点C的一个条目(即条目IP_C, MAC_C, Port 2),因而Network Bridge把该数据包从MAC地址:MAC_B_2(对应于Network Bridge上的端口2)转发到MAC地址:MAC_C。
如果Network Bridge接收到一个ARP请求,却没有在第3层转发表中找到目标IP地址,Network Bridge将在一个ARP Pending(ARP未决)表中存储该ARP请求的内容。然后,Network Bridge把自己的ARP请求消息发送给除接收最初的ARP请求的端口之外的其它所有端口。 当Network Bridge接收到针对自己的请求的一个单播应答时,将把应答内容与ARP Pending表中的条目进行匹配。然后,Network Bridge向最初的请求者发回一个单播应答。ARP Pending表中的条目最终将发生超时。
DHCP数据包的处理
当一个动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)客户端在网络上启动时,其将发出广播DHCPDiscover或DHCPRequest消息。 这些消息将作为MAC级广播发送到特别的广播IP地址(255.255.255.255)。 DHCP客户端的子网上的一个DHCP服务器或中继代理将把这些消息的响应发送到该DHCP客户端的单播MAC地址(假设DHCPDiscover或DHCPRequest消息中的Broadcast标记被设置为0)。
客户端发送的DHCP消息包括以下字段:
• Chaddr
Chaddr(client hardware address,客户端硬件地址)字段存储该DHCP客户端的MAC地址。
• XID
XID(transaction ID,事务ID)由DHCP客户端选择,并包括在某次特定交换中的所有DHCP消息中。 DHCP客户端和服务器都使用XID来识别某次DHCP交换的DHCP消息集。
注意:在包含广播DHCP消息的DHCP交换中,未使用ARP解析MAC地址,因为在该DHCP配置过程完成之前,正在分配的IP地址未被看作是有效的。
由于DHCP客户端的MAC地址嵌入在DHCP消息中(Chaddr字段),Network Bridge对广播DHCP消息进行了特殊处理,以便第3层桥接的局域网段上的客户端能够接收这些消息,从而实现自动的TCP/IP配置。当Network Bridge计算机在一个提供第3层桥接的端口上接收到一条广播DHCPDiscover或DHCPRequest消息时,将执行以下步骤:
1.
如果未存在一个相应的条目,则向DHCP Pending表添加一个,其中包括该DHCP消息的XID、Chaddr的初值以及接收该广播消息的端口。
2.
对除接收该消息的端口之外的其它所有端口广播该DHCP消息,同时将Chaddr字段改为发送端口的MAC地址。
当DHCP服务器或中继代理发出响应时,该响应将单播到Network Bridge计算机。 当Network Bridge接收到DHCP响应时,将执行以下步骤:
1.
在DHCP Pending表中查找该DHCP响应的XID。 如果找到一个匹配条目,该条目将用于确定DHCP客户端的MAC地址以及转发该DHCP响应的端口。 如果没有找到匹配条目,同时Network Bridge未执行自己的DHCP配置,将自动丢弃该DHCP消息。
2.
将Chaddr字段改为在DHCP Pending表中找到的值(DHCP客户端的MAC地址)。
3.
使用适当的端口将该DHCP消息单播到客户端。
页:
[1]