ネットワーク業務未経験エンジニアがラボでSONiCの設定したり、勉強した話

はじめに

こんにちは、BBSakura NetworksでOCXのバックエンド開発を行っている渡邉です。
今回の記事はOCX開発について…ではなく、
これまでネットワークに関する業務をやっていない人間が石狩ラボに導入したSONiCの設定を行い、ネットワークの勉強をしたことについての記事になります。

簡単に自己紹介をします。

  • エンジニア歴:11年ほど
  • 開発経験:Web系サービスのフロントエンドやバックエンドの開発がキャリアのほとんど。
  • ネットワークに関する知識:学生時代に勉強したぐらい。業務は未経験。

1. 石狩ラボプロジェクトとは

弊社では石狩ラボプロジェクトというプロジェクトがあり、ネットワークに詳しくない人間がネットワークについて学んだり、色々な機器などを試したり、現地のデータセンターで作業したりというプロジェクトです。
もちろん普段の業務でネットワーク関連の業務に従事しているメンバーもいます。
詳しくは以下の記事を参照ください。私もこの記事読んで気軽に参加してみるかと参加しました。
blog.bbsakura.net

プロジェクトに参加したきっかけ

自分は2023年2月に中途入社しました。
それまでの業務に関してはtoC、toBのWebサービスが主流でありネットワーク業務とは無縁でした。
入社して石狩ラボプロジェクトの存在と前述の記事を知り「ネットワーク業務初心者でもこれだけ勉強できる機会があるんだ」と参加したいと思いました。
2023年度の石狩ラボプロジェクト参加募集メンバーの呼びかけに最初ちょっと及び腰でしたが、上長からも「気軽に勉強してください!」と後押ししてもらい今年度からメンバーとして参加することとなりました。

実際に参加して

とはいえ、本業である開発業務もあるため石狩ラボプロジェクトには兼任での参加となります。
今回のプロジェクトでの自分の担当業務は

  1. ラボ機器のログ保存の期間や、保存場所などログに関することを考える。
  2. ラボに新たに導入するスイッチのNOSであるSONiCの本番configの設定を用意する。

の2つでした。1に関しては絶賛現在も対応中です。
本業側の優先度がどうしても高く多忙な時期は打ち合わせに参加できなかったり、割り振られたタスクが消化できず、といった状況になりました。
そんな中メンバーの一人が「1週間に1日2時間ほど、石狩のことだけ黙々とやる日を作りましょう」と枠を設けてくれて、自分も積極的にできる限り参加しラボの業務もこなせていきました。

前置きがとても長くなりましたが、今回はタイトルの通り2について記事にできればと思います。

2. 実際に行った作業

さて、何度もお伝えしている通りネットワークのことは本当に何も知りません。
設計の話を聞いていて「VLAN」というワードが出てきて「VLANってなんですか?」
ネットワーク機器のメーカーにヤマハがあるという話を聞いて「ヤマハって楽器とバイク以外も作ってるんですか…?」
「SONiC(ソニック)」ってあの人気キャラのことですか・・・?
CUIの操作も久々だったため、「そもそもネットワーク機器の設定はどこに入れれば良いんだ」というレベルです。

ここからはそんな私が現地で作業するまでに行った作業と、現地で行った作業についてお話できればと思います。

現地に行くまでに実施した作業

  • CML2上で事前検証

    • まずSONiCの設定を設計するにあたりCML2を利用し、想定される設定の事前検証を行います。
      ネットワークに詳しいメンバーに基礎的なことから教えてもらい、設計を元に設定作業を進めます。
      設定を進めつつ、実機に合わせて想定と異なっていた箇所は合わせて修正していきます。
  • スイッチにSSH接続するためのkeyの投入準備

    • 次にスイッチに対してSSH接続を行えるように、各メンバーのKeyを設定するscriptの準備を行います。
      これは必須ではないのですが、メンバーが増えていけば自ずとKeyの設定作業が負荷となっていくため、 早い段階でこういったscriptを用意して、今後の運用コストを少しでも減らします。

この段階までにネットワークにおける基本的な用語(一部)やCML2というツールの使い方、ネットワーク機器の設定周りについて学びました。

ここで、私が石狩に行くにあたりどういった作業をするのか石狩ラボのトポロジをお見せします。

2台のRTX1300とCiscoCatalyst3560-CGが接続されている。CiscoCatalyst3560-CGと4台のDell R450が接続されている。CiscoCatalyst3560-CGがリプレイス対象
リプレイス前
2台のRTX1300とDell S5248F-ONが接続されている。Dell S5248F-ONと4台のDell R450、2台のDell R650が接続されている。CiscoCatalyst3560-CGをDell S5248F-ON(SONiC)にリプレイスした
リプレイス後
※厳密にはもう少し複雑な構成となっています。
今回の目的は昨年の初期構築で設置する予定だったDellのスイッチを設置する対応となります。

現地で実施した作業

  • 既存スイッチの取り外し&新スイッチの設置
    • まず取替対象の既存スイッチをラックから取り外します。
    • 新しくラックに入れるスイッチの中身を開けNICの差し替えを行います。
      • 部品が固かったり、ちょっと力を入れると壊れてしまうのでは?という怖さを感じつつ、差し替え作業とラックにスイッチを戻す作業を行います。
  • スイッチにLANケーブルを挿す
    • 次に各ポートに対して、事前の設計通りLANケーブルを挿していきます。本数がそこそこあるため間違えないように目印を見ながら挿していきます。
  • 準備したconfigの投入
    • ここまでで物理作業が概ね終わっているのでここから事前作業で用意したconfigを投入していきます。
    • 投入作業自体は他のメンバーが進めていくので、自分はそれを後ろから見守ります。
  • configのdump取得と復旧手順の用意
    • ここまで順調に設定を行ってますが、何かしらの原因でconfigが消失した場合に備えてdumpの取得と復旧手順を確立させる必要があります。
    • この作業が自分としては一番自らできた箇所かなと思っています。
// SONiCのconfigのバックアップを取得するコマンドを実行する。
~$ cd /host/
/host$ sudo config-setup backup

// 実機の設定のバックアップが取れる
/host$ ls | grep old_config
old_config

// バックアップが取れていることを確認
/host$ cd old_config
/host/old_config$ ls
asic_config_checksum             config-migration-post-hooks.d  core_analyzer.rc.json    hw_resources        sonic-config.tar
ccd_mgmt_sock                    config-migration-pre-hooks.d   docker_limits.json       init_cfg.json       sonic-environment
cert                             constants.yml                  frr                      licenses            sonic_version.yml
config_db.json                   copp_config.json               generated_services.conf  snmp.yml            updategraph.conf
config_db_version_registry.json  copp_feat_trap.json            hamd                     sonic_branding.yml
/host/old_config$ cd frr
/host/old_config/frr$ cat ospfd.conf
~設定なのでここでは省略。投入した設定になっていることを確認~

// old_configをローカルにコピー
# root
scp -r /host/old_config {user}@N.N.N.N:/home/{user}/tmp
# Local
scp -r {user}@N.N.N.N:/home/{user}/tmp/old_config /Users/{user_name}/{bk_dir}
# GitPush
~手順は省略しますが取得したバックアップをGit上で保存~

// old_configの取り込みを行い、正しくバックアップできているか確認
~$ sudo config-setup boot
  • SSH接続用のkeyの投入、疎通確認
    • 本来の予定では事前に作成したscriptでKey設定する予定だったのですが、script内のKey設定部分抜き出し直接設定。
    • 設定したことをメンバーに連絡し、SSH接続できることを確認しました。
  • 想定外のトラブル
    • 機器側のポート番号や用意したケーブルタグを目印にしてLANケーブルを挿していたと思ったらPortの番号を見間違えてケーブルを挿し間違える
    • NICを差し替えて、LANケーブルを設計通り挿したら疎通が通らない事象が発生
      原因はNICの挿す向きでPortの上下が入れ替わり、左から見ると2,1になっていた。
      よく見るとうっすらと上下逆さまに「2」と「1」の刻印が…(画像で見せたいのですが、DCは撮影NGにつきご容赦ください)
    • 一方で「1」と書かれた穴にLANケーブルを挿してPort1に挿したな、ヨシ!と思ったらPort1じゃないということもありました。

その他にもいくつかトラブルがあったのですがそれは別の機会があれば記事にできればと思います。

現地作業でデータセンターの雰囲気や実際のラックがどうなっているか、機器の構成などネットワークの物理的な内容について学ぶことができました。

終わりに

今回私が学んだことを列挙して、終わりたいと思います。

  • tag vlanとは一つのポートで複数のポートを仮想的に持たせる技術である。
  • port vlanとは一群のポートを仮想的に分割し、複数ドメイン持たせる技術である。
  • ヤマハはネットワーク機器も作ってる。
  • SONiCはネットワーク機器におけるOS(NOS)。
  • シミュレーションと実機の設定では必ず違いが出る。
  • ケーブル挿すときは刻印をよく確認する。けど刻印が正しいとは限らない。

ネットワークの知識レベルが1だったのが、今回の石狩ラボプロジェクトで5ぐらいにはレベルアップできたような気がします。