1 2 3 4 5 6 7 |
AS65001 AS65002 AS65002 +------+ eBGP +-------+ iBGP +------+ | R1/ | | R2/ | | R3/ | | CE +---------+ PE +-------+ PE | | | | | | | +------+ +-------+ +------+ |
R1 выступает в качестве CE, R2 — PE, R3 удаленный (iBGP) PE, между R2 и R3 должен быть iBGP, а сам клиент в проде живет в VRF, но сейчас и так сойдет:
CE подключен к PE по eBGP, и анонсирует 0/0 в сторону PE. Анонсируем default от клиента через redistribute static:
1 2 3 4 5 6 7 |
! router bgp 65001 redistribute static default-information originate ! ip route 0.0.0.0 0.0.0.0 Null0 ! |
Статика анонсируется в BGP:
1 2 3 4 5 6 7 8 |
R1# show ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "static", distance 1, metric 0 (connected), candidate default path Redistributing via bgp 65001 Advertised by bgp 65001 Routing Descriptor Blocks: * directly connected, via Null0 Route metric is 0, traffic share count is 1 |
R2 и R3 видят 0/0:
1 2 3 4 5 6 7 8 9 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 2 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external, best |
1 2 3 4 5 6 7 8 |
R3# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 65001 10.0.1.2 from 10.0.1.2 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, internal, best |
Далее клиент говорит, что он хочет чтобы наша PE (R2) анонсировала 0/0 в случае если его CE1 перестанет отдавать нам 0/0 , повторяем настройки сделанные на проде:
Настраиваем backup маршрут через R1, на случай если мы потеряем маршрут от BGP пира, AD=250, чтобы выигрывал у [ie]BGP (AD=20,200):
1 2 3 4 5 |
R2(config)# ip route 0.0.0.0 0.0.0.0 10.0.0.1 250 R2(config)# router bgp 65002 R2(config-router)# redistribute static R2(config-router)# default-information originate |
Никаких изменений в BGP таблице, т.к коробке нечего редистрибутить, статики нет в GRT:
1 2 3 4 5 6 7 8 9 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 2 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external, best |
Все работает ОК, далее клиент по какой-то причине перестает анонсировать 0/0 через BGP:
1 2 3 4 |
R1(config)# no ip route 0.0.0.0 0.0.0.0 null 0 R1# show ip bgp R1# |
Ушел BGP маршрут, в GRT установился static, далее он появился в BGP ( weight 32768) а анонсируется другим пирам:
1 2 3 4 5 6 7 8 9 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 4 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 2 Refresh Epoch 1 Local 10.0.0.1 from 0.0.0.0 (2.2.2.2) Origin incomplete, metric 0, localpref 100, weight 32768, valid, sourced, best |
1 2 3 4 5 6 7 8 |
R2# show ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "static", distance 250, metric 0, candidate default path Redistributing via bgp 65002 Advertised by bgp 65002 Routing Descriptor Blocks: * 10.0.0.1 Route metric is 0, traffic share count is 1 |
Со стороны R3 поменялся AS_PATH (« Local «):
1 2 3 4 5 6 7 8 |
R3# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 4 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 Local 10.0.1.2 from 10.0.1.2 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, internal, best |
Далее клиент снова начинает анонсировать 0/0 :
1 |
R1(config)# ip route 0.0.0.0 0.0.0.0 null 0 |
На данном этапе от него пришла заявка, что на удаленном сайте он не видит 0/0 от CE.
1 2 3 4 5 6 7 8 9 10 11 |
R2# show ip bgp BGP table version is 4, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path * 0.0.0.0 10.0.0.1 0 0 65001 ? *> 10.0.0.1 0 32768 ? |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 4 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 2 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external Refresh Epoch 1 Local 10.0.0.1 from 0.0.0.0 (2.2.2.2) Origin incomplete, metric 0, localpref 100, weight 32768, valid, sourced, best |
На R3 без изменений:
1 2 3 4 5 6 7 8 |
R3# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 4 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 Local 10.0.1.2 from 10.0.1.2 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, internal, best |
R2 не анонсирует eBGP маршрут полученный от R1 т.к он не является best, происходит это потому-что Weight у локально генерируемых маршрутов = 32768 и он выигрывает у [ie]BGP маршрутов («
Weight = 0 «).
Если попробовать уровнять Weight (установить отрицательный мы не можем), далее будет проверятся LP (он у нас будет одинаковый) и потом будут выигрывать локально генерируемые маршруты.
1 2 3 4 |
! route-map SET_WEIGHT_0 permit 10 set weight 0 ! |
1 2 |
R2(config)# router bgp 65002 R2(config-router)# redistribute static route-map SET_WEIGHT_0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 5 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 2 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external Refresh Epoch 1 Local 10.0.0.1 from 0.0.0.0 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, sourced, best |
Попробуем в добавок сбросить LP:
1 2 |
R2(config)# route-map SET_WEIGHT_0 permit 10 R2(config-route-map)# set local-preference 0 |
Маршрут выбрался от R1:
1 2 3 4 5 6 7 8 9 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external, best |
1 2 3 4 5 6 7 8 |
R3# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 5 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 65001 10.0.1.2 from 10.0.1.2 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, internal, best |
Проверяем еще раз:
1 |
R1(config)# no ip route 0.0.0.0 0.0.0.0 null 0 |
Генерируем 0/0 от R2:
1 2 3 4 5 6 7 8 9 10 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 8 Paths: (1 available, best #1, table default) Flag: 0x820 Advertised to update-groups: 1 Refresh Epoch 1 Local 10.0.0.1 from 0.0.0.0 (2.2.2.2) Origin incomplete, metric 0, localpref 0, valid, sourced, best |
Возвращаем:
1 |
R1(config)# ip route 0.0.0.0 0.0.0.0 null 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
R2# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 9 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 65001 10.0.0.1 from 10.0.0.1 (1.1.1.1) Origin incomplete, metric 0, localpref 100, valid, external, best R3# show ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 8 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 65001 10.0.1.2 from 10.0.1.2 (2.2.2.2) Origin incomplete, metric 0, localpref 100, valid, internal, best |
Также можно на PE в сторону CE выставить максимальный Weight, чтобы всегда был приоритет у eBGP маршрута, но тем самым мы поломаем возможность клиенту самостоятельно управлять трафиком BGP атрибутами.