シナプスの技術部ネットワーク課の末吉と申します。
はじめに
Arista Networksが販売しているネットワーク機器ではEOSというOSが稼働しているようです。EOSの検証用OSを提供していると見かけたため、どのような使用感なのか試してみました。
EOSについて
EOS(Extensible Operating System)はArista Networksが販売しているネットワーク機器で稼働しているOS。保守期間は36ヶ月で毎年2バージョンリリースしている様子。今回はEOSを検証用としてdockerで動かせるcEOS-labを利用します。 www.arista.com
cEOSダウンロード
アカウント登録
cEOSをダウンロードするにはアカウントの登録が必要になるためAristaのHPにアクセスしアカウント登録します Data-Driven Cloud Networking - Arista
Need a User Accountをクリック
必要な項目に入力し、Registerをクリック
Choose User Role は Guestを選択し送信
アカウントが仮登録されます。アカウント登録で入力したメールアドレス宛に送信されたメール本文の認証URLをクリック
認証URLをクリックすると、以下のように表示されアカウント登録が完了します
cEOSダウンロード
登録したアカウントでログイン後 Software Downloadをクリック
ダウンロードするcEOSをクリックしダウンロード
今回は最新版のcEOS-lab-4.30.1F.tar.xzをダウンロードしました。cEOS-lab-README-generic.txtはdockerでの起動方法が記載されていますので合わせてダウンロードします
cEOS起動
cEOS-lab-README-generic.txtを参考に実施していきます。
環境
以下の環境で実施しました。
KVM仮想サーバ OS: CentOS Linux release 7.9.2009 (Core) docker: Docker version 24.0.4, build 3713ee1
Dockerにimageを登録
# docker import cEOS64-lab-4.30.1F.tar.xz ceos-image:4.30.1F
コンテナ作成
- ceos1
# docker create \ --name=ceos1 \ --privileged \ -e INTFTYPE=eth \ -e ETBA=1 \ -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \ -e CEOS=1 \ -e EOS_PLATFORM=ceoslab \ -e container=docker \ -i -t ceos-image:4.30.1F /sbin/init \ systemd.setenv=INTFTYPE=eth \ systemd.setenv=ETBA=1 \ systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \ systemd.setenv=CEOS=1 \ systemd.setenv=EOS_PLATFORM=ceoslab \ systemd.setenv=container=docker
- ceos2
# docker create \ --name=ceos2 \ --privileged \ -e INTFTYPE=eth \ -e ETBA=1 \ -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \ -e CEOS=1 \ -e EOS_PLATFORM=ceoslab \ -e container=docker \ -i -t ceos-image:4.30.1F /sbin/init \ systemd.setenv=INTFTYPE=eth \ systemd.setenv=ETBA=1 \ systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \ systemd.setenv=CEOS=1 \ systemd.setenv=EOS_PLATFORM=ceoslab \ systemd.setenv=container=docker
Network作成
# docker network create net1 # docker network create net2
Netwrok接続
# docker network connect net1 ceos1 # docker network connect net1 ceos2 # docker network connect net2 ceos1 # docker network connect net2 ceos2
起動
# docker start ceos1 # docker start ceos2
コンテナに接続
# docker exec -i -t ceos1 Cli # docker exec -i -t ceos2 Cli
起動直後だと以下のログが出力されて接続できないことがありました。起動してから5分程度まつと接続できました。
# docker exec -it ceos1 Cli OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "Cli": executable file not found in $PATH: unknown
ネットワーク確認
ネットワーク確認のコマンドを実行するとstatusが「unknown」と表示され、起動した二つのコンテナ同士で疎通が取れない状態でした。
- 検証環境での「show interfaces status」の結果
>show interfaces status Port Name Status Vlan Duplex Speed Type Flags Encapsulation Et1 unknown 1 unconf unconf Unknown Et2 unknown 1 unconf unconf Unknown
- cEOS-lab-README-generic.txtに記載してある「show interfaces status」の結果
#show interfaces status Port Name Status Vlan Duplex Speed Type Flags Et1 connected 1 full unconf EbraTestPhyPort Et2 connected 1 full unconf EbraTestPhyPort
cEOS-labバージョン変更、dockerを起動させるホストOSの変更など、他のWebサイトを参考にしたりと色々試してみたのですが、ネットワーク状態を改善することはできませんでした。。
試してみる
ネットワーク疎通の改善できませんでしたが、OS自体は起動したので少し触ってみます。
コンテナ接続
# docker exec -i -t ceos1 Cli 6594fd0f264b>
cEOS-lab-README-generic.txtではコンテナに接続した際にホスト名が「localhost」と表示されるような記載があるのですがランダムな文字列でした。
enable
6594fd0f264b>enable 6594fd0f264b#
show version
6594fd0f264b#show version Arista cEOSLab Hardware version: Serial number: E7CB914665C1835ABF389A4C66137A5A Hardware MAC address: 0242.ac20.996c System MAC address: 0242.ac20.996c Software image version: 4.30.1F-32308478.4301F (engineering build) Architecture: x86_64 Internal build version: 4.30.1F-32308478.4301F Internal build ID: 43258559-02df-4fe8-9912-d332778f86da Image format version: 1.0 Image optimization: None cEOS tools version: (unknown) Kernel version: 3.10.0-1160.92.1.el7.x86_64 Uptime: 5 minutes Total memory: 8173276 kB Free memory: 6310200 kB
cEOS tools versionが「unknown」となっていました。
show running-config
6594fd0f264b#show running-config ! Command: show running-config ! device: 6594fd0f264b (cEOSLab, EOS-4.30.1F-32308478.4301F (engineering build)) ! no aaa root ! transceiver qsfp default-mode 4x10G ! service routing protocols model multi-agent ! agent PowerManager shutdown agent LedPolicy shutdown agent Thermostat shutdown agent PowerFuse shutdown agent StandbyCpld shutdown agent LicenseManager shutdown ! hostname 6594fd0f264b ! spanning-tree mode mstp ! system l1 unsupported speed action error unsupported error-correction action error ! interface Ethernet1 ! interface Ethernet2 ! no ip routing ! end
ホスト名変更
ホスト名変更を実施してみました。設定を投入すると即反映されCiscoと同じ感覚でできるようでした。
6594fd0f264b#configure terminal 6594fd0f264b(config)#hostname ceos1 ceos1(config)#
IPアドレス設定
IPアドレスを設定してみます。
ceos1#configure terminal ceos1(config)#interface ethernet 1 ceos1(config-if-Et1)#ip address 192.168.0.1 255.255.255.0
コンフィグレーションモードでshowコマンドが実行できる便利なdoコマンドが使えるか試してみたところ、以下の通り問題なく使えるようでした。
ceos1(config-if-Et1)#do show interface ethernet 1 Ethernet1 is down, line protocol is unknown (notconnect) Hardware is Ethernet, address is 0000.0000.0000 (bia 0242.ac14.0002) IP MTU 9214 bytes (default) Unconfigured, Unconfigured, auto negotiation: off, uni-link: n/a Loopback Mode : None 0 link status changes since last clear Last clearing of "show interface" counters never 5 minutes input rate 0 bps (- with framing overhead), 0 packets/sec 5 minutes output rate 0 bps (- with framing overhead), 0 packets/sec 0 packets input, 0 bytes Received 0 broadcasts, 0 multicast 0 runts, 0 giants 0 input errors, 0 CRC, 0 alignment, 0 symbol, 0 input discards 0 PAUSE input 0 packets output, 0 bytes Sent 0 broadcasts, 0 multicast 0 output errors, 0 collisions 0 late collision, 0 deferred, 0 output discards 0 PAUSE output
他のスタッフから指摘を受けて気付きましたが、doコマンドを使わなくでもshowコマンドが使えるようでした。
ceos1(config)#show interface ethernet 1 Ethernet1 is down, line protocol is unknown (notconnect) Hardware is Ethernet, address is 0000.0000.0000 (bia 0242.ac12.0002) IP MTU 9214 bytes (default) Unconfigured, Unconfigured, auto negotiation: off, uni-link: n/a Loopback Mode : None 0 link status changes since last clear Last clearing of "show interface" counters never 5 minutes input rate 0 bps (- with framing overhead), 0 packets/sec 5 minutes output rate 0 bps (- with framing overhead), 0 packets/sec 0 packets input, 0 bytes Received 0 broadcasts, 0 multicast 0 runts, 0 giants 0 input errors, 0 CRC, 0 alignment, 0 symbol, 0 input discards 0 PAUSE input 0 packets output, 0 bytes Sent 0 broadcasts, 0 multicast 0 output errors, 0 collisions 0 late collision, 0 deferred, 0 output discards 0 PAUSE output
ルーティング
ルーティングに関してもOSPFを試してみようと確認してみたところOSPFv2が実行できず。
ceos1(config)#router ? adaptive-virtual-topology Configure adaptive virtual topology bfd Bidirectional Forwarding Detection general Protocol independent routing configuration internet-exit Configure Internet exit kernel Routes installed by kernel l2-vpn l2-vpn configuration ospfv3 OSPF Version 3 service-insertion Configure network services inserted to data forwarding traffic-engineering Traffic-engineering global config
ip routingを確認
ceos1#show running-config | include routing service routing protocols model multi-agent no ip routing
ip routingが無効のようでしたので、有効にするためにコマンドを投入してみるがエラーに。
ceos1(config)#ip routing % Unavailable command (not supported on this hardware platform)
「not supported on this hardware platform」と出力され ip routing が設定できない
ip routeing が設定できるか確認してみた所、以下の様にコマンドがないようでサポートしていないようでした。
ceos1(config)#ip r? radius route
他WebサイトではOSPF動かしてみた、というのがみられますので私の起動手順や検証環境に問題があるのかな、と感じました。
まとめ
- コマンドを試せたり、簡単な動作確認ができる検証環境を構築できるということは、本番環境でできないことを試せる環境ができるのでよいと感じました。
- 少し触った感触ですが、Ciscoと同じような感覚で操作することができるため、Ciscoに慣れている場合は学習コストが低そうです。
- 検証用cEOSの起動できたがネットワーク疎通が取れない/ルーティングが設定できない問題に関して原因解決ができず。こうすれば動きました、という情報をお持ちでしたらぜひ教えていただけたらと思います。