본문 바로가기
network/ccie-bgp

Using AS-Path Prepending


Return Path Selection in a  Multihomed AS
- weight or lp 를 이용하여 나가는 트래픽에 대한 조정이 가능 했지만
return traffic 에 대하여 조절 하기 위해서 as path prepending 을 이용 한다.

- 아래 그림에서 2mbps 회선을 사용하는 회선에 대하여 나가고 return 되는 traffic 을 주 회선을 사용 하려고 하는 시나리오이다.

 


- AS387 기준으로 return 될 경우 가장 짧은 as-path 를 가진 회선으로 가기 때문에 64 kbps회선으로 return 되서 보내진다.
- 이때 AS 387 에서 LP를 이용해서 사용 조절이 가능 하지만 AS가 다른 회사에서 협의가 이루어 지기 때문에 
다른 AS에 대한 조절이 힘들다 . 
- 그렇기 때문에 AS-PATH우선순위를 조절 하는 기법을 as-path  prepending 이라고 한다.
- 아래 as387  은 기본적으로 as 462 에서 받는 as-path 갯수가 2개 이며 as 213 보낸 as-path 가 1개 이지만,
213 as-path 를 늘려러 강제로 as462 로 보내게 된다.
(만약 387 에서 213 이 387로 prependig 할 경우 에는 자신의 AS 번호는 받지 않기 때문에 DROP됨)
- 이때, 또다른 AS에 피해를 주지 않기 위해서  자신의 AS번호호 prepending 해야 한다.


AS-Path Prepending  Design Considerations

• If a primary and backup scenario is desired
– Use a long prepended AS path over the backup link to ensure that the  primary AS path will always be shorter.
– A long backup AS path consumes memory on every Internet router.
=> 경로가 긴 ASPATH는 메모리를 많이 사용 한다.
– Experiment with various AS-path lengths until the backup link  is idle.
– Add a few more AS numbers for additional security (unexpected changes in  the Internet).
=>  prepending 을 추가 하면 추가 할 수록 들어 올수 있는 route 정보가 줄어 들기 때문에 
테스트를 하면서 조절 해야한다.


• If traffic load distribution is desired
– Start with a short prepended AS path, monitor link use, and extend the  prepended path length as needed.
– Continuously monitor the link use and change the prepended  AS-path length if required.


Configuring AS-Path Prepending

## route-map 을 통해서 아래와 같이 설정이 가능하다.
## route-map 을 set 할 경우 prepending 은 기존에 있는 as-path를 add하는 개념으로 
## 기존에 있는 as-path 에서 추가된 as-path 로 설정되어 보내 진다.

router(config)#route-map name permit sequence
match condition
set as-path prepend as-number [ as-number … ]


- 아래 설정시에는 5개를 추가 하기 때문에 기존의 AS-PATH를 포함 하여  6개의 as-path 를 보내게 된다.



Monitoring AS-Path Prepending

- AS-Path Prepending 는 설정된 장비에서 모니터링 할 수 없으며,
받는 장비에서 as-path 를 확인해서 가능 하다. 아니면 패킷을 직접 샘플링 해서 update mssage 에서 path attribute 를 확인 해서
동일하게 반복되는 as-path를 확인 해야 한다.



## 아래와 같이 정규식을 이용하여 prepending 을 확인 할 수 있다.

router>show ip bgp regexp regular-expression


AS-Path Filtering Concerns? AS-Path  Prepending

- ISP업체들은 prepending 을 받지 않도록 filter 설정 되어 있/는 경우가 많다.
- ^[0-9]+$ 의 정규식은 1개의 as만 허용 하기 때문에 prepending 을 허용 하지 않는다.
그렇기 때문에 아래와 같은 정규식으로 허용 해줘야 한다.
^([0-9]+)(_\1)*$




- 아래와 같이 ^213(_213)*$ 를 통해서 213 으로 prepending 한 것 을 허용 할 수 있다.





EX) prepending LAB

아래 LAB 에서 R5는 R8의 loopbak 0 8.8.8.8 으로 가기 위해서는 R7을 통해서 가는 방법과 R4,R6을 거쳐서 가능 방법 2가지가 있다.


## 기본적으로 아래 bgp 테이블과 해당 네트워크의 정보를 확인 하면 R7 (next hop192.168.57.7 )가는 경로가 
## external 이기 때문에 internal 로 가는 경로보다 높기 때문에 BEST PATH가 되어 전달 된다 .



## EBGP로 가는 경로를 IBGP가 우선이 되도록 R7에서 AS-PATH 를 조절 해본다.

## 8.8.8.8.8/32 만 적용 하기 위한 acl 정책을 추가한다.
R7(config)#access-list 77 permit 8.8.8.8 0.0.0.0.0


## route-map pp-test 이름으로 10번 seq 에 8.8.8.8 이란 acl 과 동일한 route 정보에 대하여 prepending 을 하는데 
### 자신의 as 번호 777 777 을 두번 하여 상대 네이버에서는 as-path 가 기존 1개에서 3개로 적용된다.

R7(config)#route-map pp-test permit 10
R7(config-route-map)#match ip address 77
R7(config-route-map)#set as-path prepend 777 777
R7(config-route-map)#ex
R7(config)#route-map pp-test permit 20


## 해당 route-map 을 네이버에 적용 한다. 이때 외부에서 자신의 정보를 받아 가는 것이기때문에 out 으로 설정 한다.
R7(config-router)#neighbor 192.168.57.5 route-map pp-test out

## 이때 자신의 bgp 테이블에는 변화가 없으며, 확인 하기 위해서 상대 장비에서 확인 혹은 path attribute 패킷을 확인 해야 한다. 

# R5에서 확인 하면 아래와 같이 AS-path 가 늘어 나면서 , BGP우선순위중 IBGP,EBGP 우선순위보다 
# AS-path 가 높기 때문에 AS-path 가 더 짧은 아래 경로가 BEST PATH가 된다 

 



## 해당 구간의 path attribute 를 확인 하면 8.8.8.8/32 에 대한 AS-path 가 변경 된것 을 확인 할 수 있다.




## 하지만 대부분의 ISP기관에서는 prependig을 막기위해 as-path 에대한 regexp 설정을 필터리스트를 통해 조절 한다.
## 아래와같이 1개의 AS-path 만 허용 하도록 설정 한다.
R5(config)#ip as-path access-list 66 permit ^[0-9]+$
R5(config)#router bgp 123
R5(config-router)#neighbor 192.168.57.7 filter-list 66 in

## 디버그를 통해 해당 path 길이로 인하여 차단 되는 것을 확인 할 수 있으며,



## BGP테이블에 변경된 사항을 확인 할 수 있다.

 

 

반응형