본문 바로가기
Linux/Ubuntu

Ubuntu 22.04: bonding 설정 +Bonding이란?, Bonding의 종류

by ccclog 2023. 10. 19.
반응형

1. Bonding이란?

리눅스에서 여러 네트워크 인터페이스를 하나의 채널로 만들어, 
안정성 혹은 대역폭 이득을 얻는 기능. 

 

2. Bonding의 종류

# 0: Balance-round robine 정책 : 2개의 NIC를 통한 분배, 프로세스들 간의 우선순위 X
Round Robin Scheduling : https://ccclog.tistory.com/118


# 1: Active-Standby : 
- Active 상태의 NIC에 문재발생시 Unactive 상태의 NIC를 활성화.
- 안정성 확보의 기술. 평상시에는 1개의 인터페이스를 사용하다 해당 인터페이스 문제발생시에 Backup 인터페이스로 사용하여 안정성 확보,  
- 성능향상과는 무관한 기술

# 4: 802.3ad(link aggregation) 
- NIC병합하여 대역폭확장.

 

3. Ubuntu 22.04에서 실제 구성.

# NMCLI로는 진행불가. 

-------------------------------------------------------------------------
>>root@user:~# nmcli

eno1: unmanaged
        "Intel I350"
        ethernet (igb), 7C:C2:55:29:F3:38, hw, mtu 1500

eno2: unmanaged
        "Intel I350"
        ethernet (igb), 7C:C2:55:29:F3:39, hw, mtu 1500

usb0: unmanaged
        "Insyde Software RNDIS/Ethernet Gadget"
        ethernet (rndis_host), 4A:D2:70:25:04:FE, hw, mtu 1500

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.

>> root@user:~# nmcli con del eno1

Error: unknown connection 'eno1'.
Error: cannot delete unknown connection(s): 'eno1'.
root@user:~# nmcli dev
DEVICE  TYPE      STATE      CONNECTION
eno1    ethernet  unmanaged  --
eno2    ethernet  unmanaged  --
usb0    ethernet  unmanaged  --
lo      loopback  unmanaged  --

-------------------------------------------------------------------------------
# ifenslave, ethtool 설치.
Ubuntu 18.04  이후에 network는 netplan에 의해서 조정됨. 
netplan에서 본딩 구성시 Ifenslave, ethtool 설치 필요. 

-------------------------------------------------------------------------------
>> root@user:~#  apt install -y ifenslave ethtool

>> root@user:~# dpkg -l |grep "ifenslave\|ethtool"

ii  ethtool                                    1:5.16-1                                amd64        display or change Ethernet device settings
ii  ifenslave                                  2.10ubuntu3                             all          configure network interfaces for parallel routing (bonding)

-------------------------------------------------------------------------------
# bonding module 추가.
-------------------------------------------------------------------------------
## bonding 모듈 확인. 
** 해당 테스트시에는 설치 이후에 lsmod에서 bonding 바로 확인 가능했음.

>>root@user:~# lsmod|grep bonding

bonding               200704  0
tls                   114688  1 bonding

** 재부팅 이후에는 lsmod에서 bonding 확인되지 않음.

>>root@user:~# lsmod|grep bonding

** 해당 경우에는 modprobe bonding 명령어 이용함.

>>root@user:~# modprobe bonding
>>root@user:~# lsmod|grep bonding
bonding               200704  0
tls                   114688  1 bonding

## bonding 시작 모듈에 추가.
재부팅시마다, bonding modprobe를 통해 추가해주기는 불편함.
그로 인해 시작모듈에 올려주기위해선 해당 작업을 추가함.
>>root@user:~# vim /etc/modules
![[Pasted image 20231017111442.png]]
:wq

** 재부팅 이후에 lsmod를 통해서 bonding 확인 가능
>>root@user:~# lsmod |grep bonding
bonding               200704  0
tls                   114688  1 bonding

# Netplan.yalm 작성.
## dhcp 설정
>> vim /etc/netplan/netpaln-*.yalm
>>root@user:~# vim /etc/netplan/00-installer-config.yaml
 This is the network config written by 'subiquity'
network:
  ethernets:
    eno1:
      dhcp4: no
        #      addresses:
        #        - 192.168.10.200/24
        #      nameservers:
        #        addresses:
        #          - 8.8.8.8
        #      routes:
        #        - to: default
        #          via: 192.168.10.1
    eno2:
      dhcp4: no
        #      addresses:
        #        - 192.168.10.201/24
        #      nameservers:
        #        addresses:
        #        - 8.8.8.8
  bonds:
    bond0:
      dhcp4: true
      interfaces: [eno1, eno2]
      parameters:
        mode: balance-rr
        mii-monitor-interval: 1
  version: 2


## Static 설정
>>root@user:~# vim /etc/netplan/00-installer-config.yaml
This is the network config written by 'subiquity'
network:
  ethernets:
    eno1:
      dhcp4: no
        #      addresses:
        #        - 192.168.10.200/24
        #      nameservers:
        #        addresses:
        #          - 8.8.8.8
        #      routes:
        #        - to: default
        #          via: 192.168.10.1
    eno2:
      dhcp4: no
        #      addresses:
        #        - 192.168.10.201/24
        #      nameservers:
        #        addresses:
        #        - 8.8.8.8
  bonds:
    bond0:
      dhcp4: no
      interfaces: [eno1, eno2]
      addresses :
        - 192.168.10.200/24
      nameservers:
        addresses:
          - 8.8.8.8
      routes:
        - to: default
          via: 192.168.10.1
      parameters:
        mode: balance-rr
        mii-monitor-interval: 1

# bonding설정 후 확인.

>>root@user:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 76:46:ce:a9:34:ec brd ff:ff:ff:ff:ff:ff permaddr 7c:c2:55:29:f3:38
    altname enp229s0f0
3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 76:46:ce:a9:34:ec brd ff:ff:ff:ff:ff:ff permaddr 7c:c2:55:29:f3:39
    altname enp229s0f1
4: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 92:86:75:e1:fd:01 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 76:46:ce:a9:34:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.31/24 metric 100 brd 192.168.10.255 scope global dynamic bond0
       valid_lft 7128sec preferred_lft 7128sec
    inet6 fe80::7446:ceff:fea9:34ec/64 scope link
       valid_lft forever preferred_lft forever


>>root@user:~# ethtool bond0
Settings for bond0:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Link detected: yes

반응형