keyword : bgp, arp, proxy-arp
BGP-only 네트워크에서 호스트의 이동이 자유로운 네트워크를 구성하기 위해 호스트에 단일 IP만을 설치하고 ARP 정보를 기반으로 호스트IP 32bit를 광고하고 통신하는 방안을 정리 한다.
네트워크 담당자로서 다양한 요구조건을 듣다 보면 많은 사용자들은 호스트의 이동에 제한이 없길 바란다. 그러면 네트워크 엔지니어가 가장 쉽게 선택할 수 있는 구조는 L2 기반의 네트워크다. 고전 방식으로 성실히 Vlan을 나누고 STP를 구성하며 루프, unknown unicast flooding을 제거하고자 고군분투 하지만 한계를 느낀다. 그러면 게으른 NE는 근본적인 문제를 해결할 다른 기술을 찾는다.
그런 과정으로 다양한 검토를 하던 중 처음 Cisco NX-OS의 vPC, Nexus 5K-2K, MAC/ARP aging time 내용 등이 정리된, 나의 고민을 누군가 대필해 둔 것 같은 Overview 문서를 읽었을 때 나는 나와 같은 고민을 하는 네트워크 엔지니어들이 많다는 생각에 참으로 위안을 느꼈다. 네트워크 엔지니어들의 고민은 비슷하다. 그 고민들이 모여 흐름을 만들고 기술의 유행을 만든다. 그 흐름 속에 MCLAG, 클러스터링 기능들이 나온다. TRILL, TRILL스러운 기술들이 나온다. L2는 안 되겠다 싶은지 L3로 회귀한다. L3기반에서 유연성을 높이고자 overlay를 한다. 또는 BGP로 망 전체를 구성하고 각 호스트의 32 bit IP를 제한 없이 광고한다.
이미 대규모 회사들은 EBGP only 네트워크를 구성하여 운영 중이다. BGP 기반의 네트워크에서 호스트의 이동이 자유롭기 위해서 각 호스트의 IP를 specific route인 32 bit로 광고한다. 나는 그 네트워크에 API 연동하여 자동화를 어떻게 이룰지 보다는 어떻게 효율적으로 각 호스트의 32 bit route를 광고할지가 고민이었다.
상식적으로 아래와 같은 한계가 있다.
1. 기본적으로 호스트 IP는 상위 네트워크의 서브넷에 종속된다.
2. "1"외 Loopback IP와 같이 Floating IP의 형태를 통해 종속되지 않는 IP를 구현한다.
3. 번거롭게도 "2"를 광고하기 위해 호스트마다 BGP를 올리고 Edge Router와 neighbor를 맺는다.
또는 Edge Router에서 Static route로 Floating IP의 Next-hop을 "1"의 IP로 설정한다.
4. 가상화 환경에서는 hypervisor들이 자신들 위에서 실행 중인 VM들의 IP를 제공 가능하다.
Edge Router와 hypervisor가 BGP neighbor를 맺으면 BGP neighbor를 최소화할 수 있다.
물리적 환경에서는 어떻게 구성 가능할까
아래와 같이 설계해 본다.
1. 호스트에 별도의 Floating IP를 구성하지 않고 서브넷의 IP만으로 구성한다.
2. 특정 Edge Router에 종속되지 않도록 모든 Edge Router에 동일한 Vlan/Subnet을 할당한다.
3. ARP 정보를 기반으로 호스트를 광고하고 통신하기 한다.
4. ARP를 BGP로 재분배를 하여 광고를 한다. 구현된 장비가 없으므로 API/Injector를 구성한다.
5. 같은 서브넷이면서 다른 Edge Router에 위치한 호스트와의 통신을 위해 Proxy-ARP를 사용한다.
모든 Edge Router(R3, R4)에는 동일한 서브넷(10.200.0.0/16), 동일 Vlan200을 할당한다.
호스트에는 10.200.0.0/16 내의 단일 IP만 설정한다.
Edge Router의 ARP를 API를 통해 수신, Static Route로 변환하여 적용, BGP로 재분배하여 광고한다.
다른 Edge Router에 위치한 호스트(H1 - H2)와의 통신을 위해 Vlan200에 Proxy-ARP를 Enable 한다.
테스트를 위한 계위는 2단계로만 구성했다.
라우터(R[1-4]), 호스트(H[1-3])은 모두 Arista Multi layer Switch로 구성하였다.
사용한 기능 및 프로토콜은 EBGP, ARP, Proxy-ARP, Arista eAPI(Python)이다.
# R3 설정
vlan 200 # 모든 Edge Router에 동일
name ALL_HOST
!
interface Ethernet1
description Router-1
no switchport
ip address 10.100.1.6/30
!
interface Ethernet2
description Router-2
no switchport
ip address 10.100.1.14/30
!
interface Ethernet3
description Host-1
switchport access vlan 200
spanning-tree portfast
spanning-tree bpduguard enable
!
interface Ethernet4
description Host-3
switchport access vlan 200
spanning-tree portfast
spanning-tree bpduguard enable
!
interface Ethernet48
description Router-4
no switchport
ip address 10.100.1.21/30
!
interface Vlan200
description ALL_HOST
ip proxy-arp # proxy-arp enable
ip address 10.200.0.1/16 # 모든 Edge Router에 동일
!
ip prefix-list HOST-IP seq 10 permit 10.200.0.0/16 eq 32 # 32 bit route
ip prefix-list SERIAL seq 10 permit 0.0.0.0/0 eq 30
!
route-map HOST-to-BGP permit 10 # Static to BGP
match ip address prefix-list HOST-IP
set origin igp
!
route-map SERIAL-to-BGP permit 10
match ip address prefix-list SERIAL
!
router bgp 3
router-id 10.0.0.3
timers bgp 1 3
maximum-paths 2 ecmp 2
neighbor 10.100.1.5 remote-as 1
neighbor 10.100.1.5 description Router-1
neighbor 10.100.1.5 maximum-routes 12000
neighbor 10.100.1.13 remote-as 2
neighbor 10.100.1.13 description Router-2
neighbor 10.100.1.13 maximum-routes 12000
redistribute connected route-map SERIAL-to-BGP
redistribute static route-map HOST-to-BGP # Static to BGP
# R4 설정
vlan 200
name ALL_HOST
!
interface Ethernet1
description Router-1
no switchport
ip address 10.100.1.10/30
!
interface Ethernet2
description Router-2
no switchport
ip address 10.100.1.18/30
!
interface Ethernet3
description Router-6
switchport access vlan 200
spanning-tree portfast
spanning-tree bpduguard enable
!
interface Ethernet48
description Router-3
shutdown
no switchport
ip address 10.100.1.22/30
!
interface Vlan200
description ALL_HOST
ip proxy-arp
ip address 10.200.0.1/16
!
ip route 10.200.200.200/32 Vlan200
!
ip prefix-list HOST-IP seq 10 permit 10.200.0.0/16 eq 32
ip prefix-list SERIAL seq 10 permit 0.0.0.0/0 eq 30
!
route-map HOST-to-BGP permit 10
match ip address prefix-list HOST-IP
set origin igp
!
route-map SERIAL-to-BGP permit 10
match ip address prefix-list SERIAL
!
router bgp 4
router-id 10.0.0.4
timers bgp 1 3
maximum-paths 2 ecmp 2
neighbor 10.100.1.9 remote-as 1
neighbor 10.100.1.9 description Router-1
neighbor 10.100.1.9 maximum-routes 12000
neighbor 10.100.1.17 remote-as 2
neighbor 10.100.1.17 description Router-2
neighbor 10.100.1.17 maximum-routes 12000
redistribute connected route-map SERIAL-to-BGP
redistribute static route-map HOST-to-BGP
# Host 1,2,3
#Host-1
interface Ethernet1
description Router-3
no switchport
ip address 10.200.100.100/16
!
ip route 0.0.0.0/0 10.200.0.1
#Host-2
interface Ethernet1
description Router-4
no switchport
ip address 10.200.200.200/16
!
ip route 0.0.0.0/0 10.200.0.1
#Host-3
interface Ethernet1
description Router-3
no switchport
ip address 10.200.50.50/16
!
ip route 0.0.0.0/0 10.200.0.1
# Injection Script
#!/usr/bin/python
from __future__ import print_function
from jsonrpclib import Server
vlan_num=200
arp_table={}
route_table=["configure terminal"]
switch = Server( "http://ID:PASSWORD@EDGE-ROUTER-IP/command-api" )
response = switch.runCmds( 1, [ "show ip arp interface vlan%d" % vlan_num ], "json" )
# Edge Router로부터 ARP Table 수신
for host in response[0]["ipV4Neighbors"]:
arp_table[host["address"]]=host["hwAddress"]
print ("show ARP Tables")
for IP in arp_table:
print (IP, end="\t")
print (arp_table[IP])
route_table.append("ip route %s 255.255.255.255 Vlan%d" % (IP, vlan_num))
# ARP Table을 Static Route로 변환
print ("\nshow Route Tables")
for route in route_table:
print (route)
print ("\ninstall Routes")
response = switch.runCmds( 1,
route_table,
"json" )
# 위의 생성된 route_table을 Edge Router에 적용
print (response)
# R1 설정
interface Ethernet3
description Router-3
no switchport
ip address 10.100.1.5/30
!
interface Ethernet4
description Router-4
no switchport
ip address 10.100.1.9/30
!
interface Ethernet48
description Router-2
no switchport
ip address 10.100.1.1/30
!
ip prefix-list SERIAL seq 10 permit 0.0.0.0/0 eq 30
!
route-map SERIAL-to-BGP permit 10
match ip address prefix-list SERIAL
!
router bgp 1
router-id 10.0.0.1
timers bgp 1 3
neighbor 10.100.1.2 remote-as 2
neighbor 10.100.1.2 description Router-2
neighbor 10.100.1.2 maximum-routes 12000
neighbor 10.100.1.6 remote-as 3
neighbor 10.100.1.6 description Router-3
neighbor 10.100.1.6 maximum-routes 12000
neighbor 10.100.1.10 remote-as 4
neighbor 10.100.1.10 description Router-4
neighbor 10.100.1.10 maximum-routes 12000
redistribute connected route-map SERIAL-to-BGP
# R2 설정
interface Ethernet3
description Router-3
no switchport
ip address 10.100.1.13/30
!
interface Ethernet4
description Router-4
no switchport
ip address 10.100.1.17/30
!
interface Ethernet48
description Router-1
no switchport
ip address 10.100.1.2/30
!
ip prefix-list SERIAL seq 10 permit 0.0.0.0/0 eq 30
!
route-map SERIAL-to-BGP permit 10
match ip address prefix-list SERIAL
!
router bgp 2
router-id 10.0.0.2
timers bgp 1 3
neighbor 10.100.1.1 remote-as 1
neighbor 10.100.1.1 description Router-1
neighbor 10.100.1.1 maximum-routes 12000
neighbor 10.100.1.14 remote-as 3
neighbor 10.100.1.14 description Router-3
neighbor 10.100.1.14 maximum-routes 12000
neighbor 10.100.1.18 remote-as 4
neighbor 10.100.1.18 description Router-4
neighbor 10.100.1.18 maximum-routes 12000
redistribute connected route-map SERIAL-to-BGP
테스트 순서는 아래와 같다.
1. H2(Host-2)를 연결한다. Gateway인 Edge Router R4에 H2의 ARP가 생성된다.
2. Injector는 주기적으로 Edge Router들의 ARP를 질의하여 추가된 ARP를 Static route로 변환하여 해당 Edge Router에 다시 설정한다.
3. Injector를 통해 설정된 Static route는 BGP로 재분배되어 광고된다.
4. R4에서 광고된 호스트 IP는 R[1-3]에 BGP를 통해 32 bit route를 설치한다.
5. H1는 동일 서브넷인 H2(R4에 위치한)와의 통신을 위해 ARP를 요청한다.
H1, H2는 동일한 L2 Domain 내 위치하지 않으므로 H2는 ARP 응답을 할 수 없다.
R3은 H2의 route가 존재하므로 proxy-arp에 의해 자신의 MAC address로 ARP를 대신 응답한다.
6. H1은 R3의 MAC으로 Frame를 생성하여 송신 및 H2와 통신한다.
7. H1와 H3와의 통신은 동일한 L2 Domain에 위치하므로 H3가 직접 ARP를 응답한다.
테스트 결과는 아래와 같다.
* H2(10.200.200.200 / 001c.73d6.9087)를 연결한다, H2의 ARP table은 아래와 같다.
Host-2#show ip arp
10.200.0.1 0 001c.73d6.ce25 Ethernet1 # Gateway, R4
* R4의 ARP table은 아래와 같다.
Router-4#show ip arp
10.100.1.9 0 001c.73d6.d17f Ethernet1
10.100.1.17 0 001c.73d6.c0ff Ethernet2
10.200.200.200 0 001c.73d6.9087 Vlan200, Ethernet3 #### Host-2
* Injector에 의해 R4의 ARP table이 Static route로 적용된다.
show ARP Tables
10.200.200.200 001c.73d6.9087
show Route Tables
configure terminal
ip route 10.200.200.200 255.255.255.255 Vlan200
install Routes
[{}, {}, {}]
* R4에 아래와 같이 Static route가 생성되고 BGP로 광고된다.
Router-4#show run | include "ip route"
ip route 10.200.200.200/32 Vlan200 #### Injector에 의해 생성
Router-4#show ip route
S 10.200.200.200/32 is directly connected, Vlan200
Router-4#show ip bgp neighbors 10.100.1.9 advertised-routes ##### R1
Network Next Hop Metric LocPref Weight Path
* > 10.200.200.200/32 10.100.1.10 - - - 4 i
Router-4#show ip bgp neighbors 10.100.1.17 advertised-routes ##### R2
Network Next Hop Metric LocPref Weight Path
* > 10.200.200.200/32 10.100.1.18 - - - 4 i
* R1, R2, R3를 BGP를 통해 H2의 route를 수신한다.
Router-1#show ip route
B E 10.200.200.200/32 [200/0] via 10.100.1.10, Ethernet4
Router-2#show ip route
B E 10.200.200.200/32 [200/0] via 10.100.1.18, Ethernet4
Router-3#show ip route
B E 10.200.200.200/32 [200/0] via 10.100.1.5, Ethernet1
via 10.100.1.13, Ethernet2
* H1은 H2(10.200.200.200)와의 통신을 위해 ARP를 요청한다. R3(Gateway)가 대신 ARP를 응답한다.
Host-1#show ip arp
10.200.0.1 0 001c.7379.6e61 Ethernet1
Host-1#ping 10.200.200.200
80 bytes from 10.200.200.200: icmp_req=1 ttl=61 time=886 ms ##### ARP 요청
80 bytes from 10.200.200.200: icmp_req=2 ttl=61 time=0.145 ms
80 bytes from 10.200.200.200: icmp_req=3 ttl=61 time=0.191 ms
Host-1#show ip arp
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.200.200 0 001c.7379.6e61 Ethernet1 # R3의 MAC Address으로 응답
* H1은 H3(10.200.50.50)와의 통신을 위해 ARP를 요청한다. 요청 후 H3가 응답한다.
Host-1#show ip arp
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.200.200 0 001c.7379.6e61 Ethernet1
Host-1#ping 10.200.50.50
80 bytes from 10.200.50.50: icmp_req=1 ttl=64 time=0.340 ms
80 bytes from 10.200.50.50: icmp_req=2 ttl=64 time=0.160 ms
80 bytes from 10.200.50.50: icmp_req=3 ttl=64 time=0.126 ms
Router-5#show ip arp
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.50.50 0 001c.73d6.cc99 Ethernet1 # Host3의 MAC Address
10.200.200.200 0 001c.7379.6e61 Ethernet1
테스트 결과 예상과 같이 ARP가 생성되고 Injector를 통해 BGP로 전파되어 ARP/Proxy-ARP/BGP의 조합으로 정상적인 통신이 이루어진다.
장점
1. 모든 Edge Router에 동일한 서브넷을 할당하므로 별도의 서브넷팅이 필요 없고 IP의 낭비가 적다.
2. 호스트당 단일 IP 사용으로 별도의 IP 할당, 관리가 불필요하다.
3. 호스트 계위에서 자신의 IP 광고를 위해 별도의 작업이 필요 없다.
4. Edge Router에 종속되지 않고 가상화, 물리적 호스트 모두 자유로운 이동이 가능하다.
단점
1. 호스트가 속한 서브넷의 모든 호스트의 ARP Table를 가지고 있어야 한다.
16 bit 서브넷에 가능한 모든 호스트를 구성한다면 호스트들은 호스트들 간의 통신을 위해 최대
65,534개의 ARP entry를 유지해야 한다.
2. Edge Router를 포함한 모든 Router들은 호스트들의 수만큼의 호스트 라우트 또는 LPM Table를 유지해야 한다. 해당 라우트를 지원하기 위해 Edge Router 또한 고사양의 장비 또는 라이센스 비용이 증가한다.
3. 모든 정보의 기반이 ARP이기에 ARP spoofing에 취약하다.
ARP Inspection을 제대로 구현하지 않는다면 단순한 ARP spoofing에도 네트워크 전체가 무너질 수 있다.
페이스북 네트워크의 pod(layer3 micro-cluster)처럼 최소한의 네트워크 단위 정의가 필요하다.
해당 pod에 구성할 호스트 수를 정하고 그 호스트 수만큼의 route와 ARP 운영에 문제가 없을지 검증을 해야 한다.
또한 호스트의 자유로운 이동은 해당 pod 내로 제한된다. 해당 pod에만 동일한 서브넷이 존재하기 때문이다.
Edge Router 대수, API를 통한 ARP 업데이트 주기, 중복 제거 또는 anycast 허용 등이 고려되어야 한다.
ARP to BGP 재분배를 지원하는 장비가 있다면 API/Injector 또한 불필요하다.
이런저런 상념 중에 재미있겠다 싶어 구상한 설계안이 문서로 정리해 보니 영 쓸모없겠다 싶다.
최초 구상은 대규모 네트워크를 떠올리며 설계했지만 오히려 작은 네트워크에서 호스트 이동이 잦은 곳에서 사용한다면 활용도가 높아 보인다.
다양한 조합을 해보며 새로운 구성을 만들어 보는 것에 의미를 두고 글을 맺는다.
사용된 내역은 모두 일반적인 프로토콜이며 사용된 API 관련 문서만 덧붙인다.
Arista eAPI 101( https://eos.arista.com/arista-eapi-101/ )
테스트 시 각 장비의 ARP, Route, BGP 전체 결과 덧붙인다.
Router-1#show ip bgp summary
BGP summary information for VRF default
Router identifier 10.0.0.1, local AS number 1
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
10.100.1.2 4 2 11587 11587 0 0 00:00:51 Estab 5 4
10.100.1.6 4 3 10976 11001 0 0 00:00:51 Estab 6 5
10.100.1.10 4 4 10302 10252 0 0 00:00:51 Estab 6 5
Router-1#show ip route
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I - ISIS, A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route
Gateway of last resort is not set
C 10.100.1.0/30 is directly connected, Ethernet48
C 10.100.1.4/30 is directly connected, Ethernet3
C 10.100.1.8/30 is directly connected, Ethernet4
B E 10.100.1.12/30 [200/0] via 10.100.1.2, Ethernet48
B E 10.100.1.16/30 [200/0] via 10.100.1.2, Ethernet48
B E 10.200.100.100/32 [200/0] via 10.100.1.6, Ethernet3
B E 10.200.200.200/32 [200/0] via 10.100.1.10, Ethernet4
Router-2#show ip bgp summary
BGP summary information for VRF default
Router identifier 10.0.0.2, local AS number 2
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
10.100.1.1 4 1 11667 11669 0 0 00:02:12 Estab 5 4
10.100.1.14 4 3 10870 10902 0 0 00:02:59 Estab 4 3
10.100.1.18 4 4 10034 9988 0 0 00:02:59 Estab 4 3
Router-2#show ip route
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I - ISIS, A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route
Gateway of last resort is not set
C 10.100.1.0/30 is directly connected, Ethernet48
B E 10.100.1.4/30 [200/0] via 10.100.1.1, Ethernet48
B E 10.100.1.8/30 [200/0] via 10.100.1.1, Ethernet48
C 10.100.1.12/30 is directly connected, Ethernet3
C 10.100.1.16/30 is directly connected, Ethernet4
B E 10.200.100.100/32 [200/0] via 10.100.1.14, Ethernet3
B E 10.200.200.200/32 [200/0] via 10.100.1.18, Ethernet4
Router-3#show ip bgp summary
BGP summary information for VRF default
Router identifier 10.0.0.3, local AS number 3
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
10.100.1.5 4 1 11312 11287 0 0 00:06:03 Estab 6 5
10.100.1.13 4 2 11131 11109 0 0 00:06:49 Estab 6 5
Router-3#show ip bgp neighbors 10.100.1.5 advertised-routes
BGP routing table information for VRF default
Router identifier 10.0.0.3, local AS number 3
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* >Ec 10.100.1.0/30 10.100.1.6 - - - 3 2 i
* > 10.100.1.4/30 10.100.1.6 - - - 3 i
* > 10.100.1.12/30 10.100.1.6 - - - 3 i
* > 10.100.1.16/30 10.100.1.6 - - - 3 2 i
* > 10.200.100.100/32 10.100.1.6 - - - 3 i
* >Ec 10.200.200.200/32 10.100.1.6 - - - 3 2 4 i
Router-3#show ip bgp neighbors 10.100.1.5 received-routes
BGP routing table information for VRF default
Router identifier 10.0.0.3, local AS number 3
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* ec 10.100.1.0/30 10.100.1.5 0 100 - 1 i
10.100.1.4/30 10.100.1.5 0 100 - 1 i
* > 10.100.1.8/30 10.100.1.5 0 100 - 1 i
* 10.100.1.12/30 10.100.1.5 0 100 - 1 2 i
* 10.100.1.16/30 10.100.1.5 0 100 - 1 2 i
* ec 10.200.200.200/32 10.100.1.5 0 100 - 1 4 i
Router-3#show ip bgp neighbors 10.100.1.13 advertised-routes
BGP routing table information for VRF default
Router identifier 10.0.0.3, local AS number 3
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* > 10.100.1.4/30 10.100.1.14 - - - 3 i
* > 10.100.1.8/30 10.100.1.14 - - - 3 1 i
* > 10.100.1.12/30 10.100.1.14 - - - 3 i
* > 10.200.100.100/32 10.100.1.14 - - - 3 i
Router-3#show ip bgp neighbors 10.100.1.13 received-routes
BGP routing table information for VRF default
Router identifier 10.0.0.3, local AS number 3
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* >Ec 10.100.1.0/30 10.100.1.13 0 100 - 2 i
* 10.100.1.4/30 10.100.1.13 0 100 - 2 1 i
* 10.100.1.8/30 10.100.1.13 0 100 - 2 1 i
10.100.1.12/30 10.100.1.13 0 100 - 2 i
* > 10.100.1.16/30 10.100.1.13 0 100 - 2 i
* >Ec 10.200.200.200/32 10.100.1.13 0 100 - 2 4 i
Router-3#show ip route
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I - ISIS, A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route
Gateway of last resort is not set
B E 10.100.1.0/30 [200/0] via 10.100.1.5, Ethernet1
via 10.100.1.13, Ethernet2
C 10.100.1.4/30 is directly connected, Ethernet1
B E 10.100.1.8/30 [200/0] via 10.100.1.5, Ethernet1
C 10.100.1.12/30 is directly connected, Ethernet2
B E 10.100.1.16/30 [200/0] via 10.100.1.13, Ethernet2
S 10.200.100.100/32 is directly connected, Vlan200
B E 10.200.200.200/32 [200/0] via 10.100.1.5, Ethernet1
via 10.100.1.13, Ethernet2
C 10.200.0.0/16 is directly connected, Vlan200
Router-3#show ip arp
Address Age (min) Hardware Addr Interface
10.100.1.5 0 001c.73d6.d17f Ethernet1
10.100.1.13 0 001c.73d6.c0ff Ethernet2
10.200.50.50 0 001c.73d6.cc99 Vlan200, Ethernet4
10.200.100.100 0 001c.7379.7281 Vlan200, Ethernet3
Router-3#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
200 001c.7379.7281 DYNAMIC Et3 1 0:00:09 ago
200 001c.73d6.cc99 DYNAMIC Et4 1 0:00:19 ago
Total Mac Addresses for this criterion: 2
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
Router-4#show ip bgp summary
BGP summary information for VRF default
Router identifier 10.0.0.4, local AS number 4
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
10.100.1.9 4 1 10755 10805 0 0 00:09:14 Estab 6 5
10.100.1.17 4 2 10409 10464 0 0 00:10:00 Estab 6 5
Router-4#show ip bgp neighbors 10.100.1.9 advertised-routes
BGP routing table information for VRF default
Router identifier 10.0.0.4, local AS number 4
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* >Ec 10.100.1.0/30 10.100.1.10 - - - 4 2 i
* > 10.100.1.8/30 10.100.1.10 - - - 4 i
* > 10.100.1.12/30 10.100.1.10 - - - 4 2 i
* > 10.100.1.16/30 10.100.1.10 - - - 4 i
* >Ec 10.200.100.100/32 10.100.1.10 - - - 4 2 3 i
* > 10.200.200.200/32 10.100.1.10 - - - 4 i
Router-4#show ip bgp neighbors 10.100.1.9 received-routes
BGP routing table information for VRF default
Router identifier 10.0.0.4, local AS number 4
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* ec 10.100.1.0/30 10.100.1.9 0 100 - 1 i
* > 10.100.1.4/30 10.100.1.9 0 100 - 1 i
10.100.1.8/30 10.100.1.9 0 100 - 1 i
* 10.100.1.12/30 10.100.1.9 0 100 - 1 2 i
* 10.100.1.16/30 10.100.1.9 0 100 - 1 2 i
* ec 10.200.100.100/32 10.100.1.9 0 100 - 1 3 i
Router-4#show ip bgp neighbors 10.100.1.17 advertised-routes
BGP routing table information for VRF default
Router identifier 10.0.0.4, local AS number 4
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* > 10.100.1.4/30 10.100.1.18 - - - 4 1 i
* > 10.100.1.8/30 10.100.1.18 - - - 4 i
* > 10.100.1.16/30 10.100.1.18 - - - 4 i
* > 10.200.200.200/32 10.100.1.18 - - - 4 i
Router-4#show ip bgp neighbors 10.100.1.17 received-routes
BGP routing table information for VRF default
Router identifier 10.0.0.4, local AS number 4
Route status codes: s - suppressed, * - valid, > - active, E - ECMP head, e - ECMP
S - Stale, c - Contributing to ECMP
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* >Ec 10.100.1.0/30 10.100.1.17 0 100 - 2 i
* 10.100.1.4/30 10.100.1.17 0 100 - 2 1 i
* 10.100.1.8/30 10.100.1.17 0 100 - 2 1 i
* > 10.100.1.12/30 10.100.1.17 0 100 - 2 i
10.100.1.16/30 10.100.1.17 0 100 - 2 i
* >Ec 10.200.100.100/32 10.100.1.17 0 100 - 2 3 i
Router-4#show ip route
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I - ISIS, A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route
Gateway of last resort is not set
B E 10.100.1.0/30 [200/0] via 10.100.1.9, Ethernet1
via 10.100.1.17, Ethernet2
B E 10.100.1.4/30 [200/0] via 10.100.1.9, Ethernet1
C 10.100.1.8/30 is directly connected, Ethernet1
B E 10.100.1.12/30 [200/0] via 10.100.1.17, Ethernet2
C 10.100.1.16/30 is directly connected, Ethernet2
B E 10.200.100.100/32 [200/0] via 10.100.1.9, Ethernet1
via 10.100.1.17, Ethernet2
S 10.200.200.200/32 is directly connected, Vlan200
C 10.200.0.0/16 is directly connected, Vlan200
Router-4#show ip arp
Address Age (min) Hardware Addr Interface
10.100.1.9 0 001c.73d6.d17f Ethernet1
10.100.1.17 0 001c.73d6.c0ff Ethernet2
10.200.200.200 0 001c.73d6.9087 Vlan200, Ethernet3
Router-4#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
200 001c.73d6.9087 DYNAMIC Et3 1 0:00:08 ago
Total Mac Addresses for this criterion: 1
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
Host-1#ping 10.200.0.1
PING 10.200.0.1 (10.200.0.1) 72(100) bytes of data.
80 bytes from 10.200.0.1: icmp_req=1 ttl=64 time=0.201 ms
80 bytes from 10.200.0.1: icmp_req=2 ttl=64 time=0.146 ms
80 bytes from 10.200.0.1: icmp_req=3 ttl=64 time=0.148 ms
80 bytes from 10.200.0.1: icmp_req=4 ttl=64 time=0.143 ms
80 bytes from 10.200.0.1: icmp_req=5 ttl=64 time=0.145 ms
--- 10.200.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 0.143/0.156/0.201/0.026 ms, ipg/ewma 0.272/0.178 ms
Host-1#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.7379.6e61 Ethernet1
Host-1#show ip interface brief
Interface IP Address Status Protocol MTU
Ethernet1 10.200.100.100/16 up up 1500
Host-1#ping 10.200.200.200
PING 10.200.200.200 (10.200.200.200) 72(100) bytes of data.
80 bytes from 10.200.200.200: icmp_req=1 ttl=61 time=886 ms
80 bytes from 10.200.200.200: icmp_req=2 ttl=61 time=0.145 ms
80 bytes from 10.200.200.200: icmp_req=3 ttl=61 time=0.191 ms
80 bytes from 10.200.200.200: icmp_req=4 ttl=61 time=0.167 ms
80 bytes from 10.200.200.200: icmp_req=5 ttl=61 time=0.170 ms
--- 10.200.200.200 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2935ms
rtt min/avg/max/mdev = 0.145/177.361/886.136/354.387 ms, ipg/ewma 733.982/519.506 ms
Host-1#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.200.200 0 001c.7379.6e61 Ethernet1
Host-1#ping 10.200.50.50
PING 10.200.50.50 (10.200.50.50) 72(100) bytes of data.
80 bytes from 10.200.50.50: icmp_req=1 ttl=64 time=0.340 ms
80 bytes from 10.200.50.50: icmp_req=2 ttl=64 time=0.160 ms
80 bytes from 10.200.50.50: icmp_req=3 ttl=64 time=0.126 ms
80 bytes from 10.200.50.50: icmp_req=4 ttl=64 time=0.135 ms
80 bytes from 10.200.50.50: icmp_req=5 ttl=64 time=0.129 ms
--- 10.200.50.50 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 0.126/0.178/0.340/0.081 ms, ipg/ewma 0.662/0.255 ms
Host-1#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.50.50 0 001c.73d6.cc99 Ethernet1
10.200.200.200 0 001c.7379.6e61 Ethernet1
Host-1#ping 10.200.250.250
PING 10.200.250.250 (10.200.250.250) 72(100) bytes of data.
From 10.200.100.100 icmp_seq=1 Destination Host Unreachable
From 10.200.100.100 icmp_seq=2 Destination Host Unreachable
From 10.200.100.100 icmp_seq=3 Destination Host Unreachable
--- 10.200.250.250 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4002ms
pipe 3
Host-1#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.50.50 0 001c.73d6.cc99 Ethernet1
10.200.200.200 0 001c.7379.6e61 Ethernet1
Host-2#ping 10.200.0.1
PING 10.200.0.1 (10.200.0.1) 72(100) bytes of data.
80 bytes from 10.200.0.1: icmp_req=1 ttl=64 time=0.197 ms
80 bytes from 10.200.0.1: icmp_req=2 ttl=64 time=0.145 ms
80 bytes from 10.200.0.1: icmp_req=3 ttl=64 time=0.144 ms
80 bytes from 10.200.0.1: icmp_req=4 ttl=64 time=0.143 ms
80 bytes from 10.200.0.1: icmp_req=5 ttl=64 time=0.134 ms
--- 10.200.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 0.134/0.152/0.197/0.026 ms, ipg/ewma 0.270/0.174 ms
Host-2#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.73d6.ce25 Ethernet1
Host-2#ping 10.200.100.100
PING 10.200.100.100 (10.200.100.100) 72(100) bytes of data.
80 bytes from 10.200.100.100: icmp_req=1 ttl=61 time=39.8 ms
80 bytes from 10.200.100.100: icmp_req=2 ttl=61 time=0.163 ms
80 bytes from 10.200.100.100: icmp_req=3 ttl=61 time=0.175 ms
80 bytes from 10.200.100.100: icmp_req=4 ttl=61 time=0.189 ms
80 bytes from 10.200.100.100: icmp_req=5 ttl=61 time=0.187 ms
--- 10.200.100.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 134ms
rtt min/avg/max/mdev = 0.163/8.112/39.846/15.867 ms, ipg/ewma 33.533/23.431 ms
Host-2#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.73d6.ce25 Ethernet1
10.200.100.100 0 001c.73d6.ce25 Ethernet1
Host-2#ping 10.200.50.50
PING 10.200.50.50 (10.200.50.50) 72(100) bytes of data.
From 10.200.200.200 icmp_seq=1 Destination Host Unreachable
From 10.200.200.200 icmp_seq=2 Destination Host Unreachable
From 10.200.200.200 icmp_seq=3 Destination Host Unreachable
From 10.200.200.200 icmp_seq=4 Destination Host Unreachable
From 10.200.200.200 icmp_seq=5 Destination Host Unreachable
--- 10.200.50.50 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4002ms
pipe 3
Host-2#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.73d6.ce25 Ethernet1
10.200.100.100 0 001c.73d6.ce25 Ethernet1
Host-3#show ip arp
Address Age (min) Hardware Addr Interface
10.200.0.1 0 001c.7379.6e61 Ethernet1
10.200.100.100 0 001c.7379.7281 Ethernet1
감사합니다.
Yoong.