OS/SOLARIS2005. 7. 12. 20:58
반응형
Fast Ethernet Duplex 설정

 

 

1. Duplex란?

 

Duplex는 시스템 상호간 통신시 송신과 수신이 어떤 형식으로 이루어 지는 지에 대한 mode를 말한다. Simplex는 단방향 통신을 말하고 즉, 일방적으로 송신자는 송신만을 하고 수신자는 수신만을 하는 통신 형태를 말한다. Duplex는 쌍방이 서로 송신과 수신을 수행하는 형태를 말하며 세부적으로 Half Duplex와 Full Duplex로 구분한다.

 

Half Duplex는 우리나라 말로 반 이중방식이라고 하며 데이터를 송신하는 동안에는 데이터를 수신하지 못하는 방식이다. 예를 들면, 무전기와 같은 통신방식이 예가 될 수 있다.

 

Full Duplex는 우리나라 말로 전 이중방식이라 하며 통신하는 쌍방은 데이터 송신과 동시에 수신할 수 있는 방식이다. 일반적인 데이터 통신은 대부분 Full duplex  형식이다.

 

고전적인 Ethernet 네트워크 구성은 동축 케이블이나 HUB를 통해 구성되며, 프로토콜 특성상 공유 매체를 통해서는 송신이나 수신 트래픽에 관계없이 하나의 트래픽만이 매체를 통해 전달될 수 있다. 결국 통신 형태는 Half Duplex 형식으로 이루어지게 된다.

그러나 Switch의 출현으로 인해 Full Duplex로 Ethernet 네트워크를 구성할 수 있게 되었고 Full Duplex로 연결 구성된 모든 컴퓨터들은 송신과 동시에 데이터를 수신할 수 있게 되었다. 결과적으로 송/수채널의 분리로 100Mbps Ethernet의 경우 총 Throughput은 200Mbps를 갖게된다.

 

2. Duplex 설정 문제로 인한 장애현상들

 

Duplex 설정은 서버와 같은 시스템의 네트워크 인터페이스와 Switch 포트 간, Switch 포트와 Router 인터페이스간 서로 일치하여야 한다. 100/10 Ethernet 카드와 Switch의 경우  상호 auto-negotiation을 수행하여 speed와 duplex mode를 자동적으로 설정하게 되지만 장비간 auto-negotiation protocol의 차이로 인해 제대로 연결되지 않는 경우가 발생하게 된다.

따라서, 100Mbps 속도를 지원하고 Full Duplex를 지원하는 장비들 간에는 Auto-negotiation기능을 disable하고 100Mbps-Full Duplex로 fix하여 운영하는 것이 바람직하다.

 

Application

Duplex 문제로 인해 발생되는 현상은 Application 사용시에 응답속도가 느리다는 것과 응답속도가
전반적으로 느린 것이 아니라 순간적인 delay가 발생한다는 것이다. 따라서 현상 자체로 보면 system 자체의 성능문제나 Application의 문제로 생각하기 쉽다. 만약 서버시스템이 100Mbps로 Switch와 연결되어 있다면 이 Duplex 설정을 확인해 볼 필요가 있다.

Switch/Server NIC Statistics

Duplex 설정문제가 있는 경우, 서버와 연결된 Switch의 Port Statistics를 확인할 때 일반적으로 다음의 error들이 발생하게 된다.

- Collision

Collision 현상은 Full Duplex 환경에서는 거의 발생하지 않아야 한다. 매우 Busy한 서버인 경우는 예외이지만, 대부분의 경우, Collision 현상은 매우 적게 나타난다. 그러나 Duplex 설정이 서로 맞지 않는 경우는 매우 많은 collision들이 발생하게 된다.

- Runt, CRC

서버와 스위치간 또는 스위치와 라우터간 Duplex 설정이 서로 맞지 않는 경우, 한편에서는 2차선을이용하여 송신과 수신 데이터를 처리하려하고 다른 한편은 단지 1차선으로 모든 데이터를 처리하다보니 충돌이 빈번히 발생하고 그에 따라 Runt 패킷과 그에 따른 CRC 패킷들이 다수 발생하게 된다. Duplex 설정 문제로 인해 발생되는 collision은 CRC를 유발한다는 것이 일반적인 collision 현상과 구별된다. 다수의 CRC는 Application 계층에서 재 전송을 일으키게 되고 재 전송 메카니즘은 사용자의 응답속도 저하를 유발하게 된다.

 

3.  OS별 Duplex 설정

OS별로 NIC의 duplex를 설정하는 방법이 다르다. 따라서 대표적인 OS별로 Duplex를 설정하는 방법을 설명하도록 한다.

 

3.1. Solaris


Full Duplex Configuration

Solaris는 NIC를 Full Duplex로 설정하는 데 3가지 방법이 있다.
 

Driver dependent config

설치된 네트워크 인터페이스 driver의 구성을 직접 config한다. 그 구성 파일은 "/kernel/drv/hme.conf" 이다. 이 구성은 Solaris에 hme NIC이 장착된 경우이다.

/kernel/drv/hme.conf

adv_autoneg_cap = 0
adv_100fdx_cap = 1
adv_100hdx_cap = 0
adv_10fdx_cap = 0
adv_10hdx_cap = 0


/etc/system config

/etc/system 파일을 수정하여 Full Duplex를 지정한다.

/etc/system

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1


ndd utility를 이용한 config

ndd utility를 이용하여 Full Duplex를 지정하는 경우는 시스템 reboot 시 다시 설정을 하여야 한다.

#ndd -set /dev/hem adv_autoneg_cap 0
#ndd -set /dev/hem adv_100hdx_cap 0
#ndd -set /dev/hem adv_100fdx_cap 1

 

NIC Duplex mode와 Speed를 확인하는 방법
ndd utility 이용

#ndd  /dev/hem link_speed <return>
1  ;      100Mbps
#ndd  /dev/hem link_mode <return>
1  ;      Full Duplex Mode

Full Duplex mode를 enable한 후에는 성능향상을 위해 TCP의 송신과 수신 buffer size를 증가시키는 것이 좋다. TCP 송/수신 buffer를 증가시키기위해서 다음의 command를 이용하며 시스템 reboot시에도 적용되디위해서는 rc script에 해당 command line를 입력하도록 한다.

#ndd  -set  tcp_recv_hiwat 65536
#ndd  -set  tcp_xmit_hiwat  65536


3.2. HP-UX 11.0


Full Duplex Configuration

설치된 네트워크 카드에 따라 /etc/rc.config.d 디렉토리 안에 있는 다음의 파일들을 수정하여야 한다.

/etc/rc.config.d/

hpsppci100conf  ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)
hppci100conf     ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)
hpgsc100conf    ; LAN, 10/100 Base-TX LAN Adapter(GSC Slot)
hpgelanconf      ; LAN, 10/100 Base-TX LAN Adapter(PCI Slot)


위 나열된 구성파일 중에서 설치된 NIC에 해당하는 파일을 편집한다. 파일 안에서 설치된 네트워크 인터페이스의 이름을 찾은 다음
"_SPEED[0]" 행을 수정하여야 한다. 예를 들면,

HP_PCI100_SPEED[0]=100FD

와 같이 수정한다. 수정한 다음 변경사항을 적용하기위하여 "/sbin/init.d/net start"를 실행한다.
 

NIC Duplex mode와 Speed를 확인하는 방법

HP-UX 11.0에서 NIC의 Speed와 Duplex mode를 확인하기 위해서는 "lanadmin"이라는 프로그램을 수행하여 확인한다. 수행한 화면에서 "lan" 그리고 "dis" 메뉴를 선택하면 "Description" 행에 현재 Duplex mode가 어떻게 설정되어있는 지를 확인할 수 있고 "Speed" 행은 현재 적용된 Speed를 Mbps단위로 보여준다.

 

3.3. Linux
 

Full Duplex Configuration

Linux의 경우 다양한 LAN Card를 지원하는 관계로 실제 설치된 LAN Card driver에 따라 Options를 다르게 설정하여야 한다. 따라서 설치한 Driver의 설정 방법을 반드시 확인한 뒤 설명에 따라 duplex를 지정하여야 한다. 일반적으로 modprobe 명령을 이용하여 Duplex 설정 및 Speed를 설정하거나 /etc/modules.conf 파일에 필요한 설정을 지정하여 매 reboot시 마다 적용될 수 있도록 한다.

아래에는 가장 일반적인 LAN card인 Intel 계열 LAN card의 duplex 설정 방법을 설명한다.

 

insmod or modprobe 명령사용
인텔 e100 driver를 이용하는 LAN card의 경우

#insmod e100.o e100_speed_duplex=4,4 (for two adapters)


/etc/modules.conf 설정

/etc/modules.conf

alias  eth0  e100
alias  eth1   pcnet32
options e100 e100_speed_duplex=4
options pcnet32 options=14

e100 driver Options
e100_speed_duplex
Valid Range: 0-4 (1=10half;2=10full;3=100half;4=100full)
Default Value: 0

pcnet32 driver Options
options pcnet32 options=0          #(Autonegotiation)
options pcnet32 options=9
          #(MII, 10Mbps, Half duplex)
options pcnet32 options=10
          #(MII, 10Mbps, Full duplex)
options pcnet32 options=13
          #(MII, 100Mbps, Half duplex)
options pcnet32 options=14          #(MII, 100Mbps, Full duplex) 

NIC Duplex mode와 Speed를 확인하는 방법

Linux의 경우는 NIC 의 현재 speed 설정과 Duplex를 확인할 수 있는 방법이 OS 차원에서 제공되지 않는다. 따라서 확인할 수 있는 방법은 Linux 시스템과 연결된 Switch의 port 상태를 확인하여 알 수 있다.

 

* 원본자료 : http://www.enclue.com/operation/guide/duplex.html

 

-----------------------------------------------------

qfe interface는 디폴트로 네트웍에 연결된 상대방의 interface와 negotiation하여
10/100 half/full duplex에 맞게 연결이 된다. 그러나 이 negotiation 기능이 없는
장비나 다른 이유로 하여 negotiation을 하지 못 하여 interface가 UP 되지 못할 경우가
있다. 이 경우에는 negotiation 기능을 사용하지 말고, 연결될 장비의 setting에
맞추어 수동으로 10/100 half/full duplex 설정하여야 한다.

qfe interface의 parameter를 변경하기 위한 방법에는 2 가지가 있다.

        a) ndd 명령어를 사용하는 방법
        b) /etc/system 화일을 수정하는 방법

1. ndd 명령어를 사용하여 변경

    1.1. qfe interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 한다.

         # ndd -set /dev/qfe adv_100T4_cap 0
         # ndd -set /dev/qfe adv_100fdx_cap 0
         # ndd -set /dev/qfe adv_100hdx_cap 0
         # ndd -set /dev/qfe adv_10fdx_cap 1
         # ndd -set /dev/qfe adv_10hdx_cap 0
         # ndd -set /dev/qfe adv_autoneg_cap 0

    1.2. qfe interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_10hdx_cap 1
        # ndd -set /dev/qfe adv_autoneg_cap 0

    1.3. qfe interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 1
        # ndd -set /dev/qfe adv_100hdx_cap 0
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0

    1.4. qfe interface의 속도를 100MB half duplex로 설정하려면 다음과 같이 한다.

        # ndd -set /dev/qfe adv_100T4_cap 0
        # ndd -set /dev/qfe adv_100fdx_cap 0
        # ndd -set /dev/qfe adv_100hdx_cap 1
        # ndd -set /dev/qfe adv_10fdx_cap 0
        # ndd -set /dev/qfe adv_autoneg_cap 0

2. /etc/system 화일을 변경

    /etc/system 화일에 변경한 내용은 바로 적용되지 않고, 시스템을 리부팅한
    후에 적용된다.

    2.1 qfe interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=1
        set qfe:qfe_adv_10hdx_cap=0

   2.2 qfe interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=1

    2.3 qfe interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=1
        set qfe:qfe_adv_100hdx_cap=0
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0

   2.4 qfe interface의 속도를 100MB half duplex로 설정하려면 다음과 같이 한다.

        set qfe:qfe_adv_autoneg_cap=0
        set qfe:qfe_adv_100T4_cap=0
        set qfe:qfe_adv_100fdx_cap=0
        set qfe:qfe_adv_100hdx_cap=1
        set qfe:qfe_adv_10fdx_cap=0
        set qfe:qfe_adv_10hdx_cap=0

3. 위와 같이 하면 시스템에 설치되어 있는 모든 qfe interface의 속도를 10MB 또는
   100MB로 지정할 수 있다. 그러나 각 interface별로 각각 다른 속도를 지정하고
   싶은 경우에는 아래와 같이 interface를 먼저 지정한후 1 또는 2번 과정을 실행
   한다.

   3.1 ndd 명령어를 사용하는 경우

        ndd -set /dev/qfe instance "instance-number"

   3.2 /etc/system 화일을 수정하는 경우

        set qfe:qfe_instance="instance-number"

   위의 설명에서 "instance-number"는 qfe0 interface는 "0", qfe1 interface는
   "1", qfe2 interface는 "2"... 와  같이 정의 된다.

반응형
Posted by [PineTree]