hirosanote’s blog

検証環境の構築手順やネットワーク機器のテスト結果、関連する事について記載します。このブログは個人で行っており、所属する会社とは関係ありません。

送信元ポート番号を偶数と奇数の両方を使用する設定

Ubuntu16にApache benchをインストールして負荷をかけると、Ubuntuの送信元IPアドレスに使用される送信元ポートは偶数しか使用しないことに気づきました。

root@ubuntu:~# lsb_release -rd
Description: Ubuntu 16.04.1 LTS
Release: 16.04

f:id:hirosanote:20170821203305p:plain

ソースポートの偶数、奇数を使用して分散するシステムを使用した場合、偶数のみのアクセスとなるため、偏りが発生します。偶数、奇数の両方を使用するためには、ip_local_port_rangeのデフォルト値の設定を変更する必要があります。

変更前:

root@ubuntu:~# /sbin/sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 60999

 

変更するコマンド:

sudo sysctl -w net.ipv4.ip_local_port_range="32768 61000"

変更後:

root@ubuntu:~# /sbin/sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 61000

 変更後のパケットは、以下のようになりました。

f:id:hirosanote:20170821202156p:plain

設定の上限に到達すると、偶数から奇数を使うようになりました。奇数が上限に到達すると、偶数を使います。変更前は、偶数が上限に到達すると、奇数ではなく偶数を使用します。

 設定変更により、送信元ポートが偶数、奇数の両方を使用してテストすることが可能となります。