* BSD가 네트워크 인터페이스에 드라이버 특정 이름을 사용하는 이유는 무엇입니까? 제한을 의미합니까?


13

네트워크 카드의 브랜드에 따라 인터페이스 이름이 다릅니다 (드라이버에 따라 다릅니다).

  • * BSD가 네트워크 인터페이스에 드라이버 특정 이름을 사용하는 이유는 무엇입니까?
  • 커널에 "일반 네트워크 인터페이스"를 설명하는 추상화 계층이 없으므로 각 드라이버는 자체 API를 통해 내부적으로 처리됩니다.
  • (링크 링크, 트래픽 쉐이핑, QoS ( ALTQ ), 필터링 및 기타와 같은 서브 시스템에 어떤 영향을 미칩니 까?

정확하게는 pfSense에서 보이는 것처럼 ALTQ를 LAG (Link Aggregation) 가상 인터페이스와 함께 사용할 수 없습니다.

적절한 추상화 계층이 없기 때문에 이것이 BSD 내부 제한입니까?

답변:


7

* BSD가 네트워크 인터페이스에 드라이버 특정 이름을 사용하는 이유는 무엇입니까?

역사적인 선택 일뿐입니다. 이름의 문자는 카드와 통신하는 드라이버에서 나왔으므로 동일한 드라이버를 사용하는 경우 두 개의 개별 인터페이스에서 동일합니다.

BSD에서 네트워크 드라이버는 섹션 4의 자체 매뉴얼 페이지를 가지고 있습니다. 따라서 네트워크 어댑터를 dc(4)제어하는 DEC 21143 드라이버에 대해 알려줍니다 dc0.

하드 디스크와 같은 BSD Unix의 다른 부분에서도 이것을 볼 수 있습니다.

적절한 추상화 계층이 없기 때문에 이것이 BSD 내부 제한입니까?

아니.

그만한 가치가있는 리눅스는 비슷한 길을 가고있다 . 네트워킹이 복잡 해짐에 따라 이더넷 어댑터에 대한 단순한 이름 지정 규칙이 사라지고 있습니다.


감사합니다. 그렇다면 링크 집계와 함께 ALTQ를 사용할 수없는 이유를 알고 있습니까?
Totor

질문 당 하나의 질문 부탁드립니다. 이것을 BSD 장치 이름 지정에 중점을 두겠습니다.
Warren Young

나는 새로운 udev 네트워크 장치를 BSD와 비슷한 경로로 부르지 않을 것입니다. 내가 아는 한 기본 방법은 임의의 번호 지정 체계가있는 드라이버 이름이 아닌 일종의 버스 경로를 사용하여 장치를 식별하는 것입니다.
Pavel Šimerda

@ PavelŠimerda : 방금이 체계를 사용하는 Linux 시스템이 더 이상 eth0thru를 사용하지 않음을 의미했습니다 ethINFINITY. 당신은 더 이상 바로 입력 할 수 없습니다 ifconfig eth0당신은 FreeBSD의에 사용자 인터페이스 측면에서 기능적으로 유사한 리눅스 시스템을 만드는 첫 번째 이더넷 인터페이스에서 찾고있을거야 기대 어디 필요하거나 사전 의 이름에 대한 지식 시스템의 인터페이스 또는 정규화되지 않은 ifconfig명령 이있는 목록을 먼저 가져와야 합니다. 기본 커널 메커니즘은 물론 완전히 다릅니다.
Warren Young

5

일반 또는 드라이버 별 이름을 선택하는 것은 드라이버 제한과 관련이 없습니다.

주로 미용 선택입니다. 일반 이름을 사용하면 거의 항상 관련이없는 정보를 숨길 수 있다는 이점이 있습니다. 네트워크 인터페이스는 누가 만들었 든 상관없이 네트워크 인터페이스입니다. 장치의 기능은 사용중인 드라이버가 아닌 정확한 모델과 구성에 따라 다릅니다. 특정 이름의 장점은 관리자입니다 : 오류 메시지가 언급하는 경우 eth0(좋아, 그래서 하나는 0 인 어느 하나가 1), 덜 유익한보다는 그것을 언급하는 경우 wlan0(와이파이 인터페이스의 그 아) 또는 bcm0(아,의 그 Broadcom 인터페이스).

FreeBSD에서 네트워크 설정 작업 ioctl은 Unix 소켓 을 호출 하여 작동 합니다. 이 ioctl은 일반 네트워킹 코드에 의해 처리되며 ioctl이이를 요청하면 관련 드라이버로 이동합니다.

ALTQ가 링크 집계와 어떻게 상호 작용하는지 모르겠습니다. 작동하지 않았지만 지금은 최신 버전의 FreeBSD를 사용해야합니다 .


3

어떤 네트워크 카드를 말하고 있는지 쉽게 알 수 있습니다.

Intel (igb0) 및 Realtek (rl0) nic이있는 경우 즉시 구별 할 수 있습니다.

또한 다른 드라이버는 다른 기능을 지원합니다. 일부 드라이버는 지원 polling하지만 일부는 지원 하지 않습니다. 일부 지원 LRO, TSO그리고 RSS등 그들이 모든 단지 이름이 없을 때하는 어떤 지원을 추적하기가 쉽습니다 eth.

eth 다른 유형의 네트워킹 인터페이스가 많은 경우에는 의미가 있지만 거의 사용하지 않습니다.


당신이 누군지 알고 있기 때문에 +1. :) 팟 캐스트 감사합니다 !
Warren Young

1

* BSD가 네트워크 인터페이스에 드라이버 특정 이름을 사용하는 이유는 무엇입니까?

일을 간단하게 만들기 위해. 이름이 지정된 인터페이스를보고 bge0매뉴얼을 보거나 니모닉 링크 시스템 을 사용 하는 경우이 드라이버는 Broadcom Gigabit Etherhet 이라는 것을 빨리 기억할 것입니다 . 문서도 유용합니다.

커널에 "일반 네트워크 인터페이스"를 설명하는 추상화 계층이 없으므로 각 드라이버는 자체 API를 통해 내부적으로 처리됩니다.

여기서 규칙은 다음과 같습니다.

  • 드라이버 이름을 사용하여 장치 이름을 만드십시오.
  • 장치 이름 바로 다음에 번호를 만들려면 가장 낮은 PCI ID를 사용하십시오.

추상화 계층이 필요하지 않습니다. 간단합니다.

(링크 링크, 트래픽 쉐이핑, QoS (ALTQ), 필터링 등과 같은 서브 시스템에 어떤 영향을 미칩니 까?

인터페이스 이름은 트래픽 조절을 방해하지 않아야합니다.

정확하게는 pfSense에서 보이는 것처럼 ALTQ를 LAG (Link Aggregation) 가상 인터페이스와 함께 사용할 수 없습니다.

오늘은 작동해야합니다.

적절한 추상화 계층이 없기 때문에 이것이 BSD 내부 제한입니까?

이것을 처리하기에 적절한 레이어가없는 것은 아닙니다. 다른 리소스를 사용 하여 인터페이스 이름 생성 ( /etc/rc.conf) 또는 마더 보드 설정에서 PCI ID 변경 과 같은 이름을 처리 할 수 ​​있기 때문 입니다. 그리고이 질문에 대해 다른 사람들이 말했듯이 Linux 조차도이 경로로 가고 biosdevname있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.