IPv6 MTU 문제
안녕하세요. 혼자 해결해보려다 시간만 끌어서 이렇게 질문해 봅니다.
설정된 MTU보다 큰 패킷이 들어오면 처리를 하지 않는 네트워크 드라이버도 있는지요?
테스트 환경은 아래와 같습니다. 두 시스템 모두 IPv6 주소를 사용합니다.
노트북(페도라) : MTU 1500
저희 장비(port 4개) : MTU 1280 (ifconfig eth0 mtu 1280)으로 설정한 후
(커널 2.6.15, 네트워크 드라이버 : sk98lin)
노트북에서
#ping6 -s 1500 장비IP
이렇게 실행하면 reply가 오지 않습니다.
그리고 장비에서 tcpdump로 패킷을 확인하면
***** tcpdump result ****
16:55:57.201543 3ffe:501:ffff:100::10 > 3ffe:501:ffff:100::20: frag (1448|60)
16:55:58.211133 3ffe:501:ffff:100::10 > 3ffe:501:ffff:100::20: frag (1448|60)
16:55:59.211167 3ffe:501:ffff:100::10 > 3ffe:501:ffff:100::20: frag (1448|60)
16:56:00.211188 3ffe:501:ffff:100::10 > 3ffe:501:ffff:100::20: frag (1448|60)
**********
이렇게만 옵니다. 즉 그 앞에 fragment된 icmp6 echo request(0|1448) 패킷이 올라오지가 않습니다.
그렇다고 해서 drop된 것 같지도 않습니다.
ifconfig로 장비의 eth0 부분을 보면 아래와 같이 drop된 패킷도 없습니다.
*********************************
UP BROADCAST RUNNING MULTICAST MTU:1280 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6822 (6.6 KiB) TX bytes:382 (382.0 b)
Interrupt:10 Memory:d8320000-0
***********************************
이럴 경우 뭐가 문제일까요? 네트워크 드라이버에서 설정된 MTU보다 크거나 같은 패킷이 들어오면 처리를 잘하지 못하는 것일까요?
커널 버전도 다르고 (더 낮은 것도) 네트워크 인터페이스도 다른 장비로도 테스트 해 봤는데 다른 데서는 별 문제가 없네요...ㅜㅜ
뭐가 문제일까요? 이런 경우 있으셨나요?
이런경우의 대부분 문제는...
혹시 IPv6 Multicast 프로토콜에는 문제가 없음을 확인하셨는지요. 패킷 드롭도 않되고 그런걸 보면, IPv6 네이버링 즉 IPv4에서의 ARP같은 것이 완료되지 않았을 문제가 있을거 같아요. 두 IPv6 호스트간의 IPv6 관련 모든 프로토콜을 봐야 알수 있을 문제 같군요.
MTU 관련
먼저 답변해주셔서 감사합니다. ^^
그런데 테스트 해보니 IPv6뿐만 아니라 IPv4에서도 같은 문제네요...
MTU가 1280일 때 그보다 더 큰 패킷이 들어오니 패킷이 truncate되어서 들어옵니다.
sk98lin(sky2 드라이버도 되는데 이도 역시 같은 문제 발생) 드라이버를 사용하고 있는데, 네트워크 개발자에게 메일을 보내봤는데 하드웨어가 자기 버퍼보다 큰 패킷을 받으면 hang이 걸리기 때문에 truncate register를 둬서 패킷을 자른 후 upper layer로 올린답니다. 그래니 커널이 이 패킷을 처리못하는 거 같고요... 하드웨어 문제라 수정할 수 없는건지 아니면 드라이버를 그렇게 구현해 놓아서 그런건지...드라이버를 수정할 수는 없는지 다시 메일을 보냈는데 아직 답변이 없네요...
유독 이 드라이버만 그렇네요....같은 회사 (Marvell? SysKonnect?)의 다른 네트워크 인터페이스는 skge 드라이버를 사용하니 그런 문제가 없는데 말이죠...
sky2.c 라는 소스를 보면 잘은 모르겠지만 oversize패킷에 대해서 truncate처리 하는 것 같습니다.
흐....방법이 없나....
답답하네요...이걸 빨리 처리해야 하는데...
다른 대부분의 네트워크 드라이버는 mtu가 1280일 때 큰 패킷이 들어와도 잘 처리하는데....
ㅜㅜ
댓글 달기