lwIP(lightweight IP)는 임베디드 시스템에서 널리 사용되는 오픈 소스 TCP/IP 스택이다. lwIP는 스웨덴 컴퓨터 과학 연구소 (Swedish Institute of Computer Science)의 Adam Dunkels 에 의해 처음 개발되었으며 현재는 전 세계 개발자 네트워크에 의해 개발 및 유지 관리되고 있다.

lwIP
원저자Adam Dunkels
개발자lwIP developers group
안정화 버전
2.1.2 / 2018년 12월 22일(5년 전)(2018-12-22)
저장소
프로그래밍 언어C
운영 체제다수
플랫폼임베디드 시스템
종류IP 스택
라이선스Modified BSD license
웹사이트savannah.nongnu.org/projects/lwip/

lwIP는 많은 임베디드 시스템 제조업체에서 사용한다. 예로 알테라 (니오스 II 운영체제), 아날로그 디바이스 (블랙 핀 DSP의 칩),[1] 자일링스,[2] 하니웰 (FAA 인증 항법 시스템의 일부)과 프리 스케일 세미컨덕터 (자동차 마이크로 컨트롤러용 이더넷 스트리밍 SW)가 있다.

lwIP 네트워크 스택 편집

lwIP 네트워크 스택 구현의 초점은 풀 스케일 TCP 스택을 사용하면서도 리소스 사용을 줄이는 것이다.[3] 따라서 lwIP는 수십 킬로바이트의 여유 RAM과 코드를 위한 약 40킬로바이트 이상의 ROM이 있는 임베디드 시스템에서 사용하기에 적합하다.

lwIP 프로토콜 구현 편집

TCP/IP 스택 외에도 lwIP에는 네트워크 인터페이스, 운영 체제 에뮬레이션 계층, 버퍼 및 메모리 관리 섹션과 같은 몇 가지 중요한 부분이 있다. 운영 체제 에뮬레이션 계층과 네트워크 인터페이스를 통해 lwIP 모듈과 운영 체제 커널 간에 공통 인터페이스를 제공하므로 lwIP 모듈을 운영 체제에 이식 할 때 lwIP의 네트워크 스택이 제대로 작동 할 수 있다.[3]

인터넷 계층에서 lwIP의 네트워크 스택에는 여러 네트워크 인터페이스를 통한 패킷 전달을 처리할 수 있는 IP (Internet Protocol) 구현이 포함된다.[3] IPv4IPv6 모두 lwIP v2.0.0부터 듀얼 스택을 지원한다. 네트워크의 유지 보수 및 디버깅을 위해 lwIP는 구현 ICMP (인터넷 제어 메시지 프로토콜)을 도입한다.[3] IGMP (Internet Group Management Protocol)는 멀티 캐스트 트래픽 관리를 지원한다. MLD를 포함한 ICMPv6은 IPv6 사용을 지원하기 위해 구현된다.

데이터 링크 계층에서 이더넷용 lwIP의 인터넷 프로토콜 (IP)을 지원하려면 IPv4 ARP (Address Resolution Protocol) 구현이 필요하며 IPv6 Neighbor Discovery Protocol이 필요하다. lwIP는 데이터 링크 계층에서 PPP (Point-to-Point Protocol) 구현 위에서 작동 될 수도 있다. 전송 계층에서 lwIP는 혼잡 제어, RTT 추정 및 빠른 복구/ 빠른 재전송을 사용하여 TCP (전송 제어 프로토콜)를 구현한다.[3] UDP (사용자 데이터그램 프로토콜)는 실험적인 UDP-Lite 확장으로 구현된다.

API 및 소켓 편집

lwIP는 향상된 네트워크 스택 성능을 위한 특수한 no-copy API (Application Programming Interface)를 제공한다. 버클리 소켓 API는 선택 사항이다.[3] 원시 소켓 또는 원시 pcb는 사용된 API에 따라 제공된다.[4]

응용 계층 지원 편집

응용 계층에서 lwIP 네트워크 스택은 다음 프로토콜의 구현을 통해 지원 될 수 있다. 개인 MIB ( 관리 정보 기반 원 및 MIB 컴파일러가있는 v1, v2 또는 v3의 SNMP (단순 네트워크 관리 프로토콜) 에이전트, DNS (Domain Name System)가 지원된다.

lwIP TCP/IP 스택을 구현하는 운영 체제는 응용 계층에서 IPv4 DHCP (동적 호스트 구성 프로토콜) 클라이언트 또는 IPv4 링크-로컬 주소 (일명. 자동 IP)와 같은 다양한 지원 클라이언트 및 서버를 제공 할 수 있다. 특수화 된 원시 API 응용 프로그램에는 HTTP 서버, SNTP 클라이언트, SMTP 클라이언트, NetBIOS 네임 서버, mDNS 응답자, MQTT 클라이언트 및 TFTP 서버가 포함된다.

OS 구현 편집

lwIP는 ReactOS와 Genode[5]에서 네트워크 스택으로 사용되며 MinixGNU Hurd에서 네트워크 서버를 구현하는 데 사용할 수 있다.

관련 문서 편집

  • 마이크로 IP ( uIP )

참고 문헌 편집

외부 링크 편집