2012년 5월 25일 금요일

윈도우에서 네트워크 드라이버 설정 정보 보기 (TOE, 점보프레임등 확인)

저번 TOE(TCP Offload Engine) 포스팅 이후 윈도우에서 TOE 를 사용하고 있는지 확인할 수 있는 방법에 대한 문의가 있었다. 이에 기본적으로 윈도우에서 네트워크 드라이버 설정 정보를 보는 방법에 대해 간단히 알아보고, TOE 설정 유무도 알아보고자 한다.

우선 네트워크 연결 속성에서 이더넷 카드를 선택해야 하는데, 다음 화면과 같이 로컬영역 연결 상태에서 '속성'을 눌러서 로컬 영역 연결 속성을 보거나 또는 제어판에서 네트워크 및 공유 센터의 메뉴를 통해서 접근할 수 있다.


로컬 영역 연결 속성에서 연결에 사용할 장치가 보인다. 이미지에서는 RealTek PCIe 콘트롤러가 보인다. '구성 (C) ' 을 누르면 아래와 같은 창이 보이고 여기서 '고급' 탭을 누르면 해당 이더넷 카드에 대한 속성을 볼 수 가 있다.

여기서는 이더넷 카드에 대한 몇 가지 속성을 변경할 수 있는 오프로드 뿐만 아니라, WakeOn 및 일전에 언급하였던 점보 프레임에 대한 값 등을 정의할 수 있다.


여기서 각 오프로드 값 속성을 변경하면 된다. 또 netsh 를 통해 TCP 글로벌 매개 변수도 아래와 같이 살펴볼 수 있다.


C:\>netsh int tcp show global
활성 상태 쿼리하는 중...


TCP 글로벌 매개 변수
----------------------------------------------
받는 쪽 배율 상태                    : enabled
Chimney 오프로드 상태                : automatic
NetDMA 상태                          : enabled
DCA(직접 캐시 액세스)                : disabled
수신 창 자동 조정 수준               : normal
추가 정체 제어 공급자                : none
ECN 기능                             : disabled
RFC 1323 타임스탬프                  : disabled
** 위의 autotuninglevel 설정은 하나 이상의 프로필에 대한 로컬/정책 구성이 Window
s 배율
추론으로 다시 정의된 데 따른 결과입니다.
결과중 Chimney 오프로드 상태가 TOE 를 가르킨다고 보면 된다. 윈도우 7 환경에서는 자동으로 설정이 되어 있지만 만약 항상 활성화 시키기 위해서는 enabled 값을 사용하면 된다. 물론 중지하기 위해서는 disabled 로도 재 설정이 가능하다. 다음과 같이 설정하면 되는데, 일반 사용자 권한으로 실행시에는 다음과 같은 실행 에러를 만나게 된다.

C:\>netsh int tcp set global chimney=enabled


IPv4에서 global 설정 명령을 실행하지 못했습니다. 요청한 작업을 수행하려면 권한
상승(관리자 권한으로 실행)이 필요합니다.

도스 실행창을 관리자 권한으로 실행 후 다시 값을 설정한다.

C:\Windows\system32>netsh int tcp set global chimney=enabled
확인됨


C:\Windows\system32>netsh int tcp show global
활성 상태 쿼리하는 중...


TCP 글로벌 매개 변수
----------------------------------------------
받는 쪽 배율 상태                    : enabled
Chimney 오프로드 상태                : enabled

자 이렇게 설정을 하였는데, TOE 가 정말 이용되고 있는 것일까에 대한 의문이 생긴다. 이때는 'netstat -t' 명령어로 오프로드 상태를 볼 수 있다.  오프로드 상태에 InHost 라고 보이는 것은 현재 오프로드 상태가 아니라는 것이다. 오프로드의 상태라면 Offload 라고 표시될 것이다.


C:\>netstat -t


활성 연결


  프로토콜  로컬 주소              외부 주소              상태            오프로
드 상태


  TCP    192.168.40.2:1032      222.122.199.23:http    CLOSE_WAIT      InHost


  TCP    192.168.40.2:1038      tx-in-f125:5222        ESTABLISHED     InHost


  TCP    192.168.40.2:1039      38.126.11.28:http      CLOSE_WAIT      InHost


  TCP    192.168.40.2:2261      tb-in-f191:http        ESTABLISHED     InHost  (이하 삭제) 

필자의 데스크탑의 인터페이스는 부분적으로만 오프로드를 지원하여 InHost 상태로만 나오고 있다. 또는 여러 서비스와의 종속되는 다른 이슈들로 인하여 오프로드 상태가 Fail 될 수도 있다고 한다. 오프로드를 지원하는데도 불구하고 안된다면 BFE(Base Filtering Engine) 서비스를 중지해 보기를 바란다. 다만 서비스 중지로 인한 다른 것들은 감수해야 한다.

C:\> net stop BFE

윈도우 환경에서 TOE 상태가 잘 나타나는 분들은 경험을 댓글로 공유해 주길 부탁드립니다.


[참고]
1. Using Netsh Commands to Enable or Disable TCP Chimney Offload
2. Windows Server 2008 TCP Chimney 오프로드, 수신측 배율 및 네트워크 직접 메모리 액세스 기능에 대한 정보

2012년 5월 24일 목요일

네트워크 스캐닝의 강자 Nmap 6.0 버전 릴리즈


네트워크 스캔 도구로 유명한 Nmap (Network Mapper) 이 최근 새로운 6.0 버전을 릴리즈 하였다. 2009년 7월 Nmap 5 버전 이후로 3년 여만에 새롭게 선보인 것으로 3,924 개의 코드가 새롭게 반영되었고 더욱 파워풀 해진 NSE(Nmap Scripting Engine) 과 289 개의 새로운 스크립트등 이전 보다 더욱 기능이 풍성해 졌다.

주요 기능은
- NSE 기능 향상과 많아진 스크립트 (Nmap 5 버전에서 59 개였던것에 비해 6 버전에서는 348 개로 증가)
- 더 나아진 웹 스캐닝
- IPv6 완벽지원
- 새로운 Nping 도구
- 더욱 나아진 Zenmap GUI 와 결과 뷰
- 더욱 빨라진 스캔  ( traceroute 시스템 코드 재 작성)

세부적인 기능 및 설명은 다음 경로를 참고하면 된다.

http://nmap.org/6/

5 버전을 사용하였던 사용자들은 6 버전으로 점프업 해보자!

[참고]
1. 이미지출처
http://nmap.org

2012년 5월 16일 수요일

TOE(TCP offload engine)란 무엇인가?

이더넷 인터페이스 스펙을 유심히 들여다 본 사용자라면 지원 기능중에 TOE(TCP offload engine)를 본적이 있을 것이다. TOE 는 NIC(Network Interface Cards)에서 사용되는 기술로, 보통 운영체제 상에서 처리되는 TCP/IP 스택을 네트워크 컨트롤러로 내려서 처리하는 것이다. 네트워크 처리가 크게 필요한 기가비트나 10G 기가비트같은 고속네트워크에서 유용하게 사용된다.


처음 TCP는 저속의 네트워크 속도에서 이용되었는데, 지금의 통신속도와 비교해 보면 통신속도는 크게 증가했다. 일반 PC 들도 기가비트 환경이 대중화되었고, 그 만큼 TCP 통신을 필요로 하는 데이터를 처리를 위해 컴퓨팅 파워 사용이 증가하게 되었다. 위키피디아에 기술되어 있는 정보를 보면, Full Duplex 기가비트의 TCP 통신은 2.4GHz 펜티엄 4 프로세스의 80% 이상의 자원을 쓰게된다고 한다. 그래서 시스템에서 동작할 수 있는 여유자원은 상당히 제한적이게 된다. 하지만, 지금의 CPU 스펙을 보면 크게 증가하였다. 대중적인 것이 i3, i5, i7 이 되었으니 말이다. 다시 TCP 프로토콜을 처리하는데 있어서 오버헤드를 가져오는 요소를 살펴보면 다음과 같다:

- 3 way 핸드쉐이크 과정을 통한 연결
- 체크섬, 시퀀스 넘버 계산
- Packet acknowledgement 와 congestion 제어를 위한 슬라이딩 윈도우 계산
- 연결 해제

이러한 기능들을 전용하드웨어로 구현하게 되었고 그것이 TCP offload 엔진이다. 즉, CPU 는 다른 작업을 할 수 있도록 여유를 주자는 것이다. 2008년에는 몇몇 제한적인 NIC 만이 TOE 를 지원하였지만 지금은 상황이 달라졌다. TOE 구현은 오프로드 정도에 따라 부분적 오프로딩과 전체(Full offloading)오프로딩으로 구분된다. 부분적 오프로딩은 체크섬 및 데이터 송수신 관련한 기능만을 구현한 것이다. 이에 반해 전체 오프로딩은 TCP/IP 패킷을 처리하기 위한 TCP연결설정, 타임아웃,오류처리 등과 같이 TCP/IP 스택을 하드웨어로 구현한 것이다.

일반적으로 TCP/IP 의 1bit/s 를 처리하는데는 CPU 1 헤르츠가 필요한 것으로 알려져 있다. 예를 들어 5Gbit/s (메가로 환산하면 625MB/s) 네트워크 트래픽을 처리하기 위해서는 5GHz CPU 가 필요하다. 이 뜻은 5Gbit/s 를 처리하기 위해서는 2.5GHz 듀얼코어 CPU 가 필요하다는 것이다. 이렇게 TOE 기능을 이용해 CPU 자원 사용을 줄여주게 되어 TCP/IP 처리가 많은 경우에는 TOE 를 지원하는 기능이 그렇지 않은 경우보다 더 많은 작업(시스템 관점에서)을 처리할 수 있게 된다.

기본적으로 리눅스 커널에서는 TOE 하드웨어를 지원하고 있지 않다. 패치를 통해서 가능하지만, 커널상에서 직접 지원하지 않는 이유는 다음과 같은 몇 가지 이유들이 있다.

TOE 펌웨어는 소스가 공개되어 있지 않아, 보안적으로 문제가 발생할 경우 해결할 방법을 제시할 수 없기 때문에 보안적 이슈가 있다. 또한 복잡성도 증가되고, 하드웨어적인 여러 제약이 있다. 이러한 여러 이유는 다음의 경로에 잘 정리되어 있다.

http://www.linuxfoundation.org/collaborate/workgroups/networking/toe

지금 한번 여러분들의 NIC 을 체크해 보는 것은 어떨까?
이전에 포스팅한 ethtool 을 통해 오프로드를 살펴볼 수 있으므로, 다음 '참고' 글을 확인해 보기 바란다.

[참고]
1. 위키피디아 TCP Offload Engine
http://en.wikipedia.org/wiki/TCP_offload_engine
2. Ethtool 을 통해 네트워크 카드(NIC) 정보 확인 또는 설정하기
http://www.packetinside.com/2012/04/ethtool-nic.html

2012년 5월 11일 금요일

무지향성 안테나 20dbi 구매, 이제 무선도 비중있게...

앞으로 무선(Wireless)도 더 깊게 다뤄보고자 구매한 안테나가 있다. 보통 무선랜 카드에 달려있는 5dbi 정도의 급으로는 부족해서 Ebay 를 통해 20dbi 무지향성 안테나를 구매하였다.


최대 얻을 수 있는 시그널이 20dbi 라고 하지만 실제 테스트상에서는 '글쎄...'라는 느낌이 우선 들었다. 안테나는 위 그림과 같이 꽤 긴데, 그 길이가 43CM (17인치) 이다.

시간적 여유가 될련지는 모르겠지만,
블로그에서 무선과 관련한 이야기도 한번 다뤄볼까 한다.
결국 네트워크와 연관이 있으므로 :-)


2012년 5월 8일 화요일

오래되었지만 네트워크 트래픽 모니터링에는 자신있는 IPTraf

콘솔기반 네트워크 사용량 표시도구인 nload 에 이어 오래되었지만 아직도 유용하게 사용할 수 있는 IPTraf 도 이어서 소개한다. IPTraf 도 네트워크 모니터링 도구이며 Curses 기반으로 만들어져 더 쉽게 이용할 수 있다. 다만 2005년 9월 3.0.0 버전 이후로 지속적으로 추가 개발이 이뤄지지 않는 점이 아쉽다.


그래도 기본적인 기능은 다 갖추고 있으므로 사용하는데는 전혀 지장이 없다.

크게 다음과 같은 기능을 가지고 있다.




- IP 트래픽 모니터
- 인터페이스별 상태 정보 
- 인터페이스별 세부 상태 정보
- TCP/UDP 포트별 또는 패킷 사이즈별 구분
- 맥 주소별 상태 정보
- 필터링


IPTraf 를 실행할때 여러가지 옵션을 줄 수 있지만, IPTraf 를 실행하는 것 만으로도 커서키를 통해 선택할 수 있다. 커맨드 라인의 옵션은 좀더 빠르게 해당 기능에 접근하기 위한 방법이라고 보면 된다. 옵션은 아래와 같으므로 참고하길 바란다.



# iptraf -h


Syntax:
    iptraf [ -f ] [ -u ] [ { -i iface | -g | -d iface | -s iface | -z iface |
           -l iface } [ -t timeout ] [ -B ] [ -L logfile ] [-I interval] ] 


Issue the iptraf command with no parameters for menu-driven operation.
These options can also be supplied to the command:


-i iface    - start the IP traffic monitor (use "-i all" for all interfaces)
-g          - start the general interface statistics
-d iface    - start the detailed statistics facility on an interface
-s iface    - start the TCP and UDP monitor on an interface
-z iface    - shows the packet size counts on an interface
-l iface    - start the LAN station monitor ("-l all" for all LAN interfaces)
-B          - run in background (use only with one of the above parameters)
-t timeout  - when used with one of the above parameters, tells
              the facility to run only for the specified number of
              minutes (timeout)
-L logfile  - specifies an alternate log file for any direct invocation
              of a facility from the command line.  The log is placed in
              /var/log/iptraf if path is not specified.
-I interval - specifies the log interval for all facilities except the IP
              traffic monitor.  Value is in minutes.
-f          - clear all locks and counters.  Use with great caution.
              Normally used to recover from an abnormal termination.


-u          - allow use of unsupported interfaces as ethernet devices.
IPTraf 3.0.0 Copyright (c) Gerard Paul Java 1997-2004









[참고]
1. IPTraf
http://iptraf.seul.org/

2012년 5월 2일 수요일

*NIX 콘솔 기반 네트워크 사용량 표시 도구 - nload

현재 네트워크 사용량을 표시해주는 nload 를 소개한다. 사실 너무나도 많은 도구들이 있는데, 그래도 이런 형태의 도구는 있다고 알아두면 좋기 때문에 이름만은 기억해 두자. 'nload' 는 콘솔 기반의 프로그램으로 실시간으로 네트워크 상태를 표시해 준다. 아스키 형태의 그래프로도 말이다.


크게 Incoming/Outgoing 으로 화면이 나뉘어져 있으며 옵션은 다음과 같다.


nload  [-a period] [-i max_scaling] [-m] [-o max_scaling] [-t interval]
       [-u h|H|b|B|k|K|m|M|g|G] [-U h|H|b|B|k|K|m|M|g|G] [devices]

디바이스가 여러개 있는 경우 -m 으로 한번에 표시할 수 있으며, -t 로 화면의 Refresh 시간을 지정할 수 있다. 기본 값은 500 밀리세컨드 이다. 참고로 만약 100 밀리세컨드 이하로 값을 지정하면 빈번하게 계산해야 하기 때문에 부정확해 질 수도 있다는 점은 알아두길 바란다.

-u 로 트래픽 수치 표현 방법을 지정할 수 있다. 비트, 킬로비트, 메가 비트등의 옵션이 있다.

F2 키를 누르면 옵션 화면이 나타나서 설정 값등을 볼 수 있으며, 이동키를 통해 움직일 수도 있다.

다운로드는 다음 경로에서 가능하다

http://www.roland-riegel.de/nload/

데비안 계열 사용자는 apg-get install nload 로 쉽게 설치할 수 있다.