local-as と as-override を併用したときのルーティング
大抵のルーターには、local-as / as-override という機能があります。
- local-as
- 一部のneighborに対し、自分自身のオリジナルAS番号とは別のAS番号としてふるまう
- as-override
- 一部のneighborに対し、AS_PATH中の該当peer ASを自分のAS番号に置換して経路広告する
それぞれ単独ではそこそこ見るものの、コンボで使う機会はありませんでした。実際使ってみるとよくわからない動きをします。 as-overrideはAS番号を置換しますが、local-asも指定した場合「オリジナルAS番号」「local-as番号」どちらを採用するか曖昧そうですよね。オプションによってもふるまいが変わりそうです。
「公式ドキュメントを読んで筋が通っているとは思えないので全数チェックしました」がこの記事です。
試したこと
今回試したのはJuniperです。
platform | version |
---|---|
VMx | 21.1R3.11 |
local-as autonomous-system <loops number> <private | alias> <no-prepend-global-as>;
local-as
にはいくつかオプションがありますが、その全パターン x as-override
あり / なしを試しました。
👇 はデフォルト ( local-as
なし as-override
なし) の状態です。
ここから AS200 の AS100 向けpeerの設定を変え、各ASの送受信経路を記録します。
参考までに Cisco でも
local-as number [no-prepend [replace-as [dual-as]]]
のようなオプションは存在します。今回調べていませんが、似たような事情があるかもしれません。
結果
#
がリンクになっています。
# | local-as XXX |
loop |
private |
alias |
no-prepend-global-as |
as-override |
---|---|---|---|---|---|---|
0 | ||||||
1 | 無関係なAS | |||||
2 | 無関係なAS | ⭕️ | - | |||
3 | 無関係なAS | - | ⭕️ | - | ||
4 | 無関係なAS | - | ⭕️ | |||
5 | 無関係なAS | ⭕️ | - | ⭕️ | ||
6 | 背後のAS | |||||
7 | 背後のAS | ⭕️ | - | |||
8 | 背後のAS | - | ⭕️ | - | ||
9 | 背後のAS | - | ⭕️ | |||
10 | 背後のAS | ⭕️ | - | ⭕️ | ||
略 | 無関係なAS | ⭕️ | ||||
略 | 無関係なAS | ⭕️ | ⭕️ | - | ||
略 | 無関係なAS | ⭕️ | - | ⭕️ | - | |
略 | 無関係なAS | ⭕️ | - | ⭕️ | ||
略 | 無関係なAS | ⭕️ | ⭕️ | - | ⭕️ | |
11 | 背後のAS | ⭕️ | ||||
12 | 背後のAS | ⭕️ | ⭕️ | - | ||
13 | 背後のAS | ⭕️ | - | ⭕️ | - | |
14 | 背後のAS | ⭕️ | - | ⭕️ | ||
15 | 背後のAS | ⭕️ | ⭕️ | - | ⭕️ | |
16 | ⭕️ | |||||
17 | 無関係なAS | ⭕️ | ||||
18 | 無関係なAS | ⭕️ | - | ⭕️ | ||
19 | 無関係なAS | - | ⭕️ | - | ⭕️ | |
20 | 無関係なAS | - | ⭕️ | ⭕️ | ||
21 | 無関係なAS | ⭕️ | - | ⭕️ | ⭕️ | |
22 | 背後のAS | ⭕️ | ||||
23 | 背後のAS | ⭕️ | - | ⭕️ | ||
24 | 背後のAS | - | ⭕️ | - | ⭕️ | |
25 | 背後のAS | - | ⭕️ | ⭕️ | ||
26 | 背後のAS | ⭕️ | - | ⭕️ | ⭕️ | |
略 | 無関係なAS | ⭕️ | ⭕️ | |||
略 | 無関係なAS | ⭕️ | ⭕️ | - | ⭕️ | |
略 | 無関係なAS | ⭕️ | - | ⭕️ | - | ⭕️ |
略 | 無関係なAS | ⭕️ | - | ⭕️ | ⭕️ | |
略 | 無関係なAS | ⭕️ | ⭕️ | - | ⭕️ | ⭕️ |
27 | 背後のAS | ⭕️ | ⭕️ | |||
28 | 背後のAS | ⭕️ | ⭕️ | - | ⭕️ | |
29 | 背後のAS | ⭕️ | - | ⭕️ | - | ⭕️ |
30 | 背後のAS | ⭕️ | - | ⭕️ | ⭕️ | |
31 | 背後のAS | ⭕️ | ⭕️ | - | ⭕️ | ⭕️ |
private
とalias
は排他ですalias
とno-prepend-global-as
は排他です
0. local-as
なし as-override
なし (デフォルト)
1. local-as <無関係なAS>
2. local-as <無関係なAS> private
3. local-as <無関係なAS> alias
4. local-as <無関係なAS> no-prepend-global-as
5. local-as <無関係なAS> private no-prepend-global-as
6. local-as <背後のAS>
7. local-as <背後のAS> private
8. local-as <背後のAS> alias
9. local-as <背後のAS> no-prepend-global-as
10. local-as <背後のAS> private no-prepend-global-as
11. local-as <背後のAS> loop 2
12. local-as <背後のAS> loop 2 private
13. local-as <背後のAS> loop 2 alias
14. local-as <背後のAS> loop 2 no-prepend-global-as
15. local-as <背後のAS> loop 2 private no-prepend-global-as
16. as-override
17.local-as <無関係なAS>
/ as-override
18. local-as <無関係なAS> private
/ as-override
19. local-as <無関係なAS> alias
/ as-override
20. local-as <無関係なAS> no-prepend-global-as
/ as-override
21. local-as <無関係なAS> private no-prepend-global-as
/ as-override
22. local-as <背後のAS>
/ as-override
23. local-as <背後のAS> private
/ as-override
24. local-as <背後のAS> alias
/ as-override
25. local-as <背後のAS> no-prepend-global-as
/ as-override
26. local-as <背後のAS> private no-prepend-global-as
/ as-override
27. local-as <背後のAS> loop 2
/ as-override
28. local-as <背後のAS> loop 2 private
/ as-override
29. local-as <背後のAS> loop 2 alias
/ as-override
30. local-as <背後のAS> loop 2 no-prepend-global-as
/ as-override
31. local-as <背後のAS> loop 2 private no-prepend-global-as
/ as-override
オプション変更時、BGPセッションがどうなるか
- ⭕️ 落ちません
- ❌ 落ちます。どちらが落とすかは省略します
まとめ
Juniperでlocal-as と as-override を併用したとき、どのようなルーティングになるか試しました。
理屈が通っているようには見えないのですが…納得できたら追記します。