'metric'에 해당되는 글 2건

  1. 2009.12.01 PBR - 정책기반 라우팅 설정
  2. 2009.05.07 Equal-Cost / Weighted Round-Robin Multi-Path (ECMP/WRRMP) Routing
2009.12.01 09:22

PBR - 정책기반 라우팅 설정

PBR이란? Policy Based Routing
route-map을 이용하여 특정 조건에 해당하는 패킷을 라우팅 테이블과 상관없이 관리자가 원하는 곳으로 전송시키는 기능을 말한다. 
route-map에 해당되지 않는 패킷은 라우팅테이블에 따라 전송된다. PBR을 사용하면 패킷의 출발지 또는 목적지 주소에 따라 원하는 경로를 선택할 수 있기 때문에 경우에 따라 유용하다. 예를 들면 2개의 ISP를 신청중이라면 PBR사용해서 IP에 따라 ISP를 선택 사용할 수 있다.

1. PBR 설정
router(config)# access-list [엑세스리스트넘버] [permit | deny] [네트워크아이디] [외일드마스크]
 (PBR을 적용시킬 패킷을 엑세스리스트를 이용하여 지정)
router(config)# route-map [route-map이름] [permit | deny] [route-map 순서]
 (PBR에서 사용할 루트맵 생성)
router(config-route-map)# match ip address [엑세스리스트 넘버]
 (match 명령어를 사용하여 앞서 만든 엑세스리스트를 지정)
router(config-router-map)# set ip net-hop [route-list 정책이 맞을 경우 패킷을 전송할 아이피]
 (match명령어에 의해 지정된 패킷을 전송할 ip지정, 해당되는 패킷을 전송할 수도 드랍할 수도 있도록 설정 가능)
router(config-router-map)# exit
router(config)# interface [정책을 적용할 패킷이 들어오는 인터페이스]
 (패킷이 유입되는 인터페이스지정)
router(config-if)# ip policy route-map [route-map이름]
 (해당 인터페이스에 루트맵 설치) 

2. PBR 설정 실습
위 토폴로지는 eigrp로 구성되어 있다. 만약 PBR 정책을 적용하지 않는다면 R0에서 172.16.1.0을 패킷이 이동할 때,  R1을 지나 R3로 이동 할 것이다.
왜냐하면 eigrp는 기본적으로 비균등로드를 하지 않기 때문에 가장 빠른 경로를 선택하여 패킷을 전송한다.
        
그러나, route-map을 사용하여 PBR정책을 적용할 경우 라우팅테이블에 올라온 경로를 무시하고 정책대로 패킷의 경로를 지정 할 수 있는데 위 토폴로지에서는 192.168.1.0 /24 네트워크에서 유입되는 패킷을 R2를 경유해서 목적지 172.16.1.0 /24로 도착하게 정책을 설정 하였다.

1) PBR 정책 설정
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
 (엑세스리스트를 사용하여 PBR에 적용시킬 리스트 1번을 만든다)
R1(config)# route-map psk permit 1   (첫번째 라우트맵을 psk란 이름으로 만듬)
R1(config-route-map)# match ip address 1    (엑세스리스트 1번이 유입될 경우.....
R1(config-route-map)# set ip next-hop 192.168.2.2                                           192.168.2.2 홉으로 보냄) 
R1(config-route-map)# exit
R1(config)# interface s1/0
R1(config-if)# ip policy route-map psk   (라우트맵 psk를 패킷이 유입되는 s1/0에 설치)

2) R1의 라우팅 테이블 

3) 192.168.1.0 /24 에서 172.16.1.0 /24로 패킷이 이동하는 결과
 
4) R1에서 debug ip policy 결과

3. PBR을 이용한 선택적인 메트릭 재분배
보통 다른 프로토콜사이에서 재분배를 하다보면 관리자가 직접 재분배로 인하여 외부도메인을 통해서 들어오는 패킷의 메트릭을 지정해야 한다.
그러나 관리자가직접 지정하는 메트릭은 실제로 서브넷마다 메트릭이 달라도 외부도메인에서 볼때 동일하게 적용되는 문제점을 가지고 있다.
그래서 PBR을 이용하여 조건을 지정해 서브넷 별로 메트릭을 다르게 설정할 수 있는데 방법은 다음과 같다.

(2. 번의) 일반적인 PBR설정에서는 유입되는 패킷(인터페이스에 적용설정)에 라우트맵을 적용하는 반면, 재분배에 적용시에는 라우터 설정모드에서 재분배 명령에 첨부하여 적용설정 한다.

    1) 정책설정 (인터페이스 주소 설정 제외)
      R2(config)# access-list 10 permit 199.172.0.0 0.0.2.255
      R2(config)# route-map ripospf permit 1
      R2(config-route-map)# match ip add 10
      R2(config-route-map)# set metric 100
      R2(config-route-map)# set metric-type type-1
      R2(config-route-map)# exit
      R2(config)# route-map ripospf permit 2
      R2(config)# router rip
      R2(config-route)# net 199.172.2.2
      R2(config-route)# net 199.172.1.2
      R2(config-route)# exit
      R2(config)# router ospf 1
      R2(config-route)# net 192.168.1.0 0.0.0.255 area 0
      R2(config-route)# re rip subnets route-map ripospf
      R2(config-route)# exit

      2) R3 (ospf라우터) 라우팅테이블 확인
      
      - R2 (재분배 라우터의 route-map 설정 확인)


1. R2에서 출발지 주소가 1.1.1.1 이고 목적지 주소가 1.1.4.4 인 패킷은 R2에서 S1/0.23 으로 전송하게 하자.
   (원래는 S1/0.32 로만 가게 되어있다. why? S1/0.32 가 bandwidth = 2Mbps 로 더 좋은 회선이기 때문에)

R2#debug ip policy
R2#conf t
R2(config)#ip access-list extended R1=>R4
R2(config-ext-nacl)#permit ip host 1.1.1.1 host 1.1.4.4
R2(config-ext-nacl)#exit
R2(config)#route-map P-R1=>R4
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip next-hop 1.1.23.3
R2(config-route-map)#int s1/0.12
R2(config-subif)#ip policy route-map P-R1=>R4
R2(config-subif)#end
R2#
*Mar  1 00:11:53.759: PR-RP: Set Serial1/0.12 policy_routemap=P-R1=>R4; cached_map=P-R1=>R4
*Mar  1 00:11:53.767: PR-RP: Set Serial1/0.12 policy_routemap=P-R1=>R4; cached_map=P-R1=>R4
*Mar  1 00:12:07.983: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:12:07.983: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

2. 일반라우팅을 우선 하고 라우팅테이블 경로가 없을때 PBR 적용하게 하기

R2(config)#route-map P1-R1=>R4
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip default next-hop 1.1.23.3

@@@ R1#ping 1.1.4.4 so 1.1.1.1 re 2 @@@

R2(config-subif)#
*Mar  1 00:21:30.919: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:21:30.919: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy rejected(explicit route) - normal forwarding

R2(config)#ip prefix-list BAN-R4 deny 1.1.4.0/24
R2(config)#ip prefix-list BAN-R4 permit 0.0.0.0/0 le 32
R2(config)#
R2(config)#router ospf 1
R2(config-router)#distribute-list prefix BAN-R4 in s1/0.23
R2(config-router)#distribute-list prefix BAN-R4 in s1/0.32
R2(config-router)#do sh ip ro ospf
     1.0.0.0/24 is subnetted, 7 subnets
O       1.1.1.0 [110/65] via 1.1.12.1, 00:00:09, Serial1/0.12
O       1.1.3.0 [110/51] via 1.1.32.3, 00:00:09, Serial1/0.32
O       1.1.34.0 [110/114] via 1.1.32.3, 00:00:09, Serial1/0.32

@@@ R1#ping 1.1.4.4 so 1.1.1.1 re 2 @@@

R2(config-router)#
*Mar  1 00:23:21.759: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:23:21.759: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

3. PBR 부하분산

R4(config)#int lo 2
R4(config-if)#ip add 2.2.4.4 255.255.255.0
R4(config-if)#ip os ne point-to-p
R4(config-if)#router os 1
R4(config-router)#net 2.2.4.4 0.0.0.0 ar 0

R2(config)#ip access-list extended R1=>R4-2
R2(config-ext-nacl)#permit ip host 1.1.1.1 host 2.2.4.4
R2(config-ext-nacl)#exit
R2(config)#route-map P-LB
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip next-hop 1.1.23.3
R2(config-route-map)#exit
R2(config)#route-map P-LB 20      
R2(config-route-map)#mat ip add R1=>R4-2    
R2(config-route-map)#set ip next-hop 1.1.32.3
R2(config-route-map)#exit
R2(config)#
R2(config)#int s1/0.12
R2(config-subif)#ip policy route-map P-LB

R1#p 1.1.4.4 so lo 0 re 1
*Mar  1 00:32:54.867: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:32:54.867: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

R1#p 2.2.4.4 so lo 0 re 1
*Mar  1 00:33:04.675: IP: s=1.1.1.1 (Serial1/0.12), d=2.2.4.4, len 100, FIB policy match
*Mar  1 00:33:04.675: IP: s=1.1.1.1 (Serial1/0.12), d=2.2.4.4, g=1.1.32.3, len 100, FIB policy


출처 : http://light99.egloos.com


Trackback 0 Comment 0
2009.05.07 20:18

Equal-Cost / Weighted Round-Robin Multi-Path (ECMP/WRRMP) Routing

ecmp는 equal-cost multipath 라고 하는 것으로 dynamic routing protocol에서는 목적지에 대한 경로가 여러개 이더라도 가장 metric 이 낮은 경로를best path로 설정 합니다. 이렇게 했을 경우에는 여러경로가 같은 metric을 가졌다 하더라도 하나의 경로만을 사용하게 됩니다.
이 때 같은 metric의 경로가 여러개 있을 때 이 경로를 모두 사용하도록 하는 방법입니다.
일반적으로 per-destination을 기본으로 load balancing이 되는데 packet별로도 할수 있습니다.

하여간 가장 적절한 경로를 선정할 때 사용되는 metric의 값이 서로 같은 여러 경로에 대하여 그 경로를 모두 사용하도록 하는 방법이 ecmp 입니다. 라우팅 프로토콜마다 사용하는 metric이 다르고 지원하는 multi path의 수도 조금씩 다릅니다.

ECMP/WRRMP는 kernel_menuconfig의 networking 옵션에서 advanced router를 선택하면 활성화된다. 이 옵션을 통해 라우터는 default 루트를 한개 이상 지정할 수 있게 되고, 패킷 헤더의 ip address들을 hash한 결과를 이용해 여러개의 루트 중 한개로 라우팅을 하게 된다. 이 때, hash의 결과값들은 디폴트로 각 루트에 동일하게 (equal-cost) 할당하며, weight 파라미터를 이용하면 특정 루트에 더 많은 weight를 줄 수 있다. 또한 mpath 파라미터로 next hop를 결정하는 특정한 방법을 선택할 수도 있다.

패킷이 라우터에 도착하면 라우터는 먼저 라우팅캐쉬에 패킷의 도착IP주소와 관련된 라우팅정보가 들어있는지 확인한다. 만일 캐쉬에 이 정보가 들어있으면 그 라우팅정보에 따라 패킷을 포워딩한다. 만일 캐쉬에 들어있지 않으면 라우팅테이블의 default 라우팅정보를 참조하게 되는데, 이때 multipath로 설정이 되어 있다면 next hop을 결정하는 알고리즘에 따라 루트를 결정한다. 가장 기본적인 round-robin 알고리듬은 다음과 같다.

(1) 초기화: 각 루트(route_1,route_2,...,route_n)에 할당된 weight값들(W1,W2,...,Wn)과 이 값들의 총합(Wt=SUM(Wk))을 계산한 후, 이를 power라는 변수(P1,...Pn,Pt)에 각각 저장한다. 그리고, 각 루트는 [0,...,Wt-1]의 숫자들을 각 power 크기만큼 순서대로 나눠가지게 되는데, 각각이 포함하는 숫자의 초기범위는 route_1:[0,...,W1-1], route_2:[W1,....,W2-1],...,route_n:[Wt-Wn,...,Wt-1]이 된다.

(2) 루트 선택: [0,...,Pt-1]중의 한 숫자를 임의로 고른 후에 그 숫자가 포함되는 루트를 선택한다. 그리고나서, 그 루트에 해당되는 power값에서 1을 뺀다. 만일 route_k가 선택되었다면, Pk=Pk-1, Pt=Pt-1를 실행한후, 이를 바탕으로 각 루트가 가지는 숫자의 범위를 새로 계산한다. 만일 Pt=0이 되면 (1)의 초기화과정을 반복한다.

[커널 컴파일시 도움말]

CONFIG_IP_ROUTE_MULTIPATH:
Normally, the routing tables specify a single action to be taken in
a deterministic manner for a given packet. If you say Y here however,
it becomes possible to attach several actions to a packet pattern,
in effect specifying several alternative paths to travel for those
packets. The router considers all these paths to be of equal "cost"
and chooses one of them in a non-deterministic fashion if a matching
packet arrives.

Symbol: IP_ROUTE_MULTIPATH [=y]
Prompt: IP: equal cost multipath
  Defined at net/ipv4/Kconfig:107
  Depends on: NET && INET && IP_ADVANCED_ROUTER
  Location:
    -> Networking
      -> Networking support (NET [=y])
        -> Networking options
          -> TCP/IP networking (INET [=y])


[스크립트 설정]

### Wired Router (2 DL, 1 UL) ###

# Set up wired interfaces (DL)
ifconfig eth1 10.10.0.1 netmask 255.255.255.0
ifconfig eth2 10.10.1.1 netmask 255.255.255.0

# Set the routing table
ip route del 10.10.2.0/24
ip route add 10.10.2.0/24 mpath rr nexthop via 10.10.0.2 dev eth1 weight 2 nexthop via 10.10.1.2 dev eth2 weight 1
ip route del default
ip route add default via *.*.*.* dev eth0
ip route show


### Wireless Router (2 UL, 1 W-DL) ###

# Set up wired (UL) and wireless (W-DL) interfaces
ifconfig eth0 10.10.0.2 netmask 255.255.255.0
ifconfig eth1 10.10.1.2 netmask 255.255.255.0
wlanconfig wlan0 create wlandev wifi0 wlanmode master
iwconfig wlan0 essid test-ecmp
iwconfig wlan0 chan 156
ifconfig wlan0 10.10.2.1 netmask 255.255.255.0

# Set the routing table
ip route del default
ip route add default nexthop via 10.10.0.1 dev eth0 weight 2 nexthop via 10.10.1.1 dev eth1 weight 1
ip route show


### Wireless Client (1 W-UL) ###

# Set up a wireless (W-UL) interface
ifconfig eth0 down
ifconfig eth1 down
wlanconfig wlan0 create wlandev wifi0 wlanmode managed
iwconfig wlan0 essid test-ecmp
iwconfig wlan0 chan 156
ifconfig wlan0 10.10.2.2 netmask 255.255.255.0

# Set the routing table
ip route del default
ip route add default via 10.10.2.1 dev wlan0
ip route show


root@failsafe:/etc/quagga# cat zebra.conf
hostname router
password xiocom
enable password xiocom
!
debug zebra events
debug zebra kernel
!
interface lo
        ip address 127.0.0.1/32
interface wlan0
        ip address 10.10.2.1/24
interface eth0
        ip address 10.10.0.1/24
interface eth1
        ip address 10.10.1.1/24
!
ip route 0.0.0.0/0 10.10.0.1
ip route 0.0.0.0/0 10.10.1.1


root@failsafe:/etc/quagga# cat ospfd.conf
hostname router-ospf
password xiocom
enable password xiocom
!
interface wlan0
        no ip ospf authentication-key
!
interface eth0
        ip ospf cost 20
        no ip ospf authentication-key
!
interface eth1
        ip ospf cost 20
        no ip ospf authentication-key
!
router ospf
  ospf router-id 127.0.0.1
  network 10.10.2.0/24 area 0
  network 10.10.0.0/24 area 0
  network 10.10.1.0/24 area 0
!
log file /etc/quagga/ospfd.log


출처 : http://loveyuna.egloos.com


## Cisco

Enabling Native Load Splitting Across Equal-Cost Paths

Perform this task to load split IP multicast traffic across multiple equal-cost paths.

Native Multicast Load Splitting Across Equal-Cost Paths

If two or more equal-cost paths from a source are available, unicast traffic will be load split across those paths. However, by default, multicast traffic is not load split across multiple equal-cost paths. In general, multicast traffic flows down from the Reverse Path Forwarding (RPF) neighbor. According to Protocol Independent Multicast (PIM) specifications, this neighbor must have the highest IP address if more than one neighbor has the same metric.

Configuring load splitting with the ip multicast multipath command causes the system to load split multicast traffic across multiple equal-cost paths. When the ip multicast multipath command is configured and multiple equal-cost paths exist, the path in which multicast traffic will travel is selected based on the source IP address. Multicast traffic from different sources will be load split across the different equal-cost paths. Load splitting will not occur across equal-cost paths for multicast traffic from the same source sent to different multicast groups.


Note The ip multicast multipath command load splits the traffic and does not load balance the traffic. Traffic from a source will use only one path, even if the traffic far outweighs traffic from other sources.


The ip multicast multipath command does not support configurations in which the same PIM neighbor IP address is reachable through multiple equal-cost paths. This situation typically occurs if unnumbered interfaces are used. Use different IP addresses for all interfaces when configuring the ip multicast multipath command.

SUMMARY STEPS

1. enable

2. configure terminal

3. ip multicast multipath

4. Repeat Steps 1 through 3 on all the routers in a redundant topology.

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

enable

Example:

Router> enable

Enables privileged EXEC mode.

Enter your password if prompted.

Step 2 

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3 

ip multicast multipath

Example:

Router(config)# ip multicast multipath

Enables load splitting of IP multicast traffic across multiple equal-cost paths.

Because this command changes the way an RPF neighbor is selected, it must be configured consistently on all routers in a redundant topology to avoid looping.

Step 4 

Repeat Steps 1 through 3 on all the routers in a redundant topology.


Trackback 0 Comment 0