>  기사  >  시스템 튜토리얼  >  네트워크 카드 바인딩 모드 분석

네트워크 카드 바인딩 모드 분석

王林
王林앞으로
2024-01-11 21:42:18390검색

현재 7가지 네트워크 카드 바인딩 모드(0~6)가 있습니다. bond0, bond1, bond2, bond3, bond4, bond5, bond6

네트워크 카드 바인딩 모드 분석

일반적으로 사용되는 세 가지가 있습니다:

mode=0: 자동 백업이 포함된 균형 로드 모드이지만 "스위치" 지원 및 설정이 필요합니다.

mode=1: 자동 백업 모드입니다. 한 회선이 끊어지면 다른 회선이 자동으로 백업됩니다.

mode=6: 균형 잡힌 로드 모드, 자동 백업, "스위치" 지원 및 설정이 필요하지 않습니다.

설명:

모드 0 로드 밸런싱을 달성하려면 optionsbond0 miimon=100 mode=0 설정만으로는 충분하지 않습니다. 왜냐하면 네트워크 카드에 연결된 스위치를 특별히 구성해야 하기 때문입니다(이 두 포트는 통합되어야 함). 본딩에 사용되는 두 개의 네트워크 카드는 동일한 MAC 주소를 사용합니다. 원칙적으로 분석합니다(본딩은 모드0에서 실행됨).

모드 0에서는 본드에 바인딩된 네트워크 카드의 IP가 모두 동일한 mac 주소로 수정됩니다. 이러한 네트워크 카드가 동일한 스위치에 연결되면 스위치의 arp 테이블에 mac 주소에 해당하는 포트가 여러 개 있게 됩니다. , 스위치가 이 mac 주소로 전송된 패킷을 수신하면 어느 포트로 전달해야 합니까? 일반적인 상황에서 mac 주소는 전역적으로 고유합니다. 여러 포트에 해당하는 하나의 mac 주소는 확실히 스위치를 혼란스럽게 합니다. 따라서 mode0 아래의 본드가 스위치에 연결된 경우 스위치의 포트를 통합해야 합니다(cisco는 이더넷 채널, Foundry는 포트 그룹이라고 함). 스위치가 통합된 후 통합 아래의 여러 포트도 하나의 그룹으로 묶이기 때문입니다. mac 주소. 우리의 솔루션은 두 개의 네트워크 카드를 서로 다른 스위치에 연결하는 것입니다.

mode6 모드에서는 본딩에 사용되는 두 네트워크 카드가 서로 다른 MAC 주소를 사용하므로 스위치를 구성할 필요가 없습니다.

7가지 결합 모드에 대한 지침: mod=0, 즉: (balance-rr)라운드 로빈 정책

특징: 데이터 패킷 전송 순서는 순차 전송입니다(즉, 첫 번째 패킷은 eth0으로 이동하고 다음 패킷은 eth1로 이동하며... 마지막 패킷이 전송될 때까지 주기가 계속됩니다). 균형 조정 및 내결함성 그러나 연결 또는 세션 데이터 패킷이 다른 인터페이스에서 전송되고 중간에 다른 링크를 통과하는 경우 클라이언트 측에서 데이터 패킷이 순서대로 도착하지 않는 문제가 발생할 가능성이 높습니다. 순서 없이 도착하는 데이터 패킷은 다시 요청해야 하므로 네트워크 처리량이 감소합니다

mod=1, 즉: (활성 백업)활성 백업 정책

특징: 한 장치만 활성화되며, 한 장치가 다운되면 다른 장치가 즉시 백업 장치에서 기본 장치로 전환됩니다. MAC 주소는 외부에서 볼 수 있으므로 스위치에서의 혼동을 피하기 위해 본드의 MAC 주소는 고유합니다. 이 모드는 내결함성만 제공하며, 이 알고리즘의 장점은 높은 네트워크 연결 가용성을 제공할 수 있지만 N개의 네트워크 인터페이스의 경우 하나의 인터페이스만 작동한다는 점을 알 수 있습니다. 자원 활용률은 1/N

mod=2, 즉: (balance-xor)XOR 정책

특징: 지정된 전송 HASH 정책을 기반으로 패킷을 전송합니다. 기본 전략은 (소스 MAC 주소 XOR 대상 MAC 주소)% 슬레이브 번호입니다. xmit_hash_policy 옵션을 통해 다른 전송 정책을 지정할 수 있습니다. 이 모드는 로드 밸런싱 및 내결함성을 제공합니다.

mod=3, 즉: 방송(방송 전략) 기능:

각 슬레이브 인터페이스에서 모든 패킷을 전송합니다. 이 모드는 내결함성을 제공합니다.mod=4, 즉: (802.3ad) IEEE 802.3ad 동적 링크 집계

특징: 동일한 속도와 이중 설정을 공유하는 집계 그룹을 만듭니다. 802.3ad 사양에 따르면 여러 슬레이브가 동일한 활성화된 집합체에서 작동합니다. 아웃바운드 트래픽에 대한 슬레이브 선택은 전송 해시 정책을 기반으로 하며, 이는 xmit_hash_policy 옵션을 통해 기본 XOR 정책에서 다른 정책으로 변경될 수 있습니다. 특히 802.3ad 표준의 43.2.4장에 언급된 패킷 재정렬 문제를 고려할 때 모든 전송 전략이 802.3ad에 적합한 것은 아닙니다. 구현에 따라 적응성이 다를 수 있습니다.

필수 조건:

조건 1: ethtool은 각 슬레이브의 속도 및 이중 설정 획득을 지원합니다

조건 2: 스위치는 IEEE802.3ad 동적 링크 집계를 지원합니다

조건 3: 대부분의 스위치는 802.3ad 모드를 지원하려면 특정 구성이 필요합니다

mod=5, 즉: (balance-tlb)적응형 전송 로드 밸런싱(어댑터 전송 로드 밸런싱)

특징: 채널 결합을 지원하기 위해 특별한 스위치(스위치)가 필요하지 않습니다. 현재 로드(속도를 기준으로 계산)를 기준으로 각 슬레이브의 아웃바운드 트래픽을 분산합니다. 데이터를 수신하는 슬레이브가 실패하면 다른 슬레이브가 실패한 슬레이브의 MAC 주소를 인수합니다.

이 모드에 필요한 조건: ethtool은 각 슬레이브의 비율을 얻는 것을 지원합니다

mod=6, 즉: (balance-alb)적응형 로드 밸런싱(어댑터 적응형 로드 밸런싱)

기능: 이 모드에는 Balance-tlb 모드와 IPV4 트래픽에 대한 수신 로드 밸런싱(rlb)이 포함되어 있으며 스위치(스위치) 지원이 필요하지 않습니다. 수신 로드 밸런싱은 ARP 협상을 통해 이루어집니다. 본딩 드라이버는 로컬 시스템에서 보낸 ARP 응답을 가로채고 원본 하드웨어 주소를 본드에 있는 슬레이브의 고유 하드웨어 주소로 다시 작성하므로 서로 다른 피어가 통신에 서로 다른 하드웨어 주소를 사용합니다.

서버 측의 수신 트래픽도 균형을 이룰 것입니다. 로컬 시스템이 ARP 요청을 보내면 본딩 드라이버는 ARP 패킷에서 피어의 IP 정보를 복사하여 저장합니다. ARP 응답이 피어로부터 도착하면 본딩 드라이버는 하드웨어 주소를 추출하고 본드의 슬레이브에 대한 ARP 응답을 시작합니다. 로드 밸런싱을 위해 ARP 협상을 사용할 때의 한 가지 문제점은 ARP 요청이 브로드캐스트될 때마다 본드의 하드웨어 주소가 사용된다는 것입니다. 따라서 피어가 이 하드웨어 주소를 알게 되면 수신된 모든 트래픽이 현재 슬레이브로 흐릅니다. 이 문제는 고유한 하드웨어 주소가 포함된 모든 피어에 업데이트(ARP 응답)를 보내 트래픽을 재분배함으로써 해결할 수 있습니다. 새로운 슬레이브가 본드에 추가되거나 비활성 슬레이브가 다시 활성화되면 수신된 트래픽도 재분배되어야 합니다. 수신된 로드는 본드의 최고 속도 슬레이브에 순차적으로(라운드 로빈) 분산됩니다. 링크가 다시 연결되거나 본드에 새 슬레이브가 추가되면 수신 트래픽은 현재 활성화된 모든 슬레이브에 재분배됩니다. 지정된 MAC 주소를 사용하여 각 클라이언트에. 아래에 소개하는 updelay 매개 변수는 반대쪽 끝으로 전송되는 ARP 응답이 스위치(스위치)에 의해 차단되지 않도록 스위치(스위치)의 전달 지연보다 크거나 같은 값으로 설정되어야 합니다.

필수 조건:

조건 1: ethtool은 각 슬레이브의 비율을 얻는 것을 지원합니다.

조건 2: 기본 드라이버는 특정 장치의 하드웨어 주소 설정을 지원하므로 항상 본드의 하드웨어 주소를 사용하는 슬레이브(curr_active_slave)가 있고 본드의 각 슬레이브가 고유한 하드웨어 주소를 갖도록 보장합니다. curr_active_slave가 실패하면 해당 하드웨어 주소는 새로 선출된 curr_active_slave에 의해 인수됩니다. 실제로 mod=6과 mod=0의 차이점은 mod=6, 먼저 eth0 트래픽을 채운 다음 eth1,...ethX를 채우는 것입니다. mod =0이면 두 포트의 트래픽이 기본적으로 동일한 대역폭으로 매우 안정적이라는 것을 알 수 있습니다. 그리고 mod=6이면 첫 번째 포트의 트래픽이 매우 높고 두 번째 포트는 트래픽의 작은 부분만 차지한다는 것을 알 수 있습니다

Linux 네트워크 포트 바인딩: 네트워크 포트 바인딩(본드) 기술을 통해 네트워크 포트 이중화 및 로드 밸런싱을 쉽게 구현하여 고가용성과 높은 신뢰성을 달성할 수 있습니다. 필수 계약:

으아아아

첫 번째 단계는 설정 파일을 구성하는 것입니다:

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

BOOTPROTO=none

ONBOOT=yes

IPADDR=10.10.10.1

NETMASK=255.255.255.0

NETWORK=192.168.0.0

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

第二步,修改modprobe相关设定文件,并加载bonding模块:

1.在这里,我们直接创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf

[root@woo ~]# vi /etc/modprobe.d/bonding.conf

alias bond0 bonding

options bonding mode=0 miimon=200

2.加载模块(重启系统后就不用手动再加载了)

[root@woo ~]# modprobe bonding

3.确认模块是否加载成功:

[root@woo ~]# lsmod | grep bonding

bonding 100065 0

第三步,重启一下网络,然后确认一下状况:

[root@db01 ~]# service network restart

Shutting down interface bond0:  [  OK  ]

Shutting down loopback interface:  [  OK  ]

Bringing up loopback interface:  [  OK  ]

Bringing up interface bond0:  [  OK  ]

[root@db01 ~]#  cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: None

Currently Active Slave: eth0

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: eth0

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 40:f2:e9:db:c9:c2

Slave Interface: eth1

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 40:f2:e9:db:c9:c3

[root@db01 ~]#  ifconfig | grep HWaddr

bond0     Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

eth0      Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

eth1      Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

从上面的确认信息中,我们可以看到3个重要信息:

1.现在的bonding模式是active-backup

2.现在Active状态的网口是eth0

3.bond0,eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。

任意拔掉一根网线,然后再访问你的服务器,看网络是否还是通的。

第四步,系统启动自动绑定、增加默认网关:

[root@woo ~]# vi /etc/rc.d/rc.local

#追加

ifenslave bond0 eth0 eth1

route add default gw 10.10.10.1

#如可上网就不用增加路由,0.1地址按环境修改.

————————————————————————

留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1,

多网口绑定:

那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:

alias bond0 bonding

options bonding mode=1 miimon=200

alias bond1 bonding

options bonding mode=1 miimon=200

正确的设置方法有2种:

第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:

<span style="”color:#000000;”">alias bond0 bonding

alias bond1 bonding

options bonding max_bonds=2 miimon=200 mode=1

</span>

第二种,这种方式,不同的bond口的mode可以设成不一样:

<span style="”color:#000000;”">alias bond0 bonding

options bond0 miimon=100 mode=1

install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0

</span>

仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧!

后记:

miimon 监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。

max_bonds 配置的bond口个数

mode bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多。

위 내용은 네트워크 카드 바인딩 모드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제