# Level2-9
## 問題文
本問題は自動採点対象外です。

新入社員であるあなたは、ラボ機器(RT-02)の交換作業をお願いされました。
メンテナンスの練習を目的として、上司からは「RT-04から見た時にRT-02とRT-03は等コストマルチパスになっているので、
RT-02を迂回(等コストマルチパスでのnext hopから外すこと)したうえで作業を行うこと」という指示が出されています。
そこで、RT-02にて迂回用コマンドを実行しました。
しかし、RT-04上でルーティングを確認したところ10.1.0.0/24のnext hopはRT-03だけでなくRT-02も含まれていました。
```
# 初期状態。10.1.0.0/24の経路のNext hopがEthernet2のみになることを目指す。
RT-04#show ip route
~~
中略
~~
Gateway of last resort:
S 0.0.0.0/0 [1/0]
via 172.20.20.1, Management0
C 10.0.0.4/32 [0/0]
via Loopback0, directly connected
B E 10.1.0.0/24 [200/0]
via fe80::a8c1:abff:fe29:685c, Ethernet1
via fe80::a8c1:abff:fe35:5869, Ethernet2
C 10.2.0.0/24 [0/0]
via Loopback1, directly connected
C 172.20.20.0/24 [0/0]
via Management0, directly connected
```
これではRT-02にトラフィックが流れ続けてしまいます。
RT-02,RT-03上には、迂回用aliasコマンドをserviceout , 迂回解除用aliasコマンドをserviceinとaliasでまとめているので、
迂回できない原因を調査し、原因と解決方法を報告してください。
```
# RT-02を迂回する設定を入れるときは RT-02にてserviceoutを実行
RT-02#serviceout
# RT-02を迂回解除する設定を入れるときは RT-02にてserviceinを実行
RT-02#servicein
```
### 達成条件
- 迂回できない原因を調査し、原因と解決方法を報告してください。
- RT-04からみてBGPでRT-02とRT-03で 等コストマルチパスになっている状態から、serviceoutコマンドでRT-02を迂回できるようにする。
```
# serviceout実行後
RT-04#show ip route
~~
中略
~~
Gateway of last resort:
S 0.0.0.0/0 [1/0]
via 172.20.20.1, Management0
C 10.0.0.4/32 [0/0]
via Loopback0, directly connected
B E 10.1.0.0/24 [200/0]
via fe80::a8c1:abff:fe35:5869, Ethernet2
C 10.2.0.0/24 [0/0]
via Loopback1, directly connected
C 172.20.20.0/24 [0/0]
via Management0, directly connected
```
- serviceoutコマンドで迂回(10.1.0.0/24のnext hopがRT-03のみになっている状態)後にserviceinコマンドで迂回解除し、RT-04からみてBGPでRT-02とRT-03でECMPになっている状態に戻すことができること。
```
#serviceout実行後に servicein実行したときにECMPへ戻る
RT-04#show ip route
~~
中略
~~
Gateway of last resort:
S 0.0.0.0/0 [1/0]
via 172.20.20.1, Management0
C 10.0.0.4/32 [0/0]
via Loopback0, directly connected
B E 10.1.0.0/24 [200/0]
via fe80::a8c1:abff:fe29:685c, Ethernet1
via fe80::a8c1:abff:fe35:5869, Ethernet2
C 10.2.0.0/24 [0/0]
via Loopback1, directly connected
C 172.20.20.0/24 [0/0]
via Management0, directly connected
```
### 制約
- serviceout, serviceinでaliasされている内容の変更を行わないこと。
- 等コストマルチパスに関する操作はserviceout, serviceinコマンドのみでおこない追加でコマンドを実行しない。
## 解説
[Troubleshooting Maintenance Mode](https://arista.my.site.com/AristaCommunity/s/article/Troubleshooting-Maintenance-Mode)に、
> By default, when a device is put under maintenance mode, all BGP updates will be tagged with the GSHUT community.
とあるように、maintenance modeを利用した場合はg-shutコミュニティによる迂回がデフォルトで利用されます。
しかし、RT-02でcommunityを送るための設定が不足しているため、追記してあげる必要があります。
```
RT-02#configure
RT-02(config)#router bgp 65002
RT-02(config-router-bgp)#neighbor NETCON send-community
```
もしくはAS-PATH prependをmaintenance modeに実装することでも可能です。
```bash
maintenance
profile bgp bgp-prepend-profile
initiator route-map RM-BGP-MAINT inout
profile bgp bgp-prepend-profile defaultroute-map RM-BGP-MAINT permit 10
set as-path prepend 65002 65002 65002
```
## 所感
本問題は解答として複数があったことや、個人色のでる解答レポートを読みたかったため手動採点で行いました。
`send-community`やAS-PATH prependだけでなくmedの迂回やevent trigerなど様々な解決策があり、採点していて面白かったです。
maintenance profileが設定されていないといった回答が見受けられましたが、おそらくコマンドをたたいて回答を導くタイプのAIがそのような回答をしているのではないかなーと予想しています。