프로젝트 중, 네트워크가 bonding되어있는 상태. 잘 모르는 부분이라 이해가 필요.
bonding, ethernet, NIC 등등
일단 bonding 정보는 아래 명령어로 확인할 수 있다.
12121ababababababanbbbnbnvanbababababaaaaaaav
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: enp63s0f2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp63s0f2
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ######
Slave queue ID: 0
Slave Interface: enp63s0f3
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ######
Slave queue ID: 0
하나하나 알아보는걸로.
여러개의 네트워크 인터페이스를 하나의 인터페이스로 결합하는 것을 말한다.
네트워크 본딩은 네트워크 처리량과 대역폭을 증가시켜서 성능을 개선하는 역할을 하며, 하나의 인터페이스가 다운이 되었을 경우, Active/Standby 구조로 작동하며 네트워크가 끊기지 않게한다.
출처 https://yumserv.tistory.com/272
이중화 + 성능 향상 목적인가보다.
예시로 살펴본다.
ip a
(ifconfig 명령어는 활성화 된 인터페이스만 표시. ip addr show 명령어를 사용는게 권고된다고 함)
(ip는 임의로 설정)
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: enp63s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
3: enp63s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
4: enp63s0f2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
5: enp63s0f3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
6: enp98s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
7: enp98s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
8: **bond0**: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
inet6 fe80::225:b5ff:fe00:a113/64 scope link
valid_lft forever preferred_lft forever
9: **bond0.230@bond0**: <**BROADCAST,MULTICAST,UP,LOWER_UP**> **mtu** 1500 **qdisc noqueue state UP group default qlen 1000**
link/ether 00:25:b5:00:a1:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 brd 10.2.30.255 scope global bond0.230
valid_lft forever preferred_lft forever
inet6 fe80::225:b5ff:fe00:a113/64 scope link
valid_lft forever preferred_lft forever
BROADCAST :
브로드캐스트 패킷(로컬 랜 상에 있는 모든 네트워크 장비들에게 보내는 통신)을 처리할 수 있음을 의미. 해당 기능을 통해 DHCP 서버로부터 IP를 할당받을 수 있음.
UP : 해당 NIC가 작동중
LOWER_UP : L1레이어(물리계층)에서의 신호가 UP인 상태. 물리계층에서 신호가 들어오고 있음을 의미.
mtu : 해당 프로토콜이 해당 레이어에서 전송할 수 있는 최대 단위(바이트). 이더넷의 기본값은 1500
qdisc :
Queuing Disciplines을 의미. NIC에 들어오기 전 데이터 패킷들은 Queue에 저장되는데 FIFO 방식인 Queue에 저장되기 전 패킷의 스케쥴링 방법을 지정. 현재는 noqueue로 되어있음.
state : 현재 NIC 작동 상태.
group : 인터페이스 그룹. 기본값은 default
qlen : 전송큐의 크기.
link/ether :
L2(데이터링크 계층)의 프로토콜이 Ethernet이라는 의미이며, 바로 옆 주소는 해당 NIC의 MAC 주소이고, brd는 브로드캐스트를 할 때의 주소를 의미.
inet : L3(네트워크 계층)이 인터넷임을 의미하며, 바로 옆 주소는 ipv4와 ipv6에 따른 주소를 의미.
scope : 해당 인터페이스가 어느 수준에서 접근 가능하며 유효하냐는 의미. global의 경우 외부 네트워크에서 접근이 가능한 범위. Link의 경우 현재 인터페이스가 속한 LAN안에서만 접근이 가능하고 유효하며, Host의 경우는 현재 인터페이스가 속해있는 호스트에서만 유효하고 접근이 가능.
inet6 : ipv6주소
valid_lft,preferred_lft :
valid_lft는 해당 주소가 유효한 시간을 의미, perferred_lft는 해당 주소가 유효한 시간을 지정하는 설정.
down상태인거 빼고 다시
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
4: **enp63s0f2**: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
5: **enp63s0f3**: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
8: **bond0**: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether XX:11:XX:22:XX:33 brd ff:ff:ff:ff:ff:ff
inet6 fe80::225:b5ff:fe00:a113/64 scope link
valid_lft forever preferred_lft forever
9: **bond0.230@bond0**: <**BROADCAST,MULTICAST,UP,LOWER_UP**> **mtu** 1500 **qdisc noqueue state UP group default qlen 1000**
link/ether 00:25:b5:00:a1:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 brd 10.2.30.255 scope global bond0.230
valid_lft forever preferred_lft forever
inet6 fe80::225:b5ff:fe00:a113/64 scope link
valid_lft forever preferred_lft forever
cat /proc/net/bonding/bond0
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: **enp63s0f2**
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: **enp63s0f2**
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ######
Slave queue ID: 0
Slave Interface: **enp63s0f3**
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ######
Slave queue ID: 0
Bonding Mode : fault-tolerance (active-backup)
bond에서 하나의 슬레이브만 활성화되고 다른 슬레이브는 standby 상태로 대기. 활성중인 슬레이브가 fail된 경우 standby 슬레이브 활성화.
대역폭은 활성화된 슬레이브의 대역폭을 가짐. primary를 직접 설정하지 않으면 failback되지 않음.
현재 primary 설정되지 않은 상태. 활성화된 슬레이브는 enp64s0f2.
MII Status : 인터페이스 카드의 up / donw 상태를 나타냄.
MII Polling Interval : fail 시 전환 주기??? 인듯
Duplex : full이면 양방향 수신.
## vi ifcfg-bond0
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"
BOOTPROTO : 고정 ip를 사용하는 경우 none이나 static으로 설정.
근데 ip설정은 어디 되어있는지..
BONDING_OPTS : bonding 모드를 Active-Backup으로 설정하고 MII 링크 모니터링 주기를 100ms (0.1초) 로 설정
enp63s0f2,enp63s0f3이 bond0으로 bonding되어있는건 알겠는데 왜 ifcfg-bond0에는 ip가 설정되어 있지 않고, ifcfg-bond0.230에 되어있는지.
ip a로 확인 시 bond0.230@bond0에서 @bond0의 의미가 무었인지.
위의 의문들은 전부 아래 옵션 VLAN=yes로 해결된다.
vi ifcfg-bond0.230
NAME=bond0.230
DEVICE=bond0.230
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
VLAN=yes
IPADDR=192.168.56.101
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
스위치의 모든 인터페이스는 동일 브로드캐스트 도메인에 포함되어 있으나 VLAN을 적용할 경우 스위치의 일부 인터페이스를 하나의 브로드캐스트 도메인으로 구성하고, 다른 인터페이스를 또다른 브로드캐스트 도메인으로 구성하여 여러 개의 브로드캐스트 도메인을 만들 수 있다. 이렇게 스위치에 의해 만들어진 브로드캐스트 도메인을 VLAN이라고 한다
사용자를 물리적인 위치 대신 작업 그룹별로 묶는 유연한 설계를 제공한다.
더 작은 LAN(브로드캐스트 도메인)으로 분리해 VLAN의 각 호스트에서 일어나는 오버헤드를 줄인다.
VLAN을 하나의 액세스 스위치로 제한함으로써 STP에 대한 작업 부담을 줄인다.
별도의 VLAN으로 나누어 중요한 데이터를 처리하는 호스트를 분리하여 보안을 강화한다.
하둡 클러스터 서버 전용 VLAN을 구성해서 사용하는 듯.
Broadcast Domain : LAN상에서 어떤 단말이 브로드캐스트 패킷을 송출할 때 이 브로드캐스트 패킷에 대해 네트워크에서 영향 받은 영역 또는 그 패킷을 수신할 수 있는 단말들의 집합.
Collision Doamin : 2개 이상의 노드가 동시 패킷 송출 시, 충돌 후 영향 받게되는 영역.
VLN은 하나의 논리적인 브로드캐스트 도메인이다.
Bridge : 브리지는 두 개 이상의 네트워크를 함께 연결하여 단일 브로드 캐스팅 도메인으로 상호 연결되는 데 사용되는 네트워킹 장치(허브를 보완하기 위해 나옴. Collision Domain 분리). 2계층 장치. 네트워크 브리지는 IP 주소를 처리하지 않고 MAC 주소에서만 작동함.
위 내용을 바탕으로 그림을 설명해보면..
6시 회색 구역 :
Bridge로 2개의 네트워크가 하나로 연결되어 단일 브로드 캐스팅 도메인으로 설정 -> 1 Broadcast Domain
Bridge는 대상 주소가 Bridge 반대편에 있는 경우에만 트래픽을 전달하여 Collision Domain을 분리함
-> 2 Collision Domain
Subnet은 10.1.3.0 -> 1 IP Subnet
9시 파란 구역 :
HUB에 연결된 상태 -> 1 Collision Domain, 1 BroadCast Domain, 1 IP Subnet
9시 초록 구역 :
Switch에 연결된 상태, VLAN 적용 -> 3 Collision Domain, 1 BroadCast Domain, 1 IP Subnet
12시 노랑 / 빨강 구역 : Switch에 두 개의 VLAN 구성 -> 2 Broadcast Domain, 2 IP subnet
장치가 세개니까 -> 3 Collision Domain
enp63s0f2,enp63s0f3 두개의 네트워크 카드가 각각 서버별로 bonding 되어있음. (active/standby) / (bond 0)
NIC 2개 bonding -> bond0 -> VLAN 설정(230으로 식별자 지정하여 네트워크 설정 bond0.230)
bond0 네트워크 인터페이스 VLAN지정(bond0.230)
모르는게 너무 많아 두서가 없어도 너무 없다.
다시 읽어봐야지.
감사한 출처들
https://twpower.github.io/146-brief-explanation-about-ip-address
https://yumserv.tistory.com/272
https://blog.naver.com/PostView.nhn?blogId=hymne&logNo=221042702409
https://onecellboy.tistory.com/278
https://m.cafe.daum.net/redhat/DcUv/27?listURI=%2Fredhat%2F_fav
https://m.cafe.daum.net/redhat/DcUv/27?listURI=%2Fredhat%2F_fav
https://co-no.tistory.com/21
https://ja-gamma.tistory.com/entry/VLAN-%EA%B0%9C%EB%85%90-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EC%82%AC%EC%9A%A9%EC%9D%B4%EC%9C%A0
http://www.ktword.co.kr/test/view/view.php?m_temp1=2140
https://www.itworld.co.kr/news/167585
https://www.sciencedirect.com/topics/computer-science/collision-domain
https://velog.io/@koo8624/Linux-Linux-Virtual-networking-Interface