bridge

bridge是一种用来连接两个ethernet, 数据帧是基于MAC address 转发,而不是基于IP address, 转发是基于Layer 2, 所以数据包都可以通过bridge.

bridge and Firewalling

Linux bridge 比纯硬件的bridge更加强大,因为它可以过滤filter和修改数据帧, bridgeing和firewalling 是基于ebtales实现。

bridge的功能现在在kernel 2.4以上的都支持,用户层可以通过bridge-utils 是控制。

用户手册

网络接口

在开始配置之前,需要保证网络接口正常,不需要设置IP地址,也不需要运行dhcp脚本。IP地址需要在bridge配置之后才能设置。

ifconfig命令可以查看接口的状态,他们需要处于down状态。

模块加载

通常bridge code模块是被编译进内核系统的,在系统开机的时候会自动加载该模块。

#brctl
#commands:
    addbr  addbridge
    delbr  deletebridge
    addif  addinterfacetobridge
    delif  deleteinterfacefrombridge
    setageing 

Creating a bridge device

brctl addbr br-lan

br-lan: 是bridge的名字。

delete bridge

brctl delbr br-lan

Adding devices to a bridge

brctl addif br-lan eth0

br-lan: 是bridge名称。

eth0: 是需要添加到bridge上的设备名。

添加到bridge种的设备都可以认为是一个大的网络,一个设备不能同时添加到多个bridge种。

从bridge种删除设备

brctl delif br-lan eth0

查看bridge中的设备:

brctl show
portno mac_address is local? aging time

aging time: 表示 mac地址在 mac转发表中老化的时间。一般是自动维护的。

也可以通过如下命令修改:

brctl setageing br-lan time

time设置为0, 则永远都不会老化。

Spanning Tree Protocol 生成树协议

如果运行多个bridge,则需要是能生成树协议防止环路。

brctl show stp br-lan

生成树协议参数配置

STP tuning

bridge priority 优先级

每一个bridge 都有一个关联的优先级priority 和cost. 每一个接口都分配一个port number 在STP code中。用于决定最短路径转发,通常最短路径都被使用除非其他路径都down. 如果有多个bridge和interface就需要调整优先级实现最佳性能。

brctl setbridgeprio bridgename  priority

最低优先级的bridge被选为root bridge, root bridge 在spanning tree中是central bridge.

path priority and cost

在bridge中的接口拥有不同的速率,这个值被用来决策哪一个链路被使用,faster interfaces 需要拥更低的优先级。

brctl setpatchcost bridge port cost

多个端口有相同的cost也有一个priority.

Forwarding delay

foewarding delay是在进入fowarding状态之前listening 和learning states状态的时间。

brctl setfd bridgename time

hello time

brctl sethello bridgename time

发包保活时间。

Max age

如果其他bridge在spanning tree中长期不发送hello packet. 这个bridge就是处于dead状态。

brctl maxage bridgename time

Multicast IGMP snoonping

IGMP snooping 支持与否包含在bridge-utils or iproute2, 也可以通过syfs接口控制。对于brN, 在/sys/devices/virtual/net/brN/bridge 设置。

multicast_snooping

multicast_snooping: 用于使能IGMP snooping

multicast_router:  允许某个接口可以接收到所有报文。

你可能感兴趣的:(网络)