커널 2.4.24에서 작업중입니다.
네트웍 인터페이스가 총 5개 입니다(eth0~4)
eth0에서 받은 패킷을 조사 하여 목적지가 현재 머신이면 그대로 네트워크 스택을 타고 그렇지 않으면
eth1,eth2,eth3중의 하나를 선택하여 알고 있는 MAC주소로 바로 전송을 하려고 합니다.
(eth1,eth2,eth3과 연결되어 있는 머신의 NIC의 MAC주소는 알고 있습니다.)
netif_rx()내부에서 패킷을 분류하고 바로 dev_queue_xmit()을 호출하면 될것 같아서
여러번 시도를 해봤는데 패킷이 전송이 되지 않습니다.
Muti Thread형태의 서버를 만들고 있는 중인데요..
하루정도 서버를 돌리다보면 갑자기 30~200초정도 서버가 멈추는 경우가 생기더라구요. 그래서 열심히 로그를 남겨봤더니만.. send함수를 전후로 그런 딜레이가 생기더군요.
setsockopt으로 tcp_nodelay를 주는데 왜 그렇게 딜레이가 생기는지 모르겠습니다 ㅠ.ㅠ
보낼 때 생기는 errno 는 32(EPIPE-BROCKEN PIPE)였습니다.
혹시라도 쓰레드관련해서 소켓에 문제가 생긴게 아닐까 하고 찾아보는 중인데 답이 잘 안나옵니다;