# Level2-9 ## 問題文 本問題は自動採点対象外です。 ![image](https://hackmd.io/_uploads/B1etnP_nP-l.png) 新入社員であるあなたは、ラボ機器(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がそのような回答をしているのではないかなーと予想しています。