1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SONiCの動いてるスイッチを単なるL2スイッチとして使う方法

Last updated at Posted at 2022-12-02

はじめに

一日目の記事がやたら重くて申し訳なかったので、軽めの記事を書いてみます。よろしくお願いします。

なお、本記事での実行例はSONiC-VS (仮想スイッチ) masterイメージで実行したものになります。

SONiCは通常L3スイッチ(ルータ)として動作します

起動して、show interface status を表示させると下記のようになっていると思います。

admin@sonic:~$ show int st
  Interface            Lanes    Speed    MTU    FEC           Alias    Vlan    Oper    Admin    Type    Asym PFC
-----------  ---------------  -------  -----  -----  --------------  ------  ------  -------  ------  ----------
  Ethernet0      25,26,27,28      40G   9100     rs    fortyGigE0/0  routed    down       up     N/A         N/A
  Ethernet4      29,30,31,32      40G   9100     rs    fortyGigE0/4  routed    down       up     N/A         N/A
  Ethernet8      33,34,35,36      40G   9100     rs    fortyGigE0/8  routed    down       up     N/A         N/A
 Ethernet12      37,38,39,40      40G   9100     rs   fortyGigE0/12  routed    down       up     N/A         N/A
 Ethernet16      45,46,47,48      40G   9100     rs   fortyGigE0/16  routed    down       up     N/A         N/A

Vlanのカラムがroutedになっていますが、これはポートがL3ルーティングインタフェースだということを意味しています。

L2スイッチとして動かす方法

方法1 ひとつひとつ丹念に処理する

インタフェースにIPアドレスを振っていなければ、下記のような方法でVLANに所属させることでL2ポートとして振る舞うよう挙動を変更できます。

  1. VLANを作成する
  2. L2ポートにしたいインタフェース名を作成したVLANのメンバーにする
    このときuntaggedを指定しておく
  3. インタフェースの数だけ繰り返し

シェルで書くとこんなふうです。

sudo config vlan add 1000
for e in $(show int st|awk "/Ethernet/{print $1}"); do sudo config vlan member add 1000 $e --untagged; done

実行後のshow interface statusの結果はこうなります。

admin@sonic:~$ show int st
  Interface            Lanes    Speed    MTU    FEC           Alias    Vlan    Oper    Admin    Type    Asym PFC
-----------  ---------------  -------  -----  -----  --------------  ------  ------  -------  ------  ----------
  Ethernet0      25,26,27,28      40G   9100     rs    fortyGigE0/0   trunk    down       up     N/A         N/A
  Ethernet4      29,30,31,32      40G   9100     rs    fortyGigE0/4   trunk    down       up     N/A         N/A
  Ethernet8      33,34,35,36      40G   9100     rs    fortyGigE0/8   trunk    down       up     N/A         N/A
 Ethernet12      37,38,39,40      40G   9100     rs   fortyGigE0/12   trunk    down       up     N/A         N/A
 Ethernet16      45,46,47,48      40G   9100     rs   fortyGigE0/16   trunk    down       up     N/A         N/A

Vlanのカラムがtrunkになっているのがわかると思います。

また、shwo vlan briefを実行するとVLANタグが付与されない設定になっていることも確認できます。

admin@sonic:~$ show vlan brief
+-----------+--------------+-------------+----------------+-------------+
|   VLAN ID | IP Address   | Ports       | Port Tagging   | Proxy ARP   |
+===========+==============+=============+================+=============+
|      1000 |              | Ethernet0   | untagged       | disabled    |
|           |              | Ethernet4   | untagged       |             |
|           |              | Ethernet8   | untagged       |             |
|           |              | Ethernet12  | untagged       |             |
|           |              | Ethernet16  | untagged       |             |

うまく動作していることが確認できたら、設定を保存しておきましょう。

sudo config save -y

方法2 L2 Switch mode

実は公式wikiに、設定手順がステップバイステップで解説されています。

先ほど紹介した手順で考慮の足りなかったと思われる部分についても書かれています。
読めばいいと言えばいいのですが、(マルチASICのスイッチだったりdual ToRの場合を省いて)紹介します。

本記事執筆時点の内容を紹介しますが、今後のアップデートで内容が変わることがありますので、正確な手順は公式wikiをご参照いただければと思います。

1.マネジメントポートとホスト名を設定する

スイッチ実機でマネジメントポートに固定IPアドレスを用いる場合の例は下記。

cat <<EOF | sudo config reload /dev/stdin -y
{
    "MGMT_INTERFACE": {
        "eth0|10.3.147.46/23": {
            "gwaddr": "10.3.146.1"
        }
    },
    "DEVICE_METADATA": {
        "localhost": {
            "hostname": "sonic"
        }
    }
}
EOF

SONiC-VSの場合、マネジメントポートのIPアドレスをDHCPで取得するケースがあります。
その場合は下記。

cat <<EOF | sudo config reload /dev/stdin -y
{
    "DEVICE_METADATA": {
        "localhost": {
            "hostname": "sonic"
        }
    }
}
EOF

実際に打ち込んでみるとこうなります。

admin@sonic:~$ cat <<EOF|sudo config reload /dev/stdin -y
> {
>   "DEVICE_METADATA": {
>     "localhost": {
>       "hostname": "sonic"
>     }
>   }
> }
> EOF
Disabling container monitoring ...
Stopping SONiC target ...
Running command: /usr/local/bin/sonic-cfggen  -j /etc/sonic/init_cfg.json  -j /dev/stdin  --write-to-db
Running command: /usr/local/bin/db_migrator.py -o migrate
Running command: /usr/local/bin/sonic-cfggen -d -y /etc/sonic/sonic_version.yml -t /usr/share/sonic/templates/sonic-environment.j2,/etc/sonic/sonic-environment
Restarting SONiC target ...
Enabling container monitoring ...
Reloading Monit configuration ...
Reinitializing monit daemon
admin@sonic:~$ 

2.MACアドレスを設定に書き込む

sudo sonic-cfggen -H --write-to-db

3. L2 Switch modeの設定を見てみる(やらなくてもOK)

-kの後ろに書くのはSKUです。SONiC-VSであればForce10-S6000がdefault skuになります。

sudo sonic-cfggen --preset l2 -p -H -k Force10-S6000

実行するとめっちゃたくさん表示されます。長いので頭の方だけ見せるとこんなふうです。

admin@sonic:~$ sudo sonic-cfggen --preset l2 -p -H -k Force10-S6000
{
    "DEVICE_METADATA": {
        "localhost": {
            "hwsku": "Force10-S6000",
            "platform": "x86_64-kvm_x86_64-r0",
            "mac": "52:54:00:12:01:00"
        }
    },
    "PORT": {
        "Ethernet0": {

4. 設定をCONFIG_DBに読み込ませる

-kの後ろに書くのはSKUです。SONiC-VSであればForce10-S6000がdefault skuになります。

sudo sonic-cfggen --preset l2 -p -H -k Force10-S6000 | sudo config reload /dev/stdin -y

SwSS container is not ready.と言われることがあったら、指示通りconfigコマンドに-fを加えて実行しましょう。

sudo sonic-cfggen --preset l2 -p -H -k Force10-S6000 | sudo config reload /dev/stdin -f -y

5. QoS設定を読み込ませる

sudo config qos reload --no-dynamic-buffer

6. 設定を保存する

sudo config save -y

7. 新しい設定を読み込ませる

sudo config reload -y

ポートスピードの設定 (必要に応じてやってください)

SONiC-VSではやらなくていいと思います。実機の場合は接続先に合わせて変更します。
Ethernet0のポート速度を10Gbpsに設定する例が下記です。

sudo config interface speed Ethernet0 10000

show interface statusで設定変更内容を確認できます。

おわりに

公式wikiの手順が丁寧なので長くなってしまいました。

せっかくSONiCを使ってるのに単なるL2スイッチとして使うことはないんじゃ? と思われるかわかりませんが、そうせざるを得ない場合がありましたらご活用ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?