JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:网络接口和网络虚拟化     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  网络栈概述

此 Oracle Solaris 发行版中的网络配置

Oracle Solaris 中的网络栈

网络设备和数据链路名称

其他链路类型的管理

第 1 部分网络自动配置

2.  NWAM 简介

3.  NWAM 配置和管理(概述)

4.  NWAM 配置文件配置(任务)

5.  NWAM 配置文件管理(任务)

6.  关于 NWAM 图形用户界面

第 2 部分数据链路和接口配置

7.  使用配置文件上的数据链路和接口配置命令

8.  数据链路配置和管理

9.  配置 IP 接口

10.  在 Oracle Solaris 上配置无线接口通信

11.  管理网桥

桥接概述

链路属性

STP 守护进程

TRILL 守护进程

调试网桥

网桥的其他行为

DLPI 行为

VLAN 管理

VLAN 行为

网桥配置示例

管理网桥(任务列表)

如何查看配置的网桥的信息

如何查看关于网桥链路的配置信息

如何创建网桥

如何修改网桥的保护类型

如何向现有网桥中添加一个或多个链路

如何从网桥删除链路

如何从系统中删除网桥

12.  管理链路聚合

13.  管理 VLAN

14.  IPMP 简介

15.  管理 IPMP

16.  使用 LLDP 交换网络连接信息

第 3 部分网络虚拟化和资源管理

17.  网络虚拟化和资源控制简介(概述)

18.  规划网络虚拟化和资源控制

19.  配置虚拟网络(任务)

20.  在虚拟化环境中使用链路保护

21.  管理网络资源

22.  监视网络通信流量和资源使用情况

词汇表

索引

桥接概述

网桥用于连接不同的网段。不同网段通过网桥连接后,连接的网段进行通信时,就如同是一个网段一样。桥接是在网络栈的数据链路层 (L2) 中实现的。网桥使用数据包转发机制将子网连接在一起。

桥接和路由都可用于分发关于网络中资源的位置的信息,而它们有几方面的区别。路由在 IP 层 (L3) 实现并使用路由协议。数据链路层不使用路由协议,而通过检查连接到网桥的链路中接收的网络通信流量确定转发数据包的目的地。

收到数据包后,将检查其源地址。数据包从某个节点被发送到接收该数据包的链路,数据包的源地址与该节点相关联。此后,当接收的数据包使用同一地址作为目标地址时,网桥将数据包通过链路转发到该地址。

与源地址关联的链路可能是一个中间链路,连接到桥接的子网中的另一个网桥。随着时间的推移,桥接的子网中的所有的网桥都将“学会”通过哪个链路向给定的节点发送数据包。因此,数据包的目标地址用于通过逐跳桥接的方式将数据包导向其最终目的。

本地“链路断开”通知指示给定的链路上的所有节点都不再可访问。在此情况下,到该链路的数据包转发将停止,而通过该链路的所有转发条目将被清除。转发条目还将随时间的推移老化。当恢复一个链路时,此链路上接收的数据包被视为新数据包。基于数据包源地址的“学习”过程再次开始。通过此过程,当该地址用作目标地址时,网桥能够通过该链路正确转发数据包。

要将数据包转发到目的地,网桥必须侦听每个连接到该网桥的链路上的混杂模式。侦听混杂模式导致网桥容易发生转发循环,发生转发循环时,数据包不停地以全线速循环。因此,桥接使用跨树协议 (Spanning Tree Protocol, STP) 机制防止网络循环使子网不可用。

桥除了使用 STP 和快速跨树协议(RSTP)之外,Oracle Solaris 支持 TRILL 保护加强。缺省情况下使用 STP,但您可以通过为桥接命令指定 -P trill 选项来使用 TRILL。

通过将网络中的各个节点连接到一个单独的网络,使用网桥配置简化了对这些节点的管理。采用通过网桥连接这些区段的方式,所有节点都可共享单个广播网络。因此,通过使用网络协议(如 IP)而不是通过使用路由器跨网段转发通信,每个节点都可以访问其他节点。如果不使用网桥,就必须配置 IP 路由以允许节点之间的 IP 通信转发。

下图显示了一个简单的桥接网络配置。网桥 goldengate 是一个已进行桥接配置的 Oracle Solaris 系统。sanfranciscosausalito 是物理连接到该网桥的系统。网络 A 使用一个集线器,该集线器一侧物理连接到网桥,另一侧连接到计算机系统。网桥端口是链路,例如 bge0bge1bge2

图 11-1 简单的桥接网络

image:图中显示了三个网段如何通过一个网桥连接起来而形成一个网络。

桥接网络可以形成环,将多个网桥物理连接在一起。这种配置在网络中很常见。这种类型的配置可能导致因旧数据包无休止地在环中循环而使网络链路饱和的问题。为了防止出现这种循环情况,Oracle Solaris 网桥实现 STP 和 TRILL 协议。请注意,大多数硬件网桥还实现 STP 循环保护。

下图显示配置成一个环的桥接网络。此配置显示三个网桥。两个系统物理连接到 westminster。一个系统物理连接到 waterloo。一个系统物理连接到 tower。每个网桥通过网桥端口物理连接到其他各网桥。

当 STP 或 RSTP 用于循环保护时,通过防止循环中的一个连接转发数据包,降低了出现物理循环的风险。上图显示 westminstertower 网桥之间的物理链路不用于转发数据包。

请注意,因为采用关闭可用物理链路来执行循环保护的方式,STP 和 RSTP 会消耗您的带宽。

与 STP 和 RSTP 不同,TRILL 不通过关闭物理链路来防止出现循环。相反,TRILL 计算网络中的每个 TRILL 节点的最短路径信息,并使用该信息将数据包转发到各个目的地。

因此,TRILL 使系统的所有链路始终处于使用状态。循环不是问题,因为采用了 IP 处理循环的方式来处理循环,即 TRILL 根据需要创建路由并使用转发跳数限制来避免出现导致瞬时循环状态的问题。

图 11-2 桥接的网络环

image:图中显示 STP 或TRILL 协议如何通过排除网桥环中的一个连接来防止循环。

注意

注意 - 不要在 SPARC 平台上设置 local-mac-address?=false,否则,系统会错误地对同一个网络中的多个端口使用同一 MAC 地址。



注 - 如果要求最高级别的性能,请不要将链路配置到网桥中。桥接要求底层接口处于混杂模式下,而该模式会禁用对硬件、驱动程序和系统其他层的多种重要优化。禁用这些性能增强功能是桥接机制不可避免的结果。

如果系统中的某些链路不是桥接的,因而不会受到这些限制,您就可以在该系统中使用网桥。这些性能问题只影响那些被配置为网桥的一部分的链路。


有关 STP 的信息,请参见 IEEE 802.1 D-1998。有关 RSTP 的信息,请参见 IEEE 820.1Q-2004。有关 TRILL 的信息,请参见 Internet 工程任务组 (Engineering Task Force, IETF) TRILL 草稿

链路属性

这些链路属性可以通过 dladm show-linkpropdladm set-linkpropreset-linkprop 命令显示和修改:

default_tag

为以该链路为发送目的地或源的不带标记的数据包定义缺省虚拟局域网 (virtual local area network, VLAN) ID。有效值从 04094。缺省值为 1。只有非 VLAN 和非虚拟网络接口卡 (network interface card, VNIC) 类型的链路具有此属性。将此值设置为 0 将禁用以该端口为转发目的地或源的不带标记的数据包的转发。(这是一个 MAC 属性。)


注 - 此属性还在桥接范围之外使用,用于指定链路的 IEEE 端口 VLAN 标识符 (Port VLAN Identifie, PVID)。当 default_tag 非零时,不能在链路上创建具有相同 ID 的 VLAN,因为基本链路本身自动表示 PVID。

例如,如果 PVID 在 net0 上设置为 5,则无法在 net0 上创建 ID 为 5 的 VLAN。在这种情况下,要指定 VLAN 5,请使用 net0

不能将 default_tag 设置为与该链路上创建的任何现有 VLAN 的 ID 相同。例如,以下命令在 net0 上创建 VLAN 22:

# dladm create-vlan -l net0 -v 22 myvlan0

在此情况下,不能将 default_tag 设置为 22,因为这将使 net0myvlan0 表示同一个 VLAN。

通过将 default_tag 设置为 0,您可以使 net0 上不带标记的数据包与任何 VLAN 都不关联。这样可以防止此类数据包被已配置的网桥转发。


forward

启用和禁用通过网桥的通信流量转发。除了 VNIC 链路外的所有链路都具有此属性。有效值是 1 (true) 和 0 (false)。缺省值为 1。禁用时,与链路实例关联的 VLAN 不会通过网桥转发通信流量。禁用转发相当于传统网桥中的从“允许的组”删除 VLAN。这意味着从本地客户端到底层链路的基于 VLAN 的 I/O 将继续,但不执行基于网桥的转发。

stp

启用和禁用 STP 和 RSTP。有效值是 1 (true) 和 0 (false)。缺省值是 1,这将启用 STP 和 RSTP。当设置为 0 时,链路不使用任何类型的跨树协议,并始终置于转发模式下。转发模式使用网桥协议数据单元(Bridge Protocol Data Unit, BPDU)保护。当您要配置连接到结束节点的点对点链路时,请禁用 STP 和 RSTP。只有非 VLAN 和非 VNIC 类型的链路才具有此属性。

stp_cost

表示与使用此链路对应的 STP 和 RSTP 成本值。有效值介于 165535 之间。缺省值为 0,用于指示成本由链路类型自动计算。以下值分别表示几种链路类型的成本:100 对应 10 Mbps、19 对应 100 Mbps、4 对应 1 Gbps和 2 对应 10 Gbps。

stp_edge

指定该端口是否连接到其他网桥。有效值是 1 (true) 和 0 (false)。缺省值为 1。如果设置为 0,守护进程就会假定即使看不到任何类型的 BPDU,端口也是连接到其他网桥的。

stp_p2p

指定连接模式类型。有效值为 truefalseauto。缺省值是 auto,它会自动发现点对点连接。指定 true 将强制采用点对点模式,指定 false 将强制采用正常多点模式。

stp_priority

设置 STP 和 RSTP 端口优先级值。有效值介于 0255 之间。缺省值为 128。STP 和 RSTP 端口优先级值用于通过将该值加到端口标识符之前来确定网桥的首选根端口。该数值越低,优先级越高。

STP 守护进程

使用 dladm create-bridge 命令创建的各网桥被表示为 svc:/network/bridge 的同名 SMF 实例。每个实例运行实现 STP 的 /usr/lib/bridged 守护进程的一个副本。

以下命令示例创建名为 pontevecchio 的网桥:

# dladm create-bridge pontevecchio

系统将创建名为 svc:/network/bridge:pontevecchio 的 SMF 服务和名为 /dev/net/pontevecchio0 的可观测节点。

出于安全目的,缺省情况下所有端口都运行标准 STP。不运行某种形式的桥接协议(如 STP)的网桥,可能会在网络中形成不终结的转发循环。因为以太网数据包上没有跃点计数或 TTL,所以这样的任何循环对网络都是致命的。

当您知道特定端口没有连接到另一座网桥(例如,到主机系统的直接点对点连接),您可以管理性禁用该端口的 STP。即使网桥上的所有端口都禁用了 STP,STP 守护进程也仍然运行。守护进程继续运行的原因如下:

当端口已禁用 STP 时,bridged 守护进程会继续侦听 BPDU(BPDU 保护)。此守护进程使用 syslog 标记所有错误并在端口上禁用转发来指示严重错误的网络配置。当链路的状态从不可用重新变为可用,或者将链路手动删除再重新添加时,链路将重新启用。

如果禁用网桥的 SMF 服务实例,随着 STP 守护进程的停止,这些端口上的网桥转发也将停止。如果重新启动该实例,STP 将从初始状态启动。

TRILL 守护进程

使用 dladm create-bridge 命令创建的各网桥表示为 svc:/network/bridgesvc:/network/routing/trill 的同名 SMF 实例。svc:/network/routing/trill 的每个实例运行实现 TRILL 协议的 /usr/lib/trilld 守护进程的一个副本。

以下命令示例创建名为 bridgeofsighs 的网桥:

# dladm create-bridge -P trill bridgeofsighs

系统将创建两个分别名为 svc:/network/bridge:bridgeofsighssvc:/network/routing/trill:bridgeofsighs 的 SMF 服务。另外,系统将创建名为 /dev/net/bridgeofsighs0 的可观测节点。

调试网桥

为网桥的每个实例指定一个“可观测节点”,此节点显示在 /dev/net/ 目录下,用网桥名称加后缀 0 的形式命名。

可观测节点用于与 snoopwireshark 实用程序配合使用。此节点行为类似标准的以太网接口,不同的是,此节点传递数据包时会无提示丢弃。不能在可观测节点的顶部激活 IP,也不能执行绑定请求 (DL_BIND_REQ),除非您使用被动选项。

使用该选项时,可观测节点会为每个由用户可用的网桥处理的数据包制作一个未经修改的副本。此行为类似于传统网桥上的“监视”端口,并遵循普通的 DLPI“混杂模式”规则。您可以使用 pfmod 或者 snoopwireshark 实用程序中的功能基于 VLAN ID 进行过滤。

传送的数据包表示网桥接收的数据。


注意

注意 - 如果是在桥接过程中添加、删除或修改了 VLAN 标记的情况,显示的数据描述此过程发生之前的状态。如果不同的链路中使用不同的 default_tag 值(这种情况极为少见),可能会造成混乱。


要查看特定链路(桥接过程完成后)传送和接收的数据包,请在单个链路上(而不是在网桥的可观测节点上)运行 snoop

有关可观测节点的信息,请参见网络虚拟化和资源控制的观察功能

网桥的其他行为

以下各节描述当网桥用在配置中时,链路的行为是如何更改的。

有关标准链路行为的信息,请参见管理虚拟局域网

DLPI 行为

下面介绍启用网桥时链路行为的差异:

VLAN 管理

缺省情况下,系统中配置的 VLAN 是在网桥实例上的所有端口之间转发的。当您调用 dladm create-vlan dladm create-vnic -v 命令,并且底层链路是网桥的一部分时,该命令还将启用此网桥链路上指定 VLAN 的转发。

要在一个链路上配置 VLAN 并禁用以网桥上其他链路为目的地或源的转发,就必须使用 dladm set-linkprop 命令设置 forward 属性禁用转发。

当底层链路配置为网桥的一部分时,使用 dladm create-vlan 命令会自动启用桥接的 VLAN。

在符合标准的 STP 中,VLAN 将被忽略。桥接协议通过使用无标记 BPDU 消息只计算一个无环拓扑,并使用此树启用和禁用链路。必须配置网络中预分配的所有重复链路,以使配置的 VLAN 在 STP 自动禁用这些重复链路时不会断开连接。这意味着您应在您桥接的主干的任何位置运行所有 VLAN 或仔细检查所有冗余链路。

TRILL 不需要遵循复杂的 STP 规则。相反,TRILL 自动封装有完整 VLAN 标记的数据包并通过网络传递它们。这意味着如果在一个桥接网络内重用了相同的 VLAN ID,TRILL 会将对应的单个不同 VLAN 捆绑在一起。

这是与 STP 的一个重要的区别,在 STP 中,您可以在网络的各不同部分重用 VLAN 标记来管理大于 4094 限制的 VLAN 组。虽然不能使用 TRILL 以这种方式管理网络,但您可能能够实现其他解决方案,例如基于提供商的 VLAN。

在具有 VLAN 的 STP 网络中,当 STP 禁用了“错误的”链路时,可能很难配置故障转移特征来防止 VLAN 分隔开。分离的 VLAN 的功能损失相对较小,这足以弥补其不如 TRILL 模型稳健的缺点。

VLAN 行为

网桥通过检查允许的 VLAN 集和每个链路的 default_tag 属性执行转发。一般过程如下所示:


注 - 在转发发送到多个接口(用于广播、多播和未知目的地)的情况下,必须为每个输出链路独立完成输出链路检查和标记更新。某些传送可能已加标记,而有些则未标记。


网桥配置示例

以下示例显示如何查看有关网桥配置和桥接服务的信息。