4.3. teamd 서비스, 러너 및 link-watchers 이해
팀 서비스인 teamd
는 팀 드라이버의 인스턴스 1개를 제어합니다. 이 드라이버 인스턴스는 하드웨어 장치 드라이버의 인스턴스를 추가하여 네트워크 인터페이스 팀을 구성합니다. 팀 드라이버는 네트워크 인터페이스(예: team0
)를 커널에 제공합니다.
팀 서비스는 모든 팀팅
방법에 공통 논리를 구현합니다. 이러한 함수는 라운드 로빈과 같은 다양한 로드 공유 및 백업 방법에 고유하며 러너
라고 하는 별도의 코드 단위로 구현합니다. 관리자는 JSON(JavaScript Object Notation) 형식으로 러너를 지정하고 인스턴스가 생성될 때 JSON 코드가 teamd
인스턴스로 컴파일됩니다. 또는 NetworkManager
를 사용하는 경우 team.runner
매개변수에서 러너를 설정하고 NetworkManager
는 해당 JSON 코드를 자동으로 생성할 수 있습니다.
다음 러너를 사용할 수 있습니다.
-
브로드캐스트
: 모든 포트에 대한 데이터를 전송합니다. -
roundrobin
: 차례로 모든 포트에 대한 데이터를 전송합니다. -
activebackup
: 하나의 포트를 통해 데이터를 전송하는 반면 다른 포트는 백업으로 유지됩니다. -
loadbalance
: 활성 Tx 로드 밸런싱 및 BPF(Berkeley Packet Filter) 기반 Tx 포트 선택기를 사용하여 모든 포트에 데이터를 전송합니다. -
random
: 임의로 선택한 포트에서 데이터를 전송합니다. -
lacp
: 802.3ad 링크 집계 제어 프로토콜(LACP)을 구현합니다.
팀
서비스는 링크 감시기를 사용하여 하위 장치의 상태를 모니터링합니다. 다음 link-watchers를 사용할 수 있습니다.
-
ethtool
:libteam
라이브러리는ethtool
유틸리티를 사용하여 링크 상태 변경을 확인합니다. 기본 link-watcher입니다. -
arp_ping
:libteam
라이브러리는arp_ping
유틸리티를 사용하여 ARP(Address Resolution Protocol)를 사용하여 far-end 하드웨어 주소가 있는지 모니터링합니다. -
nsna_ping
: IPv6 연결에서libteam
라이브러리는 IPv6 Neighbor Discovery 프로토콜의 Neighbor Advertisement 및 Neighboration 기능을 사용하여 인접한 인터페이스의 존재를 모니터링합니다.
각 러너는 lacp
를 제외하고 모든 링크 감시자를 사용할 수 있습니다. 이 러너는 ethtool
링크 감시자만 사용할 수 있습니다.