Arista cEOSの基本的な使い方

スポンサーリンク

Arista cEOSの使い方について説明します。cEOSはAristaのコンテナ版ネットワーク機器です。実機は非常に高額ですので、簡単には購入できません。予算制約で動作確認用途や自動化開発用途の機器が購入できないのはよくある話かと思いますので、動作確認用途や自動化開発用途などで使用するのが最もよくあるユースケースかと思います。

Arista cEOSのダウンロード

Arista公式サイトをブラウザで開きます。

Arista cEOSのダウンロード01

アカウント未作成の方は「Need a User Account?」からアカウントを作成します。

アカウント作成済の方は「Email」を入力し「Continue」を押下してログインします。

ログイン後、画面を下へスクロールさせ、「Software Downloads」を押下します。

Arista cEOSのダウンロード03

画面を下へスクロールさせ、「cEOS-lab」のタブを開き、「cEOS64-lab-4.24.2.2F.tar.xz」と「cEOS-lab-README-generic.txt」をダウンロードします。「cEOS-lab-README-generic.txt」は操作に必須ではありませんが、cEOSを動かすためのメモ書きが記載されています。

32bit OSを使用の方は「cEOS-lab-4.24.2.2F.tar.xz」をダウンロードします

Arista cEOSのダウンロード04

cEOSの起動

Dockerイメージのインポート

以下のようなコマンドでDockerイメージをインポートします。Aristaはライフサイクルが早く、複数バージョンの動作確認が必要になることもあるでしょう。

イメージ対して付与するタグの名前は「latest」ではなく「4.24.2.2F」などのバージョン番号を付与しておいた方が、後々の運用がやりやすくなると思います。

docker import cEOS64-lab-4.24.2.2F.tar.xz ceos:4.24.2.2F

Dockerイメージが正常にインポートされた事を確認します。

[root@sandbox019 ~]# docker image ls 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ceos                4.24.2.2F           74bd2ae92ca7        2 minutes ago       1.77GB
[root@sandbox019 ~]# 

コンテナの作成

動作確認例としてコンテナを2つ作成するコマンドを紹介します。以下のようなコマンドでコンテナを2つ作成します。

コンテナ作成時に与える引数は「cEOS-lab-README-generic.txt」の説明を転記したものになります。

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:4.24.2.2F /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

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:4.24.2.2F /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

コンテナが作成された事を確認します。

[root@sandbox019 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
6f747a9da592        ceos:4.24.2.2F      "/sbin/init systemd.…"   10 seconds ago       Created                                 ceos2
fedc77890b15        ceos:4.24.2.2F      "/sbin/init systemd.…"   About a minute ago   Created                                 ceos1
[root@sandbox019 ~]# 

ネットワークの作成

以下のようなネットワークを作成します。

+-----+ e1   e1 +-----+
|     +---------+     |
|ceos1|         |ceos2|
|     +---------+     |
+-----+ e2   e2 +-----+

Docker内部のネットワークを作成します

docker network create net1
docker network create net2

docker network connect net1 ceos1
docker network connect net1 ceos2
docker network connect net2 ceos1
docker network connect net2 ceos2

想定通りのネットワークが作成された事を確認します。

[root@sandbox019 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b3dcd208e62f        bridge              bridge              local
da0f2bd62a46        host                host                local
8a9e5d4b51ba        net1                bridge              local
502309b582f8        net2                bridge              local
aec628798419        none                null                local
[root@sandbox019 ~]# 
[root@sandbox019 ~]# 
[root@sandbox019 ~]# docker container inspect ceos1

  <omitted>

                "net1": {
                    "IPAMConfig": {},

  <omitted>

                "net2": {
                    "IPAMConfig": {},

  <omitted>

[root@sandbox019 ~]# 
[root@sandbox019 ~]# 
[root@sandbox019 ~]# docker container inspect ceos2

  <omitted>

                "net1": {
                    "IPAMConfig": {},

  <omitted>

                "net2": {
                    "IPAMConfig": {},

コンテナ起動

以下のコマンドでコンテナを起動します。

docker start ceos1
docker start ceos2

コンテナが起動した事を確認します。

[root@sandbox019 ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6f747a9da592        ceos:4.24.2.2F      "/sbin/init systemd.…"   16 minutes ago      Up 4 seconds                            ceos2
fedc77890b15        ceos:4.24.2.2F      "/sbin/init systemd.…"   16 minutes ago      Up About a minute                       ceos1
[root@sandbox019 ~]# 


<h2>cEOSの操作</h2>

<h3>コンテナ操作方法</h3>

コンテナを操作するには以下のようにdocker execコマンドでコンテナ内でCliコマンドを実行すると、よく見るCLIモードの操作が可能になります。


docker exec -i -t ceos1 Cli
docker exec -i -t ceos2 Cli

操作画面は以下のようになります。

Arista cEOSの操作例

設定例の紹介

動作確認として2台の間でOSPFを確立し、互いのLoopback同士が疎通可能になる事を確かめます。

  +-----+ .1  192.168.12.0/24  .2 +-----+
  |     +-------------------------+     |
  |ceos1|                         |ceos2|
  |     +-------------------------+     |
  +-----+ .1  192.168.21.0/24  .2 +-----+
 Loopback                        Loopback
10.1.1.1/32                     10.2.2.2/32

OSPFの設定例は以下の通りです。

vEOS, cEOSは物理機器の全ての機能が使えるわけではありません。また、サポート対象外ですので不具合に対しては自己責任で解決する必要があります。例えば、この手順で紹介したcEOSのバージョンならばルーテッドポート(no switch port)に対してIPアドレスを付与すると、そのインターフェースでOSPFを有効に出来ない不具合が発生します。このような不具合が発生した時に、他の設定方法を探すか、自力でバグフィックスするかの対応が必要です。

ceos1
! Command: show running-config
! device: ceos1 (cEOSLab, EOS-4.24.2.2F-18884008.42422F (engineering build))
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
agent Bfd shutdown
agent PowerManager shutdown
agent LedPolicy shutdown
agent Thermostat shutdown
agent PowerFuse shutdown
agent StandbyCpld shutdown
agent LicenseManager shutdown
!
hostname ceos1
!
spanning-tree mode mstp
!
no aaa root
!
vlan 12,21
!
interface Ethernet1
   switchport access vlan 12
!
interface Ethernet2
   switchport access vlan 21
!
interface Loopback0
   ip address 10.1.1.1/32
!
interface Vlan12
   ip address 192.168.12.1/24
!
interface Vlan21
   ip address 192.168.21.1/24
!
ip routing
!
router ospf 1
   network 0.0.0.0/0 area 0.0.0.0
   max-lsa 12000
!
end
ceos2
! Command: show running-config
! device: ceos2 (cEOSLab, EOS-4.24.2.2F-18884008.42422F (engineering build))
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
agent Bfd shutdown
agent PowerManager shutdown
agent LedPolicy shutdown
agent Thermostat shutdown
agent PowerFuse shutdown
agent StandbyCpld shutdown
agent LicenseManager shutdown
!
hostname ceos2
!
spanning-tree mode mstp
!
no aaa root
!
vlan 12,21
!
interface Ethernet1
   switchport access vlan 12
!
interface Ethernet2
   switchport access vlan 21
!
interface Loopback0
   ip address 10.2.2.2/32
!
interface Vlan12
   ip address 192.168.12.2/24
!
interface Vlan21
   ip address 192.168.21.2/24
!
ip routing
!
router ospf 1
   network 0.0.0.0/0 area 0.0.0.0
   max-lsa 12000
!
end

疎通確認は以下の通りです。

ceos1#show ip ospf neighbor 
Neighbor ID     Instance VRF      Pri State                  Dead Time   Address         Interface
10.2.2.2        1        default  1   FULL/DR                00:00:37    192.168.12.2    Vlan12
ceos1#show ip route 

VRF: default
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - BGP, B I - iBGP, B E - eBGP,
       R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,
       O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,
       NG - Nexthop Group Static Route, V - VXLAN Control Service,
       DH - DHCP client installed default route, M - Martian,
       DP - Dynamic Policy Route, L - VRF Leaked,
       RC - Route Cache Route

Gateway of last resort is not set

 C        10.1.1.1/32 is directly connected, Loopback0
 O        10.2.2.2/32 [110/20] via 192.168.12.2, Vlan12
 C        192.168.12.0/24 is directly connected, Vlan12
 C        192.168.21.0/24 is directly connected, Vlan21

ceos1#
ceos1#ping 10.2.2.2 source Loopback0
PING 10.2.2.2 (10.2.2.2) from 10.1.1.1 : 72(100) bytes of data.
80 bytes from 10.2.2.2: icmp_seq=1 ttl=64 time=4.08 ms
80 bytes from 10.2.2.2: icmp_seq=2 ttl=64 time=3.53 ms
80 bytes from 10.2.2.2: icmp_seq=3 ttl=64 time=3.48 ms
80 bytes from 10.2.2.2: icmp_seq=4 ttl=64 time=3.58 ms
80 bytes from 10.2.2.2: icmp_seq=5 ttl=64 time=3.47 ms

--- 10.2.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 16ms
rtt min/avg/max/mdev = 3.474/3.634/4.087/0.229 ms, ipg/ewma 4.053/3.852 ms
ceos1#

cEOSの停止と削除

コンテナの停止および削除

コンテナの停止と削除を同時に行う操作例は以下の通りです。

docker container rm -f ceos1
docker container rm -f ceos2

ネットワーク削除

ネットワークを削除する操作例は以下の通りです。

docker network rm net1
docker network rm net2
タイトルとURLをコピーしました