- 이더넷 인터페이스 기능 중에 TOE(TCP offload engine)가 있음
- TOE는 NIC(Network Interface Cards)에서 사용되는 기술로, 보통 운영체제 상에서 처리되는 TCP/IP 스택을 네트워크 컨트롤러로 내려서 처리
- 네트워크 처리가 크게 필요한 기가비트나 10G 기가비트같은 고속네트워크에서 유용하게 사용
- 처음 TCP는 저속의 네트워크 속도에서 이용되었는데, 지금의 통신속도와 비교해 보면 통신속도는 크게 증가
- 시스템에서 동작할 수 있는 여유자원은 상당히 제한적
TCP 프로토콜을 처리하는데 있어서 오버헤드를 가져오는 요소
- 3 way 핸드쉐이크 과정을 통한 연결
- 체크섬, 시퀀스 넘버 계산
- Packet acknowledgement 와 congestion 제어를 위한 슬라이딩 윈도우 계산
- 연결 해제
TCP 프로토콜의 오버헤드 기능을 전용 하드웨어 구현 → TCP offload engine
- CPU 는 다른 작업을 할 수 있도록 여유를 줌
- 과거에는 몇몇 제한적인 NIC 만이 TOE 를 지원하였지만 지금은 대부분 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 하드웨어를 지원 X
- 패치를 통해서 가능하지만, 커널상에서 직접 지원 X
- 참고 자료 : https://wiki.linuxfoundation.org/networking/toe
- 커널상에서 직접 지원하지 않는 이유
- 보안적 이슈 → TOE 펌웨어는 소스가 공개되어 있지 않아, 보안적으로 문제가 발생할 경우 해결할 방법이 없음
- 복잡성도 증가
- 하드웨어적인 여러 제약 발생
참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hymne&logNo=220945826028
'Network(네트워크)' 카테고리의 다른 글
Network Ring Buffer Size 설정하기 (0) | 2022.06.26 |
---|---|
TCP Retransmission와 RTO(Retransmission Timeout)& RTT(Round Trip Time) (0) | 2022.06.26 |
점보프레임(Jumbo Frame)으로 전송속도 높이기(MTU 9000)메타 데이터의 끝으로 건너뛰기 (0) | 2022.06.26 |
패킷사이즈가 MTU 1500 바이트를 넘는 경우 -> TOE 기능 ON (0) | 2022.06.26 |
패킷 전송 크기를 지정하는 MTU(Maximum Transmission Unit) (0) | 2022.06.26 |