AS-PATH 어트리뷰트를 이용하여 최적의 PATH의 선택은 최소의 AS 넘버를 가진 PATH를 선택하는 것 부터 시작한다. 예를 들어보면
10.1.3.0/24 에 대한 BGP PATH는 두 PATH 가 등록될 것이다. 하나는 300,200 또하나는 200
을 거쳐서 통신을 할것이다. 하지만 AS-PATH 어트리뷰트 즉 BGP는 최적의 경로로 200 으로
부터 넘어온 PATH를 선택한다. 또한 라우팅 테이블에는 200에서 넘어온 즉 NEXT-HOP이 1.1.1.2 라우트만이 등록될 것이다.
여기서 또 문제가 되는것이..RB입장에서 보면.. AS100에서 AS400으로 통신하는 모든 패킷은
AS-PATH에 입각하여 AS200을 이용한다는것이다. AS200 입자에서보면 자신이 두 AS 사이에
TRANSIT 가 되는데.. 이를 막기위해 다시 AS-PATH 를 이용하여 AS400으로 가는것들은 AS300
을 이용하게 할것이다. 방법은 AS200에서 AS400 에대한 PATH를 광고할때 AS100 입장에서
AS400은 AS300에보다 AS200에서 더 멀게 보이게 광고하면 가능할 것이다.
RB :
router bgp 200
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 ebgp-multihop 3
neighbor 1.1.1.1 update-source Loopback0
neighbor 1.1.1.1 route-map as-prepend out (AS100으로 광고할때 as-prepend 적용)
ip as-path access-list 1 deny ^$ (자기의 AS로 시작하는 광고는 deny)
ip as-path access-list 1 permit .* (나머지 모든 AS의 광고는 permit)
route-map as-prepend permit 10
match as-path 1 (as-path 1 과 매칭되면 광고할때 200 200 200 을 append 해서 광고)
set as-path prepend 200 200 200
route-map as-prepend permit 20 (자기자신에 대한 광고는 아무런 action 없이 광고)