# 9. EIGRP в IOS

## Базовая настройка EIGRP

* Для настройки EIGRP необходимо:
  * Назначить одинаковый номер AS на всех роутерах
  * Включить EIGRP на интерфейсах, команда network задает условие ACL
  * EIGRP включается на порту, если первый адрес на нем попадает под ACL
* На интерфейсах начинается отправка Hello-пакетов и анонс сетей
  * Hello только с Primary Address, соседство не установится в Secondary Address
  * В анонс включаются все подключенные сети, включая secondary и static

```
Router(config)#router eigrp 100
Router(config-router)#network 192.168.1.0 0.0.0.255
Router(config-router)#network 172.17.1.0 0.0.0.255
```

## Диагностика EIGRP

* **Проверка источников маршрутной информации**

```
Router#show ip protocols
Routing Protocol is "eigrp 100"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP-IPv4 Protocol for AS(100)
    Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
    Soft SIA disabled
    NSF-aware route hold timer is 240
    Router-ID: 2.2.2.2
    Topology : 0 (base) 
      Active Timer: 3 min
      Distance: internal 90 external 170
      Maximum path: 4
      Maximum hopcount 100
      Maximum metric variance 1
```

* **Проверка интерфейсов EIGRP**
  * Интерфейс может отсутствовать в списке по причинам:
    * Выключен
    * Помечен как пассивный
    * Первый IP-адрес на нем не попадает под условие команды network

```
Router#show ip eigrp interfaces
EIGRP-IPv4 Interfaces for AS(100)
                              Xmit Queue   PeerQ        Mean   Pacing Time   Multicast    Pending
Interface              Peers  Un/Reliable  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Lo1                      0        0/0       0/0           0       0/0            0           0
Lo2                      0        0/0       0/0           0       0/0            0           0
Lo3                      0        0/0       0/0           0       0/0            0           0
Et0/1                    0        0/0       0/0           0       0/0            0           0
```

* **Проверка установленных соседей**
  * Некоторые проблемы, влияющие на установление соседства
    * Несовпадение AS
    * Несовпадение адресов сетей для primary и secondary адресов
    * Несовпадение K-коэффицентов
    * ACL, запрещающий протокол 88
    * Недовключенный EIGRP на интерфейсах между соседями

```
Router#show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(100)
H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq
                                                   (sec)         (ms)       Cnt Num
0   10.2.12.2               Et0/1                    12 00:01:51   10   150  0  3
```

* **Проверка таблицы топологии**
  * По-умолчанию показывает только маршруты, удовлетворяющие FC
  * Ключ **all-links** показывает все маршруты

```
Router#show ip eigrp topology
R1#sh ip eigrp top
EIGRP-IPv4 Topology Table for AS(100)/ID(2.2.2.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status 

P 10.2.12.0/24, 1 successors, FD is 281600
        via Connected, Ethernet0/1
P 2.2.2.3/32, 1 successors, FD is 128256
        via Connected, Loopback3
P 2.2.2.2/32, 1 successors, FD is 128256
        via Connected, Loopback2
P 2.2.2.1/32, 1 successors, FD is 128256
        via Connected, Loopback1
```

* **Проверка таблицы маршрутизации**

```
Router#show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override

Gateway of last resort is not set

      2.0.0.0/32 is subnetted, 3 subnets
D        2.2.2.1 [90/409600] via 10.2.12.1, 00:02:44, Ethernet0/1
D        2.2.2.2 [90/409600] via 10.2.12.1, 00:02:44, Ethernet0/1
D        2.2.2.3 [90/409600] via 10.2.12.1, 00:02:44, Ethernet0/1
```

```
Router#show ip route 2.2.2.1
Routing entry for 2.2.2.1/32
  Known via "eigrp 100", distance 90, metric 409600, type internal
  Redistributing via eigrp 100
  Last update from 10.2.12.1 on Ethernet0/1, 00:04:47 ago
  Routing Descriptor Blocks:
  * 10.2.12.1, from 10.2.12.1, 00:04:47 ago, via Ethernet0/1
      Route metric is 409600, traffic share count is 1
      Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1
```

## Балансировка в EIGRP

* EIGRP может добавить в таблицу маршрутизации маршруты, CD которых отличает незначительно от самого выгодного маршрута
  * В таблицу маршрутизации могут попасть только Feasible Successor
  * До 4 маршрутов, параметром **maximum-paths** можно задать 1-32 (ранее 16)
* Задается мультипликатор допустимого расхождения метрики:
  * По умолчанию - 1 - расхождение не допускается (Equal Cost Load Balancing)
  * Команда **variance <1-127>** в настройке EIGRP, (Unequal Cost Load Balancing)

```
Router(config-router)#variance 2
Router(config-router)#traffic-share ?
  balanced   Share inversely proportional to metric
  min        All traffic shared among min metric paths
```

## Пассивные интерфейсы

* Если интерфейс помечен пассивным, но включен  в EIGRP
  * Пакеты Hello не отправляются, соседство не устанавливается
  * Подключенные сети попадают в таблицу топологии
* Объявление пассивного интерфейса:

```
Router(config-router)#passive-interface gi0/0
```

* Можно пометить пассивными все интерфейсы по умолчанию, а затем явно задать интерфейсы, на которых требуется соседство

```
Router(config-router)#passive-interface default
Router(config-router)#no passive-interface gi0/0
```

## EIGRP в сетях NBMA

* EIGRP работает в сетях с мультикастом
  * Автоматическое обнаружение соседей
  * Если мультикаста нет, его можно сэмулировать копированием юникаста
* Можно переключить интерфейс в юникастовый режим
  * Все пакеты отправлются юникастом, входящий мультикаст игнорируется
  * Требуется указание адресов соседей
  * Bandwidth до соседа = 1 кб/с

```
Router(config-router)#neighbor 10.0.0.2 gi0/0
```

## Настройка K-values

* K-values должны совпадать на всех маршрутизаторах в AS
  * Проверка при установлении соседства
* metric weights \<TOS> \<K1> \<K2> \<K3> \<K4> \<K5>
  * TOS=0
  * K6=0 в Classic Mode

```
Router(config-router)#metric weights 0 1 0 1 0 0
```

## Таймеры EIGRP

* Таймеры Hello/Hold назначаются на уровне интерфейса
  * Не обязаны совпадать на соседских роутерах
  * Hello Interval задает частоту отправки Hello
  * Hold Timer указывает соседу, сколько секунд поддерживать устройство
  * Можно выстрелить себе в ногу и задать Hello больше Hold
* Таймеры Active Time, NSF и Graceful Restart задаются на роутере
  * Active Timer указывает лимит времени SIA
  * NSF и GR задают поведение при Graceful Restart

```
Router(config)#interface gi0/0
Router(config-if)#ip hello-interval eigrp 65001 15
Router(config-if)#ip hold-time eigrp 65001 10
```

## Аутентификация

* В классическом режиме поддерживается аутентификация MD5
  * Включается на уровне интерфейса
* Используются ключевые компоненты (key-chain)
  * Пакеты подписываются действительным ключом с минимальным номером
  * Для получаемого пакета сверяются все доступные ключи, и если не один не подошел, то пакет сбрасывается

```
Router(config)#key chain MYCHAIN
Router(config-keychain)#key 1
Router(config-keychain-key)#key-string cisco123
Router(config-keychain-key)#accept-lifetime 23:55:00 Dec 21 2017 00:04:00 Jan 1 2019
Router(config-keychain-key)#send-lifetime 00:00:00 Jan 1 2017 00:00:00 Jan 1 2018
Router(config)#interface gi0/1
Router(config-if)#ip authentication mode eigrp 65100 md5
Router(config-if)#ip authentication key-chain eigrp 65100 MYCHAIN
```

```
Router#show key chain
```

## Диагностика настроек интерфейса EIGRP

```
R1(config-router)#do sh ip eigrp interfaces detail
EIGRP-IPv4 Interfaces for AS(100)
                              Xmit Queue   PeerQ        Mean   Pacing Time   Multicast    Pending
Interface              Peers  Un/Reliable  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Et0/1                    1        0/0       0/0          14       0/2           64           0
  Hello-interval is 5, Hold-time is 15
  Split-horizon is enabled
  Next xmit serial <none>
  Packetized sent/expedited: 3/0
  Hello's sent/expedited: 393/3
  Un/reliable mcasts: 0/4  Un/reliable ucasts: 5/3
  Mcast exceptions: 0  CR packets: 0  ACKs suppressed: 0
  Retransmissions sent: 1  Out-of-sequence rcvd: 1
  Topology-ids on interface - 0 
  Authentication mode is not set
```

```
Router#show key-chain
Key-chain 1:
    key 1 -- text "cisco123"
        accept lifetime (13:31:00 UTC Apr 9 2019) - (infinite)
        send lifetime (13:31:00 UTC Apr 9 2019) - (infinite)
```

