シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

cEOSをDockerで動かしてみる

シナプスの技術部ネットワーク課の末吉と申します。

はじめに

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の起動できたがネットワーク疎通が取れない/ルーティングが設定できない問題に関して原因解決ができず。こうすれば動きました、という情報をお持ちでしたらぜひ教えていただけたらと思います。