
이더넷 UDP 패킷이 eth0 인터페이스에서 Linux 시스템(Raspberry pi로 가정)에 들어가 시스템의 UART 하드웨어로 파이프된 다음 두 번째 Linux 시스템에서 읽고 eth0 인터페이스로 파이프되는 양방향 통신을 설정하려고 합니다. UDP 패킷으로 센서에 다시 전송되며 그 반대의 경우도 마찬가지입니다.
즉, UDP 패킷을 직렬로 변환하고 다시 UDP로 원활하게 변환하려고 합니다.
PC에서 UDP 패킷을 만들어 두 번째 Linux 시스템에 도달했지만 최종 목적지인 센서에는 도달하지 못했습니다.
구성: PC는 첫 번째 Linux 시스템과 동일한 서브넷에 있으며 브로드캐스트 주소, 포트 33000으로 패킷을 지속적으로 보냅니다.
첫 번째 Linux 시스템에서는 다음 명령을 사용하여 netcat을 사용하여 eth0에서 UART로 데이터를 파이프했습니다.stty -F /dev/ttyS0uart의 전송 속도를 설정한 다음nc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0eth0에서 ttyS0(uart)로 데이터를 파이프합니다. 데이터는 페이로드를 인쇄할 수 있는 두 번째 Linux 시스템으로 성공적으로 전송되었습니다. 그러나 여기서부터 문제가 나타난다.
두 번째 Linux 시스템에서는 첫 번째와 동일한 명령을 사용했습니다.stty -F /dev/ttyS0그리고nc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0. 문제는 패킷이 센서인 최종 목적지에 도달하지 못한다는 것입니다. Wireshark를 사용하여 두 번째 Linux 시스템의 eth0 인터페이스에서 트래픽을 모니터링하고 UDP 패킷이 전송되지 않습니다.
이상하게도 이 구성에서는 PC(포트 33000)의 패킷이 센서에 도달하지 않습니다. 그러나 수신 포트를 10021(두 Linux 시스템 모두에서)로 변경하면 센서의 패킷에 대한 길이 열리고 PC(소프트웨어)에 성공적으로 도달합니다.
서버/클라이언트 역할과 관련이 있을 수 있다고 생각합니다. PC(센서의 특수 소프트웨어를 통해)는 33000에 SYN 패킷을 전송하여 센서와 통신을 시작하고 응답을 기다립니다. 해당 패킷은 센서에 도달하지 않지만 센서는 포트 10021에서 원격 측정 데이터를 전송하고 해당 패킷은 성공적으로 소프트웨어(PC)에 도달합니다.
어떤 통찰력이라도 환영합니다.