ゲームサーバーと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が1つしかない場合、またはゲームサーバーが複数のCPUを使用できる場合)は、次の場合にカーネルによって直ちに処理される必要があります。パケットがゲームサーバーに到達します。ここで新しい質問をすることができます。おそらく、リアルタイムの優先順位でゲームサーバーを実行すると便利です。