<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://juniper-exam.ru/index.php?action=history&amp;feed=atom&amp;title=Load-balancing</id>
	<title>Load-balancing - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://juniper-exam.ru/index.php?action=history&amp;feed=atom&amp;title=Load-balancing"/>
	<link rel="alternate" type="text/html" href="https://juniper-exam.ru/index.php?title=Load-balancing&amp;action=history"/>
	<updated>2026-05-05T10:24:10Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.0</generator>
	<entry>
		<id>https://juniper-exam.ru/index.php?title=Load-balancing&amp;diff=2070&amp;oldid=prev</id>
		<title>Наталия Бобкова: Новая страница: «{{#description2:Load-balancing. Per-packet load-balancing. Per-flow load-balancing. Конфигурация filter-based forwarding. Multitopology. Информ...»</title>
		<link rel="alternate" type="text/html" href="https://juniper-exam.ru/index.php?title=Load-balancing&amp;diff=2070&amp;oldid=prev"/>
		<updated>2021-07-18T11:06:45Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{#description2:Load-balancing. Per-packet load-balancing. Per-flow load-balancing. Конфигурация filter-based forwarding. Multitopology. Информ...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{#description2:Load-balancing. Per-packet load-balancing. Per-flow load-balancing. Конфигурация filter-based forwarding. Multitopology. Информация для подготовки к экзаменам Juniper.}}&lt;br /&gt;
=Описание load-balancing=&lt;br /&gt;
Load balancing между равнозначными линками дает возможность передавать трафик к одному и тому же dest address сразу по двум ликам, распределяю нагрузку между ними.&lt;br /&gt;
&lt;br /&gt;
Балансировка может быть настроена одним из методов: per-packet или per-flow.&lt;br /&gt;
&lt;br /&gt;
==PER-PACKET== &lt;br /&gt;
Пакеты передаются в произвольном порядке (round-robin) по равнозначным (с одинаковой стоимостью) путям. При этом равнозначные линки загружаются равномерно. Но создается дополнительная нагрузка на сеть: в процессе передачи пакетов, к хосту назначения пакеты могут прийти в неверном порядке, что приводит к тому, что хост назначения должен заниматься реордерингом пакетов, либо хост источник должен будет пересылать заново потерянные пакеты. Всё это - дополнительная нагрузка на сеть.&lt;br /&gt;
&lt;br /&gt;
==PER-FLOW== &lt;br /&gt;
Индивидуальные потоки трафика передаются по одному или второму линку. При этом уходит проблема с реордерингом пакетов &amp;gt;&amp;gt; на application level меньше зажержек. Также становится возможным эффективное внедрение QOS, т.к. на сети одинаковый пользовательский трафик будет гулять потоками. &lt;br /&gt;
&lt;br /&gt;
По умолчанию поток (flow) - это трафик, имеющий один вх интерфейс, одинаковый src и dst address, а также одинаковый протокол. Можно включить дополнительные элементы 3 и 4 уровня, но это требует доп конфигурации.&lt;br /&gt;
&lt;br /&gt;
Для распознавания потока по параметрам 3/4 уровней, настраиваем hash-key:&lt;br /&gt;
 set forwarding-options hash-key family inet layer-3&lt;br /&gt;
 set forwarding-options hash-key family inet layer-4&lt;br /&gt;
 set forwarding-options hash-key family mpls label-1&lt;br /&gt;
 set forwarding-options hash-key family mpls label-2&lt;br /&gt;
 set forwarding-options hash-key family mpls payload ip&lt;br /&gt;
 set forwarding-options hash-key family multiservice source-mac&lt;br /&gt;
 set forwarding-options hash-key family multiservice destination-mac&lt;br /&gt;
 set forwarding-options hash-key family multiservice payload ip layer-3&lt;br /&gt;
&lt;br /&gt;
Для IP обязательно указывать l3 и l4. Иначе не будет работать ни l3, ни l4.&lt;br /&gt;
Для ipv6 load-balancing по дефолту делается по l3 и l4, так что дополнительной настойки не требует.&lt;br /&gt;
Для mpls [family mpls] и vpls [family multiservice] также можно поменять дефолтные hash-key.&lt;br /&gt;
&lt;br /&gt;
'''IGP load-balancing''': выбирается один возможный путь к адресу назначения. Даже есть есть обходные пути. Когда добавляются или удаляются возможные next-hop - junos заново делает выбор пути.&lt;br /&gt;
&lt;br /&gt;
'''BGP load-balancing''' =  per-prefix load balancing: включается в случае, когда у маршруты получены от IBGP соседа с одинаковым next-hop. Далее роутер резолвит next-hop и в случает, если до него есть несколько путей, трафик до него пойдет по рандомно-выбранным путям. Но при этом трафик до каждого префикса будет следовать только по одному выбранному пути. &lt;br /&gt;
&lt;br /&gt;
То есть если от ibgp-пира прилетело 20 префиксов, где в качестве hext-hop стоит ip ibgp-пира: рандомным образом (используя hashing алгоритм) трафик до ibgp-пира будет выбран одним из путей. То есть для 15-ти префиксов трафик до ibgp-пира пойдет одним путем, для 5ти - другим. (или 10/10, то есть из-за рандомности может возникнуть вариант распределения 20/0 - тогда ни о какой балансировке речи и не идёт). Поэтому погалаться полностью на дефолтное поведение не стоило бы.&lt;br /&gt;
&lt;br /&gt;
==Конфигурация==&lt;br /&gt;
Настраиваем политику и применяем ее. В политике можно указать конкретные префиксы, в сторону которых будет балансироваться трафик. Либо если не будет конкретики по префиксам, то баланситься будет весь трафик.&lt;br /&gt;
 set policy-options policy-statement load-balance then load-balance per-packet&lt;br /&gt;
 set routing-options forwarding-table export load-balance&lt;br /&gt;
&lt;br /&gt;
{{note|text = Несмотря на то, что в конфиге задаем load-balance per-packet, но всех современных роутерах это равнозначно per-flow. Балансировка будет работать per=flow! Только для роутерах в процессором Internet Processor I ASIC реально будет per-packet}}&lt;br /&gt;
&lt;br /&gt;
==Мониторинг==&lt;br /&gt;
До применения:&lt;br /&gt;
 &amp;gt; show route forwarding-table vpn mgmt destination 10.11.0.72/29 &lt;br /&gt;
 Routing table: mgmt.inet&lt;br /&gt;
 Internet:&lt;br /&gt;
 Enabled protocols: Bridging, All VLANs, &lt;br /&gt;
 Destination        Type RtRef Next hop           Type Index    NhRef Netif&lt;br /&gt;
 10.11.0.72/29      user     0                    indr  1052491    22&lt;br /&gt;
                                                 ulst  1051444     2&lt;br /&gt;
                              212.1.241.53      Push 35    11727     2 xe-1/0/4.10&lt;br /&gt;
После применения:&lt;br /&gt;
 &amp;gt; show route forwarding-table vpn mgmt destination 10.11.0.72/29 &lt;br /&gt;
 Routing table: mgmt.inet&lt;br /&gt;
 Internet:&lt;br /&gt;
 Enabled protocols: Bridging, All VLANs, &lt;br /&gt;
 Destination        Type RtRef Next hop           Type Index    NhRef Netif&lt;br /&gt;
 10.11.0.72/29      user     0                    indr  1052491    22&lt;br /&gt;
                              212.1.240.179     Push 35, Push 933692(top)    12775     2 ae26.910&lt;br /&gt;
                              212.1.241.53      Push 35    11727     2 xe-1/0/4.10&lt;br /&gt;
&lt;br /&gt;
Примененные изменения в load-balancing можно увидеть только в forwarding-table! В routing-table всё будет как прежде.&lt;br /&gt;
&lt;br /&gt;
ulst - это список unicast ip next-hop. Пакеты, посленнаые к этому next-hop, отправляются к любому из next-hop в листе.&lt;br /&gt;
&lt;br /&gt;
=Filter-based forwarding=&lt;br /&gt;
При этом методе балансировки на выбор пути будет влиять не только dst адрес, что делает данный тип балансировки более гибким. С помощью firewall filter пакеты классифицируются и для них определяется путь в рамках данного роутера.&lt;br /&gt;
 &lt;br /&gt;
Поддерживается для IPv4 и IPv6.&lt;br /&gt;
&lt;br /&gt;
Можем пустить трафик от src address 10.10.0.0/24 до dst address 1.1.1.1/32 через одного ISP2, а трафик от src address 10.10.1.0/24 до dst address 1.1.1.1/32 через второго ISP2.&lt;br /&gt;
&lt;br /&gt;
==Конфигурация==&lt;br /&gt;
[[Файл:Filter-based forwarding.png|600px|центр]]&lt;br /&gt;
R1:&lt;br /&gt;
Добавляем и применяем фильтр:&lt;br /&gt;
 set family inet filter regions-to-cdn term match-region-1 from source-address 10.10.0.0/24&lt;br /&gt;
 set family inet filter regions-to-cdn term match-region-1 then routing-instance ISP-1&lt;br /&gt;
 set family inet filter regions-to-cdn term match-region-2 from source-address 10.10.1.0/24&lt;br /&gt;
 set family inet filter regions-to-cdn term match-region-2 then routing-instance ISP-2&lt;br /&gt;
 set family inet filter regions-to-cdn term all-accept then accept&lt;br /&gt;
 set interfaces xe-0/0/0 unit 0 family inet filter input regions-to-cdn&lt;br /&gt;
&lt;br /&gt;
Последний терм добавляем, чтобы остальной трафик, кроме src 10.10.0.0/24 и src 10.10.0.0/24 не дропался на интерфейсе, где будет применен filter regions-to-cdn.&lt;br /&gt;
&lt;br /&gt;
Для каждого ISP добавляем RI:&lt;br /&gt;
 set routing-instances ISP-1 instance-type forwarding&lt;br /&gt;
 set routing-instances ISP-1 routing-options static route 0.0.0.0/0 next-hop 172.16.0.2&lt;br /&gt;
 set routing-instances ISP-2 instance-type forwarding&lt;br /&gt;
 set routing-instances ISP-2 routing-options static route 0.0.0.0/0 next-hop 172.16.0.6&lt;br /&gt;
&lt;br /&gt;
Для копирования интерфейсных маршрутов, которые необходимы для next-hop resolve создаем rib-groups:&lt;br /&gt;
 set routing-options interface-routes rib-group inet ISP-to-inet0&lt;br /&gt;
 set routing-options rib-groups ISP-to-inet0 import-rib inet.0&lt;br /&gt;
 set routing-options rib-groups ISP-to-inet0 import-rib ISP-1.inet.0&lt;br /&gt;
 set routing-options rib-groups ISP-to-inet0 import-rib ISP-2.inet.0&lt;br /&gt;
&lt;br /&gt;
==Проверка==&lt;br /&gt;
В RI кроме static route должны появиться маршруты src и p2p ISP сетей. &lt;br /&gt;
 &amp;gt; show route table ISP-1.inet.0&lt;br /&gt;
 &amp;gt; show route table ISP-2.inet.0&lt;br /&gt;
Трассировка с src netw 10.10.0.0/24 и 10.10.1.0/24 покажет разные маршруты до 1.1.1.1/32&lt;br /&gt;
&lt;br /&gt;
==instance-import вместо rib-group==&lt;br /&gt;
Для тех, что не хочет использовать rib-groups, можно применить аналогичный по результату метод: instance-import&lt;br /&gt;
&lt;br /&gt;
 set policy-options policy-statement ISP-1-import from instance master    = inet.0&lt;br /&gt;
 set policy-options policy-statement ISP-1-import then accept&lt;br /&gt;
&lt;br /&gt;
 set routing-instances ISP-1 instance-type forwarding&lt;br /&gt;
 set routing-instances ISP-1 routing-options static route 0.0.0.0/0 next-hop 172.16.0.2&lt;br /&gt;
 set routing-instances ISP-1 routing-options instance-import ISP-1-import&lt;br /&gt;
&lt;br /&gt;
=Multitopolgy=&lt;br /&gt;
Для каждого типа трафика можно создать свою тополонию сети &amp;gt;&amp;gt; свою forwarding-table. Можно использовать для inet и inet6 family. Пакеты одного forwarding-class определяем в ту или иную топологию. По умолчанию, весь трафик использует одну топологию для разных forwarding-class.&lt;br /&gt;
&lt;br /&gt;
==Конфигурация==&lt;br /&gt;
Inet family&lt;br /&gt;
 set routing-options topologies family inet topology voice-topology&lt;br /&gt;
 set interfaces xe-0/0/1 unit 0 family inet filter input voice-filter&lt;br /&gt;
 set firewall family inet filter voice-filter term af-traffic from forwarding-class assured-forwarding&lt;br /&gt;
 set firewall family inet filter voice-filter term af-traffic then topology voice-topology&lt;br /&gt;
Inet6 family&lt;br /&gt;
 set routing-options topologies family inet topology voice-topology&lt;br /&gt;
 set interfaces xe-0/0/0 unit 0 family inet6 filter input cdn-filter&lt;br /&gt;
 set firewall family inet6 filter cdn-filter term ef-traffic from forwarding-class ef&lt;br /&gt;
 set firewall family inet6 filter cdn-filter term ef-traffic then topology cdn-topology&lt;br /&gt;
&lt;br /&gt;
=Дополнительная информация=&lt;br /&gt;
*[[Static, Aggregate, Generate route]]&lt;br /&gt;
*[[Martians]]&lt;br /&gt;
*[[High Availability]]&lt;/div&gt;</summary>
		<author><name>Наталия Бобкова</name></author>
	</entry>
</feed>