IT/OracleLinux-1Z0460

bonding.txt 해석

알콩달콩아빠 2022. 4. 27. 09:13
728x90
반응형

아래의 글은
http://www.linuxchannel.net:8080/docs/ethernet-channel-bonding.txt
의 글을 부분 요약해 놓은것입니다.
자세하게 설명하려다 보니 쓸데없는 내용이 많이 들어가서
이렇게 간략하게(?) 요약해 놓았습니다.

...

이미 ethernet channel bonding을 사용하는 분이
있으리라 생각됩니다만, 다른 웹싸이트나 이곳에서도 비슷한
문서(?)가 거의 없더군요...
거의 Beowulf 클러스터에 관련된 내용이라서 .....

참고로)
http://www.linuxchannel.net/?vhost=server#netstat
을 방문하시면 bonding되어 있는 상태를 볼 수 있습니다.


===========================================
===========================================
[제목] Ethernet Channel Bonding by ifenslave

-여러개의 이더넷을 하나로 묶어 네트워크 대역폭을 늘리는 방법

- 작성자 : 김칠봉 <san2@linuxchannel.net>
- 작성일 : 2001. 06. 30

- 관련 문서
     /usr/src/linux-2.2.x/Documentation/network/bonding.txt(커널 문서)
     또는
     /usr/share/doc/iputils-xxx/README.ifenslave(iputils-xxx 패키지)

*주)
이 문서는 /usr/share/doc/iputils-xxx/README.ifenslave 문서를 기준으로
작성되었습니다.

* 잘못된 점이나 보완하고자 하는 내용이 있으면 언제든지 환영합니다.
    이 문서에 대한 이후 보완된 점은 다음의 주소에서 찾을 수 있습니다.

    http://www.linuxchannel.net/docs/ethernet-channel-bonding.txt

--------------------------------------------------------

목자

0. 개요 및 배경
1. 제약 조건
2. 커널에서 지원하려면 ?
3. 필요한 패키지는?
4. Ethernet Channel Bonding 설정 및 확인
   4-1. /etc/modules.conf (또는 /etc/conf.modules)
   4-2. /etc/sysconfig/network
   4-3. /etc/sysconfig/network-scripts/ifcfg-bond0
   4-4. /etc/sysconfig/network-scripts/ifcfg-eth0
   4-5. /etc/sysconfig/network-scripts/ifcfg-eth1
   4-6. 시스템 재부팅 및 설정 확인(예)
5. 간단한 속도 테스트
   5-1. 테스트1 - 스위칭 허브 / 각각 하나의 이더넷 만을 사용
   5-2. 테스트2 - 스위칭 허브 / 각각 Ethernet Channel Bonding을 적용
   5-3. 테스트3 - 더미 허브 / 각각 Ethernet Channel Bonding을 적용
   5-4. 테스트 결과
6. FAQ
   6-1. SMP 시스템에서 안전(safe)합니까?
   6-2. 잘 지원하는 이더넷 카드는 ?
   6-3. bond Master(가상) 장치는 몇개까지 가능합니까?
   6-4. bond Slave(Ethernet) 장치는 몇개까지 가능합니까?
   6-5. Slave 장치중 하나가 죽는다면 어떤 현상이 있나요?
   6-6. 만약 이것(6-5의 질문)이 고쳐지면 bonding은 높은 성능을 낼 수 있습니까?
   6-7. 어떤 switches/system이 Ethernet Channel Bonding을 적용할 수 있습니까?
   6-8. bond0의 MAC address는 어느 장치의 것입니까?
   6-9. Ethernet Channel Bonding은 어떤 정책(용도)에 사용할 수 있습니까?
7. 후기


0. 개요 및 배경

이 내용은 여러개(2개이상)의 Ethernet를 하나로 묶어서 네트워크 대역폭을
늘리는 방법입니다.

이 방법은 Beowulf 프로젝트 중 클러스터 제작시 사용하는 Ethernet Channel Bonding
입니다.(필자는 클러스터 제작경험이 없기 때문에 실제로 이렇게 적용하는지에
대해서는 아는 바가 없습니다.)

http://www.beowulf.org/software/bonding.html


1. 제약 조건

Ethernet Channel Bonding 을 사용하면 몇가지 조건이 있습니다.

   1. 허브 장비가 스위칭이어야 성능을 제대로 발휘
       (EtherChannel 지원).
   2. 리눅스 커널에서는 Bonding 기능 지원이 필요.
   3. 기타, 성능좋은 Ethernet 2개 이상(가능한 같은 모델의 PCI 방식)

*성능을 제대로 내기 위해서는 양쪽 컴퓨터 모두 위와 같은 조건이어야함.
   즉, 리눅스 Bonding이나 Cisco 5500 switch, 또는 SunTrunking SunSoft driver처럼
   비슷한 기능이 양쪽 모두 구현되어 있어야 함.


2. 커널에서 지원하려면 ?

커널에서 지원하기 위해서는 다음과 같이 설정하고 커널을 컴파일하여야 한다.

Network device support  --->
   <*> Bonding driver support


3. 필요한 패키지는?

레드햇 리눅스라면 iputils-xxx.rpm 패키지를 설치하면 됩니다.
즉 이 패키지 중에서 ifenslave 유틸리티를 이용하기 위해서 입니다.


4. Ethernet Channel Bonding 설정 및 확인

[RedHat 리눅스 계열 일 경우]

수정 및 생성해야 할 파일

   - /etc/modules.conf (또는 conf.modules)
   - /etc/sysconfig/network
   - /etc/sysconfig/network-scripts/ifcfg-bond0
   - /etc/sysconfig/network-scripts/ifcfg-eth0
   - /etc/sysconfig/network-scripts/ifcfg-eth1
   ....
   - /etc/sysconfig/network-scripts/ifcfg-eth[N] <-- 시스템에 장착할 수 있는 N 만큼

# vi modules.conf (커널 2.2.x는 conf.modules)
----------------------------------------------------------
## 중간 생략
##
alias   bond0   bonding
alias   eth0      3c59x  ## <-- 현재 장착되어 있는 이더넷
alias   eth1      3c59x  ## <-- 새로 장착할 두번째 이더넷
##
##
## bond0에서 0는 숫자 0입니다.
## bonding은 커널 모듈을 의미합니다.
## 3c59x 는 모듈이름입니다(3Com 905B-TX 10/100M).
----------------------------------------------------------

# vi network
----------------------------------------------------------
## 현재 설정을 그대로 유지한채 다음 GATEWAYDEV 설정만 바꿈.
## 그래야 외부 네트워크로 패킷이 나갈 수 있습니다.
##
## 중간 생략
##
GATEWAYDEV=bond0
----------------------------------------------------------

# vi ifcfg-bond0
----------------------------------------------------------
DEVICE=bond0  ## <-- 이부분 만 수정함. 나머진 기존의 eth0를 그대로 유지
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
BROADCAST=XXX.XXX.XXX.255
NETWORK=XXX.XXX.XXX.0
NETMASK=255.255.255.XXX
IPADDR=XXX.XXX.XXX.XXX
----------------------------------------------------------

# vi ifcfg-eth0 (ifcfg-eth0 파일을 생성함)
----------------------------------------------------------
DEVICE=eth0  ## <-- 이부분이 ifcfg-eth1과 다르고 모두 동일
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
----------------------------------------------------------

# vi ifcfg-eth1 (ifcfg-eth1 파일을 생성함)
----------------------------------------------------------
DEVICE=eth1  ## <-- 이부분이 ifcfg-eth0과 다르고 모두 동일
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
----------------------------------------------------------

각 네트워크 인터페이스 확인하기

   [bond0 / eth0 / eth1 모두 같아야 할 부분]

   - 이더넷 MAC Address : HWaddr 00:xx:C9:xx:E7:xx
       즉 첫번째 이더넷(eth0)의 MAC Address 를 모두 따른다.
   - IP Address : inet addr:211.xxx.159.xxx
   - Brocast Address : Bcast:211.xxx.159.xxx
   - Net Mask :  Mask:255.255.255.xxx

   [서로 꼭 틀려야할 부분]

   - MASTER / SLAVE(********꼭 확인********)
      bond0 : ... RUNNING MASTER MULTICAST ...
      eth0/eth1 : ... RUNNING SLAVE MULTICAST ...
   - 이더넷 I/O Address(서로 다른 이더넷임을 확인)
      eth0 : Base address:0x7000
      eth1 : Base address:0x9000
   - 기타 패킷 양

# ls /proc/sys/net/ipv4/conf
all  bond0  default  eth0  eth1  lo


5. 간단한 속도 테스트

필자의 네트워크 환경은 위의 조건에서 허브 장비가 EtherChannel 기능이 지원하지는
못하지만 불행중 다행이 스위칭 장비이어서 테스트가 가능했음.

(직접 테스트는 못해보았지만, 각각의 Lan선을 허브에 연결하는 것보다는 cross 케이블을
제작하여 직접 C/S구조를 만드는것이 훨씬 낫겠군요.)

따라서 다음에 나오는 테스트 결과의 수치는 절대적인 수치가 아님에 주의하시길
바랍니다.

[테스트 환경 및 방법]

    - 두 대의 리눅스 박스 준비
       하나(이하 '서버'라 칭함) : redhat 6.2(kernel 2.4.1), 3Com905B-TX 10/100M 2개
       둘(이하 '클라이언트') : redhat 7.0(kernel 2.4.4), Intel eepro100 2개
    - 허브는 스위칭 장비이며, EtherChannel 기능 없음
    - 10MBPS 더미 허브 추가 테스트
    - 허브에서 서버, 클라이언트의 각각의 이더넷으로 총 4개의 Lan 선 연결(RJ45용)
    - FTP를 이용하여 클라이언트에서 서버로 하나의 파일을 업/다운한 테스트
    - 테스트한 파일은 약 131M mpeg 파일 포맷임(시간을 재기위해서 큰 파일 이용)
    - 시간 관계상 테스트는 3번만 했으며, 그 중 두번째의 내용을 화면에 보임
    - 테스트 종류는 총 3가지로
       1. 스위칭 허브에서 각각 하나의 이더넷 만을 사용했을 경우(비교 기준)
       2. 스위칭 허브에서 각각 Ethernet Channel Bonding을 적용했을 경우(주 관심 대상)
       3. 더미허브에서 각각 Ethernet Channel Bonding을 적용했을 경우(더미 허브에서 궁금)


테스트1 - 스위칭 허브 / 각각 하나의 이더넷 만을 사용

   - 다운로드 : 137753375 bytes received in 117 secs (1.1e+03 Kbytes/sec)
   - 업로드 : 137753375 bytes sent in 117 secs (1.1e+03 Kbytes/sec)

테스트2 - 스위칭 허브 / 각각 Ethernet Channel Bonding을 적용
   - 다운로드 : 137753375 bytes received in 64.7 secs (2.1e+03 Kbytes/sec)
   - 업로드 : 137753375 bytes sent in 61.1 secs (2.2e+03 Kbytes/sec)

테스트3 - 더미 허브 / 각각 Ethernet Channel Bonding을 적용
   - 다운로드 :  137753375 bytes received in 290 secs (4.6e+02 Kbytes/sec)
   - 업로드 : 137753375 bytes sent in 243 secs (5.5e+02 Kbytes/sec)

테스트1 결과를 기준으로 볼 때 테스트2는 거의 약 2배의 속도를 내는군요.
반면 테스트3은 오히려 더 속도가 떨어진다는 것을 알 수 있습니다.
테스트3은 좀더 많은 테스트를 해봐야 알겠지만 일단 더미허브에서는 그 효과가
없다는 것을 짐작할 수 있습니다.

스위칭 허브에 양쪽 모두 Ethernet Channel Bonding을 적용했을 경우
정말 놀라운 속도(?)를 내군요.
따라서 웹서버와 DB서버/메일서버(POP3/IMAP)를 서로 Ethernet Channel Bonding
을 적용하면 적절하겠음.

728x90
반응형

'IT > OracleLinux-1Z0460' 카테고리의 다른 글

DUMA  (0) 2022.05.04
teaming  (0) 2022.04.27
socket()  (0) 2022.04.25
리눅스에서 무선랜 사용하기  (0) 2022.04.25
Private Public 주소구조  (0) 2022.04.25