[Ubuntu][systemd] Ubuntu 16.04環境で、systemd-networkdでbondingが組めない問題。

NetworkUbuntu
Screenshot_2019-04-22 Networkd — Fedora Cloud 0 1 documentation
Networkd — Fedora Cloud 0.1 documentation

Ubuntu 16.04環境にて、ネットワーク設定をsystemd-networkdへ移行しているのですが、bonding設定をするときにハマりました。

確認環境:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.1 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.1 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

確認したときの設定

ファイルを以下のように設定しています。
パスは/etc/systemd/network/になります。
[Link]セクションにて、Jumbo Frameを設定することが出来ます。

[Kind]
Name=enp4s0f0

[Network]
Bond=bond0

[Link]
MTUBytes=9000
[Kind]
Name=enp4s0f0

[Network]
Bond=bond0

[Link]
MTUBytes=9000

ここでbondingのパラメータを設定できます。
Modeについては802.3adbalance-xorを確認しています。
TransmitHashPolicyポリシーは、送信ハッシュポリシーの設定で、xmit_hash_policyに相当するオプションです。
MiiMonのパラメータは、MiiMonitorSec、UpDelaySec、DownDelaySecがあるようです。

[NetDev]
Name=bond0
Kind=bonding

[Bond]
Mode=balance-xor
TransmitHashPolicy=layer2+3
MiiMonitorSec=1s
UpDelaySec=2s
DownDelaySec=8s

BindCarrierはbondingを組むインターフェイスを指定できるようです。

[Match]
Name=bond0

[Network]
BindCarrier=enp4s0f0 enp4s0f1

[Link]
MTUBytes=9000
kometch@ubuntu-virt

ここでbondingに対してのIPアドレスの設定ができるようです。.networkファイルの名称についてはこれでいいのか不明です。

[Match]
Name=bond0

[Network]
DHCP=no
Address=172.16.0.254/24
Gateway=172.16.0.200

確認してみると・・・

これでうまくいくはずなのですが、bondingパラメータを確認すると、以下のようにラウンドロビンのままです。

$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

bond0もno-carrierconfiguringからステータスが変化しないのを確認済みです。

$ networkctl

IDX LINK             TYPE               OPERATIONAL SETUP
1 lo               loopback           carrier     configured
2 enp5s0f0         ether              routable    configured
3 enp4s0f0         ether              degraded    configured
4 enp5s0f1         ether              routable    configured
5 enp4s0f1         ether              degraded    configured
6 bond0            ether              no-carrier  configuring
7 ovs-system       ether              degraded    configured
8 ovsbr0           ether              routable    configured
9 ovsbond0         ether              degraded    configured
10 docker0          ether              no-carrier  configuring
11 vnet0            ether              carrier     configuring
12 vnet1            ether              carrier     configuring

ソースを読めればいいのですが、自分の確認はここまで。
systemd-networkdについてはFedoraやArchだけなのかなぁという感じです。Ubuntu自体もsystemdへの移行が進んでいると言っても部分部分はまだなのかなと言ったところです。
Ubuntu 18.04とかの頃になればもうちょっとsystemdでの設定が本格的になるのかと思います。

https://forum.manjaro.org/t/how-to-create-lacp-802-3ad-bond-using-systemd-networkd/14655
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする

コメント

  1. kometch より:

    SECRET: 0
    PASS: 74be16979710d4c4e7c6647856088456
    書き込みありがとうございます。

    遅くなりまして、申し訳ありません。

    私のほうも確認が漏れておりましたね。おっしゃる通り、Noteとして書いてありますね。
    改めてbond1以降で設定してみようかと思います。

    改めてありがとうございます。

    > リンクの1番目にある通り、bond0は暗黙のbondingでround robinに設定されてしまうようで
    > bond1で書き換えたらbondつかえるようになりました。

  2. 匿名 より:

    SECRET: 0
    PASS: 74be16979710d4c4e7c6647856088456
    リンクの1番目にある通り、bond0は暗黙のbondingでround robinに設定されてしまうようで
    bond1で書き換えたらbondつかえるようになりました。

タイトルとURLをコピーしました