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 を併用したとき、どのようなルーティングになるか試しました。
理屈が通っているようには見えないのですが…納得できたら追記します。