[初心者向け]0から学ぶCisco ACI

#はじめに

この記事はシスコの有志による Cisco Systems Japan Advent Calendar 2021(1枚目)の一部として投稿しています。

2017年版: https://qiita.com/advent-calendar/2017/cisco
2018年版: https://qiita.com/advent-calendar/2018/cisco
2019年版: https://qiita.com/advent-calendar/2019/cisco
2020年版: https://qiita.com/advent-calendar/2020/cisco
2020年版(2枚目): https://qiita.com/advent-calendar/2020/cisco2
2021年版: https://qiita.com/advent-calendar/2021/cisco 
2021年版(2枚目): https://qiita.com/advent-calendar/2021/cisco2



昨今のデータセンター(DC)ネットワークの構築/管理/運用は本当に大変ですよね。単純なアプリケーション数の増加はもちろん、エッジコンピューティングや自動化など、色々な要素も増えてSoftware Defined Networking(SDN)製品を触ることがある方が増えてきたのではないでしょうか。
SDN製品も種類が多く、中々それぞれの違いや特徴、設定を学ぶのも一苦労かと思います。

というわけで、今年Ciscoに新卒入社した私がネットワーク初心者の方でも分かるような(出来るだけよく分からない横文字を使わずに…！)、__Cisco ACI__のざっくりとした解説をしてみたいと思います。
あくまで筆者の個人的な解釈としてご覧ください。

#Cisco ACIって？
Application Centric Infrastructure(ACI)って結局なんなんでしょう？[Ciscoのホームページ](https://www.cisco.com/c/ja_jp/solutions/data-center-virtualization/application-centric-infrastructure/index.html?CAMPAIGN=blog&COUNTRY_SITE=jp&POSITION=blog&REFERRING_SITE=gblogs+cisco.com&CREATIVE=what-is-aci-1-aci-is-l2l3-switch#~services)を見てみても、SDNソリューションやらポリシー管理やらよくわからない横文字や抽象的な言葉ばかりが並んでいて、初心者にはよく分かりませんね。

__Cisco ACIとは__、シスコシステムズが提供するDCネットワークの構築/管理を自動化する製品です。DCというと大規模な建物の中にあるものだけを思い浮かべる方もいらっしゃるかと思いますが、サーバをほんの少し置くだけの場所もDCとみなすと、大型DC、小型DCを問わずACIは様々な所で使われています。

DCの拡張、増設に加えて、昨今では分散DC化が進んでいますよね。
流行りのIoTは勿論、5G通信網の中だったり、リモートオフィスなど、サーバを置きたい場所が多様化しています。加えてクラウドや仮想マシンなど、管理すべき対象も多様化しています。つまり、今後のDC運用では複雑なネットワークの管理が求められます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/a3102104-bfd9-5f86-e4eb-35bb95feb663.png" width=75%>

そんな複雑化するDCネットワーク問題を解決するのがACIです。
ACIでは物理的な配置に依存せずに機器を用途別に管理が出来て、__構築、管理、運用のほぼすべてを__Webブラウザから一括で行えます。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/0ee35e8c-4b8e-07ee-686e-09c8523798d5.png)

##機器のグルーピング
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/c3bfb7ac-5ccf-ce94-c0f2-3eb890e76b55.png)


物理的に離れたサーバを管理する場合、通常はそれぞれのサーバがある場所に赴いて運用、管理をする必要があります。
ACIでは、物理的に離れていたとしても機器を__用途ごとにグルーピング__が出来て、Webブラウザから操作できるため、分散DC運用の負荷が格段に減ります。

![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/cf84b172-fe98-a1de-c453-dcfefa53a0d9.png)


このように用途別にグルーピングする事の最大のメリットは、__用途ごとに通信ルールを設定できること__です。通常のネットワークでは基本的に、「宛先のこいつが何かは知らないけどIPアドレスx.x.x.xにこれを送って！」のように通信が行われ、それぞれのアドレス毎に通信ルールが定められます。DCネットワークともなると、サーバの数などが増えるにつれ管理運用もどんどん難しくなってきますよね。

ACIでは用途別にグルーピングがされているため、「Webサーバグループからデータベース(DB)サーバには通信していいけど、ユーザから直接DBサーバグループへの通信はダメ！」のように、__何__と__何__が通信していいか、という人間の意図に基づいて通信ルールを定められます。

##エンドポイントグループ(EPG)
このような用途別に分けたグループをACIでは__エンドポイントグループ(EPG)__と呼びます。グルーピングの手法は色々あるのですが、VLANという技術を使用してグループ分けをするのが一般的です。
このEPGに対して、__Contract__という通信ルールを設定していきます。Contractが設定されていないEPG間では通信は出来ません。

![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/13c58c10-f534-b400-5967-3bdef5dc562f.png)

それぞれのEPG間で、「ここの通信は許可、ここはだめ、ここは音声データを優先したい、ここは通信を監視したい」のように通信ルール(ポリシー)が設定できます。
グループに対して通信ルールを設定するため、接続される機器全てに対して設定するよりも設定する通信ルールの数が減ることは勿論、「ここは何と何が通信する時に使うルールだから、こんな設定を入れよう」のように具体的に考えることが出来る事から、ネットワーク内の通信ルールを考える段階からかなり楽になります。

##物理的な構成機材(ACI Fabric)
さて、ここまでACIの機能のお話をしてきました。「結局ACIってソフトウェアなの？？」と思われた方もいらっしゃるかと思います。ACIを使用するには物理的な装置として、__Spineスイッチ__、__Leafスイッチ__、そして__コントローラ(APIC)__が必要で、これらからなる__ACI Fabric__というものを構成します。

![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/65f17d61-43d1-3c78-2b5b-62aa6c894089.png)

APICに接続されたスイッチは(LLDPという技術を使用して)全て自動で発見されるため、ケーブルを繋ぐだけでスイッチのコントロールが出来るようになります。

APICにWebブラウザからアクセスして、そこで設定や管理、ソフトウェアのアップグレードなどの操作をすると、ACI Fabric内の全スイッチに対する操作が出来ます。
そのため、わざわざ一つ一つのスイッチにアクセスして設定変更などをする必要がありません。

![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/e8068364-14c5-f170-38a2-664337a57eaf.png)

また、このAPICはあくまで設定変更を流し込むためのものなので、__仮にAPICとスイッチの接続が切れたとしても各スイッチの通信自体には影響がありません__。なのでAPICに万が一のことがあっても、他のネットワーク機器間の通信は問題なく継続されます。

![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/34e04427-c9cb-09a4-4ef2-3eae44f14d82.png)

さらに、あるLeafスイッチから他のLeafスイッチへの通信はVXLANという技術(IPアドレスを参照しない転送技術)を使用して転送されます。この技術を使用している事によって、EPGの作成において__IPアドレス構成に依存しないグルーピングが可能__になっています。別のLeafスイッチに繋がっているサーバ同士を同じEPGに所属させることが出来るため、物理的な配置に囚われず、用途別にグルーピングしてDCネットワークを構築することが出来ます。

これが冒頭で述べた、DCの拡大や分散DCのような複雑化するDCネットワーク問題をACIが解決出来る仕組みです。本ブログでは割愛しますが、IPネットワークを介してLeafスイッチやAPICを連携させ、複数のDCを共通のルール、共通のコントローラから管理する__ACI Anywhere__という機能もあります。(詳しくは__[こちらの記事](https://gblogs.cisco.com/jp/2021/01/5g-showcase-demo-03-datacenter-anywhere/)__をご覧ください！)

##ACIを使ったサーバの増強を考えてみよう
ACIを使用してDCを拡張するケースを考えてみましょう。今あるサーバ間のネットワーク設計はそのままで、隣のラックに同じサーバを増やして増強するとします。通常であれば機器一つ一つにIPアドレスを設定したり通信ルールを設定し直したり、結構な大仕事ですよね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272658/c250b376-800f-dfec-6ede-23506c408ada.png" width=75%>

しかし、ACIを使用している場合、ACI Fabricに新しいスイッチを接続し、App、Web、DBサーバを配線して、それぞれ同じEPGに所属させるだけでDCの拡張が完了します。しかも、論理的な設定(通信ルールなど)は全く触る必要がないため、再度設定し直す手間がかかりません。これによって簡単にサーバの拡張が出来てしまいます。

#おわりに
本記事では現在のDCネットワークが抱える問題、それをCisco ACIがどのように解決するのかの解説、そしてサーバ拡張を例に、実際にどのようにDCネットワークの運用が簡素化するかについて述べました。
少しでも皆様のお役に立ちますと幸いです。

##参考リンク
[Cisco ACI How to](https://community.cisco.com/t5/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/cisco-aci-how-to/ta-p/4039933)
[Cisco ACI とは何なのか –  Cisco Japan Blog](https://gblogs.cisco.com/jp/2020/03/waht_is_aci_vol5/)
[Data Center Anywhere – Cisco Japan Blog](https://gblogs.cisco.com/jp/2021/01/5g-showcase-demo-03-datacenter-anywhere/)

#免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。