Presentation is loading. Please wait.

Presentation is loading. Please wait.

Session 25: Netlink Sockets 문준혁. Index What are netlink sockets? Opening a netlink socket –Family Netlink messages –nlmsg_type –nlmsg_flags Lab.

Similar presentations


Presentation on theme: "Session 25: Netlink Sockets 문준혁. Index What are netlink sockets? Opening a netlink socket –Family Netlink messages –nlmsg_type –nlmsg_flags Lab."— Presentation transcript:

1 Session 25: Netlink Sockets 문준혁

2 Index What are netlink sockets? Opening a netlink socket –Family Netlink messages –nlmsg_type –nlmsg_flags Lab

3 What are netlink sockets? Kernel 과 user space 사이의 통신 방법 여러 프로세스 그룹으로 멀티캐스트 전송이 가능 Network system 관리와 모니터링에 사용 –Ex) firewalls 와 routing 의 제어 전송하는 Message 들은 UDP 와 같은 datagrams. –UDP : 신뢰할 수 없는 protocol –Message 가 전달 될 수 없다면 drop 된다. Message 는 byte stream 으로 구성되어 있으며, header 들과 datapayload 를 포함한다.

4 Opening a netlink socket #include Netlink_socket = socket (PF_NETLINK, type, family); struct sockaddr_nl { sa_family_t nl_family; /* AF_NETLINK */ unsigned shortnl_pad; /* zero*/ pid_t nl_pid; /* process pid */ _u32nl_groups; /* multicast groups mask */ };

5 Family Description NETLINK_ROUTE Routing packet 들을 받거나 routing table 을 수정 (IPV4) NETLINK_SKIP Enskip 를 예약 NETLINK_USERSOCK 앞으로 사용할 User space protocol 들을 예약 NETLINK_FIREWALL Firewall code 를 위한 packet 들을 받음 (IPV4) NETLINK_TCPDIAG TCP socket 들을 monitoring 하기 위함 NETLINK_NFLOG Netfilter 와 iptable 들을 logging 하기 위함 NETLINK_ARPD ARP table 을 운영 (Address Resolution Protocol) NETLINK_ROUTE6 Routing packet 들을 받거나 routing table 을 수정 (IPV6) NETLINK_IP6_FW Firewall code 를 위한 packet 들을 받음 (IPV6) NETLINK_DNRTMSGDecnet routing messages

6 Netlink messages Netlink message 는 nlsmghdr data structure 로 설명됨 Struct nlmsghdr { _u32nlmsg_len;/*Length of message including header*/ _u16nlmsg_type;/*Message content*/ _u16nlmsg_flags;/*Additional flags*/ _u32nlmsg_seq;/*Sequence number*/ _u32nlmsg_pid;/*Sending process PID*/ }; Struct nlmsgerr { interror; struct nlmsghdrmsg; };

7 nlmsg_type Message TypeDescription NLMSG_NOOP Message 를 무시함 NLMSG_ERROR Error message 신호 NLMSG_DONE Message 가 Multipart message 의 종료 NLMSG_OVERRU N Data 손실 신호

8 nlmsg_flags #define NLM_F_REQUEST 1 /* 요청 메시지 */ #define NLM_F_MULTI 2 /*multipart 메시지, NLMSG_DONE 에 의해 종료 */ #define NLM_F_ACK 4 /*ack, zero, error code 와 함께 응답 */ #define NLM_F_ECHO 8 /*Echo this request*/ /*Modifiers to GET request*/ #define NLM_F_ROOT0x100 /*tree root 명시 */ #define NLM_F_MATCH0x200 /* 모든 matching 반환 */ #define NLM_F_ATOMIC0x400 /*atomic GET*/ #define NLM_F_DUMP(NLM_F_ROOT | NLM_F_MATCH) /*Modifiers to NEW request*/ #define NLM_F_REPLACE0x100 /* 존재하는 것을 무시 */ #define NLM_F_EXCL0x200 /* 존재하는 경우 그대로 둠 */ #define NLM_F_CREATE0x400 /* 존재하지 않는 경우 생성 */ #define NLM_F_APPEND0x800 /* 리스트의 끝에 추가 */

9 Lab Lab 2 : Using Netlink to send kernel messages to an application


Download ppt "Session 25: Netlink Sockets 문준혁. Index What are netlink sockets? Opening a netlink socket –Family Netlink messages –nlmsg_type –nlmsg_flags Lab."

Similar presentations


Ads by Google