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

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

네트워크 카드 브랜드에 따라 인터페이스 이름이 다르다는 것을 알았습니다(드라이버에 따라 다름).

  • *BSD가 네트워크 인터페이스에 드라이버별 이름을 사용하는 이유는 무엇입니까?
  • 이는 커널에 "일반 네트워크 인터페이스"를 설명하는 추상화 계층이 없으므로 각 드라이버가 자체 API를 통해 내부적으로 이를 처리한다는 의미입니까?
  • (어떻게) 링크 집합, 트래픽 형성, QoS 및 기타 하위 시스템에 영향을 미칩니까(알트큐), 필터링 등?

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

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

답변1

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

이것은 단지 역사적인 선택일 뿐입니다. 이름의 문자는 카드가 통신하는 드라이버에서 나오므로 두 개의 별도 인터페이스가 동일한 드라이버를 사용하는 경우에도 동일하게 됩니다.

한 가지 실질적인 이점이 있습니다. BSD에서 네트워크 드라이버는 섹션 4에 자체 매뉴얼 페이지가 있습니다. 그러므로,dc(4)dc0네트워크 어댑터를 제어하는 ​​DEC 21143 드라이버에 대해 알려줍니다 .

하드 드라이브와 같은 BSD Unix의 다른 부분에서도 이를 볼 수 있습니다.

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

아니요.

가격 대비 좋은 가치,리눅스도 비슷한 길을 가고 있다. 네트워크가 더욱 복잡해짐에 따라 이더넷 어댑터에 대한 간단한 명명 규칙의 시대는 사라지고 있습니다.

답변2

일반 이름 또는 드라이버별 이름 사용 선택은 드라이버 제한 사항과 무관합니다.

이것은 주로 미용상의 선택입니다. 일반 이름을 사용하면 거의 항상 관련성이 없는 정보를 숨길 수 있다는 장점이 있습니다. 네트워크 인터페이스는 누가 만들었든 관계없이 네트워크 인터페이스입니다. 장치의 기능은 사용된 드라이버가 아니라 정확한 모델과 구성에 따라 다릅니다. 특정 이름의 장점은 관리자를 위한 것입니다. 오류 메시지에(글쎄, 어느 것이 0이고 어느 것이 1인지) 언급되는 경우 (아, 그건 Wi-Fi 인터페이스입니다) 또는 (아, 그건 Broadcom 인터페이스입니다)라고 eth0언급하는 것보다 낫습니다. ).wlan0bcm0

FreeBSD에서는 네트워크 설정 작업이 다음을 호출하여 수행됩니다.ioctl유닉스 소켓에서. ioctl은 일반 네트워크 코드에 의해 처리되며 ioctl이 필요할 때 관련 드라이버로 전달됩니다.

ALTQ가 링크 집계와 어떻게 상호 작용하는지 모르겠습니다. 아래와 같이 최신 버전의 FreeBSD를 사용하십시오.예전에는 작동하지 않았지만 지금은 작동합니다..

답변3

이를 통해 어떤 네트워크 카드와 통신하고 있는지 쉽게 알 수 있습니다.

Intel(igb0) 및 Realtek(rl0) 네트워크 카드가 있는 경우 이제 두 카드를 즉시 구별할 수 있습니다.

또한 다양한 드라이버가 다양한 기능을 지원합니다. 일부 드라이버는 이를 지원하고 polling일부는 지원하지 않습니다. 일부 지원 LRO및 기타 TSO. RSS이름이 모두 지정되지 않은 경우 지원되는 항목을 추적하는 것이 더 쉽습니다 eth.

eth다른 유형의 네트워크 인터페이스가 많이 있는 경우에는 이 방법이 적합할 수 있지만 실제로는 이 작업을 수행하는 경우가 거의 없습니다.

답변4

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

일을 단순하게 유지하십시오. 인터페이스라는 이름을 보면bge0설명서를 확인하거나니모닉 링크 시스템곧 이 운전자가 누구인지 기억하게 될 것입니다.Broadcom 기가비트 이더넷.이것문서화도 도움이 됩니다.

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

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

  • 드라이버 이름을 사용하여 장치 이름을 만듭니다.
  • 가장 낮은 PCI ID를 사용하여 장치 이름 뒤에 숫자를 만듭니다.

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

(어떻게) 링크 집계, 트래픽 형성, QoS(ALTQ), 필터링 등 하위 시스템에 영향을 줍니까?

인터페이스 이름은 트래픽 형성을 방해해서는 안 됩니다.

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

오늘은 작동할 것입니다:

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

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

관련 정보