게임 서버와 Rails 서버를 실행하는 Google Cloud에서 호스팅하는 Debian 7 서버가 있습니다.
Rails 서버는 포트 80에서 실행되고 게임 서버는 포트 8000에서 실행됩니다.
지연 시간을 최소화하기 위해 게임 서버 패킷의 우선 순위를 높게 지정하는 네트워크 규칙을 적용하고 싶습니다.
이제 이것이 iptables
도움이 된다는 것을 알았습니다.
iptables -A PREROUTING -t mangle -p tcp --dport 8000:8010 -j TOS --set-tos Minimize-Delay
하지만 내 규칙이 추가되었는지 확인하면 다음과 같습니다.
iptables -L -vt nat
Chain PREROUTING (policy ACCEPT 877 packets, 100K bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 877 packets, 100K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 329 packets, 20395 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 329 packets, 20395 bytes)
pkts bytes target prot opt in out source destination
내 규칙이 표시되지 않습니다. 내가 뭘 잘못했나요? 그리고, 이것이 내가 하고 싶은 일을 하는 올바른 방법인가?
답변1
iptables -t mangle -A PREROUTING -p tcp --dport 8000:8010 -j TOS --set-tos Minimize-Delay
iptables -t nat -L -v
매개변수 순서를 변경하면 매우 분명해집니다. 이것이 당신의 명령입니다. 이제 mangle
한 테이블이 수정되고( ) nat
다른 테이블( )이 보이는 것이 분명해졌습니다 . 따라서 list 명령이 변경 사항을 표시하지 않는 것은 놀라운 일이 아닙니다.
그러나 나는 이것이 진정한 변화로 이어질 것이라고 기대하지 않습니다. 아마도 오늘날의 라우터가 이것을 전혀 따르고 있는지 조사해야 할 것입니다.
게임 서버에서 들어오는 패킷이 있는 경우 트래픽 조절을 사용하여 Rails 서버에서 들어오는 패킷을 지연시키는 것을 고려할 수 있습니다. 그러나 시스템은 아마도 매우 빠른 인터페이스를 가지고 있으므로 이것이 큰 영향을 미치지 않을 것입니다.
무엇이 도움이 될 수 있습니까? 그러나 이것이 가능한지, 어떻게 가능한지는 모르겠습니다. Rails 서버(현재 실행 중이고 가상 CPU가 하나만 있거나 게임 서버가 여러 CPU를 사용할 수 있는 경우)는 다음과 같은 경우 커널에 의해 즉시 처리되어야 합니다. 패킷이 게임 서버에 도달합니다. 여기서 새로운 질문을 할 수 있습니다. 어쩌면 실시간 우선순위로 게임 서버를 실행하는 것이 도움이 될 수도 있습니다.