Балансировка трафика в BGP
Материал из Xgu.ru
< BGP
Содержание |
[править] Load sharing vs Load balancing
Распределение нагрузки (Load sharing) – возможность распределять трафик (входящий или исходящий) по нескольким маршрутам.
Балансировка нагрузки (Load balancing) – возможность распределять нагрузку между несколькими маршрутами для трафика передающегося в одну сеть.
[править] BGP multipath
BGP Multipath позволяет использовать в таблице маршрутизации несколько маршрутов BGP к одному и тому же получателю.
BGP всё равно выбирает один путь как лучший и анонсирует соседям только его. Для маршрутов должны выполняться такие критерии:
- Должны быть одинаковыми атрибутами weight, local preference, AS path (весь атрибут, а не только длина), origin code, MED, метрика IGP.
- next hop маршрутизатор для каждого маршрута должен быть разным
Так как BGP Multipath требует совпадения AS path, то балансировка нагрузки может выполняться в том случае, если клиент подключен к одному и тому же провайдеру несколькими линками.
router bgp 100 maximum-paths 2
[править] bgp bestpath as-path multipath-relax
Для того чтобы балансировать нагрузку между различными провайдерами, необходимо использовать скрытую команду IOS:
router bgp 100 bgp bestpath as-path multipath-relax
AS path должен быть одинаковой длины, но не обязательно совпадать по перечню AS.
[править] Пример
Хотя в таблице BGP маршрут выбирается по-прежнему только один, в таблице маршрутизации будут оба:
dyn1#sh ip bgp 192.168.14.0 BGP routing table entry for 192.168.14.0/24, version 43 Paths: (2 available, best #2, table Default-IP-Routing-Table) Multipath: eBGP Flag: 0x1820 Not advertised to any peer 500 1100 192.168.1.1 from 192.168.1.1 (192.168.6.5) Origin IGP, localpref 100, valid, external, multipath 600 1200 192.168.3.1 from 192.168.3.1 (192.168.7.6) Origin IGP, localpref 100, valid, external, multipath, best
Таблица маршрутизации:
dyn1# sh ip route B 192.168.14.0/24 [20/0] via 192.168.3.1, 01:23:19 [20/0] via 192.168.1.1, 01:23:19
Подробная информация о маршруте в таблице маршрутизации:
dyn1# sh ip route 192.168.14.0 Routing entry for 192.168.14.0/24 Known via "bgp 100", distance 20, metric 0 Tag 600, type external Last update from 192.168.1.1 00:02:29 ago Routing Descriptor Blocks: * 192.168.3.1, from 192.168.3.1, 00:03:25 ago Route metric is 0, traffic share count is 1 AS Hops 2 Route tag 600 192.168.1.1, from 192.168.1.1, 00:02:29 ago Route metric is 0, traffic share count is 1 AS Hops 2 Route tag 600
[править] Балансировка исходящего трафика с учетом пропускной способности каналов
BGP Multipath балансирует нагрузку без учета пропускной способности канала.
Функция BGP Link Bandwidth позволяет балансировать нагрузку в соответствии с пропускной способностью.
EBGP соседи должны быть непосредственно соединены для того чтобы использовать эту возможность |
router bgp 100 bgp dmzlink-bw neighbor 192.168.1.1 dmzlink-bw neighbor 192.168.3.1 dmzlink-bw
dyn1#sh ip bgp 0.0.0.0 BGP routing table entry for 0.0.0.0/0, version 123 Paths: (2 available, best #2, table Default-IP-Routing-Table) Multipath: eBGP Flag: 0x800 Advertised to update-groups: 1 600 192.168.3.1 from 192.168.3.1 (192.168.7.6) Origin IGP, metric 0, localpref 100, valid, external, multipath DMZ-Link Bw 250 kbytes 500 192.168.1.1 from 192.168.1.1 (192.168.6.5) Origin IGP, metric 0, localpref 100, valid, external, multipath, best DMZ-Link Bw 1000 kbytes
dyn1#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 100", distance 20, metric 0, candidate default path Tag 500, type external Last update from 192.168.1.1 00:01:02 ago Routing Descriptor Blocks: 192.168.3.1, from 192.168.3.1, 00:01:02 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 500 * 192.168.1.1, from 192.168.1.1, 00:01:02 ago Route metric is 0, traffic share count is 4 AS Hops 1 Route tag 500
[править] Балансировка трафика для iBGP с учетом пропускной способности каналов
router bgp 100 bgp dmzlink-bw neighbor 192.168.1.1 dmzlink-bw neighbor 192.168.3.1 dmzlink-bw neighbor 192.168.100.2 send-community both neighbor 192.168.100.3 send-community both neighbor 192.168.100.4 send-community both maximum-paths 4