770 likes | 1.01k Views
BGP 에서 Traffic 제어. ㈜ 데이콤 장우현 whchang@bora.net. 최근 동향. BGP 네트웍 증가 소규모 ISP 들 , 금융기관들 , 정보제공업체들 IX Point 의 다양화 KIX(DACOM, KT, NCA), IX-Seoul (INET) DACOM L2IX, KINX ISP 들의 직접 연동 강화 IP block filtering 한계 ( 유명무실 ) @Major US ISP /19 block 이하에 대한 filtering by Sprint. BGP 운영시 고려사항.
E N D
BGP에서 Traffic 제어 ㈜데이콤 장우현 whchang@bora.net
최근 동향 • BGP 네트웍 증가 • 소규모 ISP들, 금융기관들, 정보제공업체들 • IX Point의 다양화 • KIX(DACOM, KT, NCA), IX-Seoul (INET) • DACOM L2IX, KINX • ISP들의 직접 연동 강화 • IP block filtering 한계 (유명무실) @Major US ISP • /19 block 이하에 대한 filtering by Sprint
BGP 운영시 고려사항 • IP Address block • 라우터 사양 • 안정성 • Traffic 제어
IP Address block • 연속된 32개 C Class IP block (/19) • 제한없음 • 연속된 16개 C Class IP block (/20) • 제한이 있다고 하며, /20에 대해서는 제한을 없애자는 의견들이 있음. 그러나 실질적인 제한은 거의 없음 • 낱개의 C Class IP block • 제한이 있다고 하나, 실질적인 제한은 거의 없음 • Subnetted C Class IP block • 해외는 제한되며, 국내도 제한가능성이 매우 높음
라우터 사양 • 3Mbps 이하의 Traffic을 처리하고 국내정보를 전달받지 않는 경우 Cisco 라우터기준 2500 시리즈로 BGP 접속 가능 • 3~4Mbps 이상의 Traffic을 처리하는 경우는 Cisco 라우터기준 3600 시리즈 이상 권장. 100M LAN Interface 이용 권장 • 국내 BGP 정보를 유지하기 위해서는 32M RAM 이상 권장 (3000개 정보 유지) • 해외 BGP 정보를 유지하기 위해서는 64M RAM 이상 권장 (60000개 정보 유지)
안정성 • 1개의 라우터 이용시 라우터에 장애 발생시 서비스 장애 발생 • 서로 다른 국내/국제 연결 경로를 갖고 있는 ISP를 선택하여 연결 • 한 개의 ISP에게 여러 개의 회선을 연결할 경우 • Loopback Address를 이용해 1개의 BGP session을 구성하거나, • 복수개의 BGP Session을 구성하여 장애에 대비
Traffic 조절 대상 • Inbound Traffic 조절 • 정보제공업체를 제외한 대부분의 ISP/기업들이 Inbound Traffic 조절 필요 • Outbound Traffic 조절 • 정보제공업체들이 외부와 연결된 복수개의 회선을 효율적으로 이용하기 위해 Outbound Traffic 조절 필요
Traffic 조절시 유의사항 • Inbound Traffic을 조절하기 위해서는 내가 전달하는 라우텅정보를 조절하여야 함 • 내가 원하는 대로 제어하는 것이 쉽지 않음 • Outbound Traffic을 조절하기 위해서는 내가 전달받는 라우팅정보를 조절하여야 함 • 내가 원하는 대로 거의 100% 제어 가능 • BGP에서 목적지로 가는 경로는 항상 1개임 • Best Path는 1개 • 100% 50:50 traffic 분산은 불가능 • AS-Path & Prefix Filtering
상황요소들 • 라우터 개수 • 연결된 ISP의 AS 구성 방식 • 1개의 ISP에 연결된 회선 수 • 회선대역 • IP block 개수 • IP block이 ISP IP block에 포함되는 경우
Traffic 조절 수단 • Inbound • as-path 길이 • MED 값 • prefix 길이 • Outbound • weight (only Cisco IOS) • local_preference • as-path 길이 • MED 값
Traffic 조절 수단 (cont.) • Wegiht: 값을 클수록 best path • Local Preference: 값이 클수록 best path • As-path 길이: 길이가 짧을수록 best path • MED: 값이 작을수록 best path • prefix 길이: 길이가 길수록 best path
상황1 • ABC-A 기업 • Cisco 2501 라우터 1대 • 512Kbps 1회선씩 2개의 ISP에 연결. • Inbound Traffic이 많음 • IP block 200.200.200.0/24 이용 • AS Number 9999
상황 1에 대한 검토 • Cisco 2501 라우터 1대 • ISP로부터 정보를 전달받지 않고, ISP에게 200.200.200.0/24만을 전달하는 것이 바람직 • LAN Interface가 10M Ethernet이므로 3Mbps 이상 외부와의 Traffic 처리 곤란. 그러나 512Kbps 회선이 2개이므로 문제없음 • 2Mbps 2회선을 이용할 경우에는 LAN Interface를 100M Interface로 교체해주는 것이 바람직하며, 이 경우 상위 기종 라우터 이용 필요 • 혹은 10M Interface가 2개 이상 지원되는 라우터 이용해야 함 • 라우터가 1대이므로 장애 가능성 잠재
상황 1에 대한 검토 (cont.) • 512Kbps 1회선씩 2개의 ISP에 연결 • 동일대역의 회선이므로 outbound traffic은 default route를 2개만을 선언하여 50:50으로 분산 가능. • 국내정보를 2개의 ISP로부터 받을 수 있는 라우터를 이용한 경우 default route만으로는 outbound traffic 분산이 완전하지 않을 수 있음. 이 경우에는 weight, local_preference, as-path, metric등으로 outbound traffic 조절 필요 • 동일대역 회선이더라도 연결된 사업자에 따라 inbound traffic이 매우 불균형상태일수 있음. 이 경우 as-path, MED, prefix 길이 등으로 traffic 조절 필요
상황 1에 대한 검토 (cont.) • 2개의 ISP에게 연결되어 있으므로 전체장애 발생 가능성은 낮음 • Inbound Traffic이 많음 • outbound traffic 조절보다는 inbound traffic 조절 방법 숙지 필요 • 불균형한 상태로 회선이 이용될 경우, 필요에 따라서는 어느 1개의 회선대역 증가 필요 • IP block 200.200.200.0/24 이용 • C Class 1개 block을 이용하므로 prefix 길이를 이용한 inbound traffic 조절은 곤란
Case 1 • 상황1에서 AS100, AS200에 연결 AS100 1.1.1.1 AS9999 Internet 1.1.1.2 국내 인터넷 2.2.2.2 AS200 2.2.2.1
Case1 Config 설정 interface ethernet0ip address 200.200.200.1 255.255.255.0ip route-cache same-interfaceno ip directed-broadcast ! router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 filter-list 20 inneighbor 2.2.2.1 filter-list 20 inneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 out
Case1 Config 설정(cont.) ip as-path access-list 10 permit ^$ ! ip as-path access-list 20 deny .* ! access-l 100 per ip host 200.200.200.0 host 255.255.255.0 ! ip route 0.0.0.0 0.0.0.0 1.1.1.1 ip route 0.0.0.0 0.0.0.0 2.2.2.1
Case2 • Case1에서 Cisco2501이 상위기종으로 교체되어 국내정보를 받을 수 있는 상황이 됨 • 국내 ISP들은 대개 국내정보만을 전달함 router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 out no neighbor 1.1.1.1 filter-list 20 inno neighbor 2.2.2.1 filter-list 20 in neighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 out
Case3 • Case2에서 AS100과 연결된 회선의 Inbound traffic이 100%에 가까운 반면 AS200과 연결된 회선의 Inbound traffic이 50% 이하임 • 원인 • AS100에 정보제공시스템이 많거나 • AS9999에 대해 다른 네트웍관점에서 AS100을 경유하는 것이 as-path 길이가 짧을 경우 • 해결방안 • as-path 길이를 조절 • as-path prepend
Case3 (cont.) *>200.200.200.0 100 9999 *>200.200.200.0 300 200 9999 AS400 AS100 200.200.200.0/24 AS9999 AS500 AS200 AS300 AS600 *>200.200.200.0 100 9999 *>200.200.200.0 300 200 9999
Case3 (cont.) *>200.200.200.0 100 9999 9999 *>200.200.200.0 300 200 9999 AS400 AS100 AS9999 AS9999 AS500 200.200.200.0/24 AS200 AS300 AS600 *>200.200.200.0 100 9999 9999 *>200.200.200.0 300 200 9999
Case3(cont.) router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 out neighbor 1.1.1.1 route-map MY-PREPEND out ! route-map MY-PREPEND permit 10 set ip as-path prepend 9999
Case4 • Case2에서 AS100과 연결된 회선을 100%가깝게(병목현상), AS200과 연결된 회선을 80% 정도 이용시 • 이 경우에는 AS100과 연결된 회선대역을 늘려주어야 하는 것이 바람직함. • Case3에서와 같이 as-path prepend를 이용해 문제를 해결해 보려고 시도할 수는 있으나, 그 경우 AS100과 연결된 회선의 대역은 50%, AS200과 연결된 회선의 대역은 100%를 이용(병목현상)하는 상황 발생
Case5 • Case1에서 IP block을 1개 더 얻은 경우 • 200.200.201.0/24 추가 • 200.200.200.0/23 • 상황 • AS100과 연결된 회선은 100% 이용(병목현상)하는 반면, AS200과 연결된 회선은 50% 이하 이용 • 원인 • Case3과 동일한 원인일 가능성이 높음 • 해결방안 • as-path prepend • specific prefix 전달
Case5(cont.) 200.200.200.0/24 9999 9999 200.200.201.0/24 9999 AS400 AS100 200.200.200.0/24 200.200.201.0/24 AS9999 AS500 AS200 AS300 AS600 *>200.200.200.0/24 300 200 9999 *>200.200.200.0/24 100 9999 9999 *>200.200.201.0/24 300 200 9999 *>200.200.201.0/24 100 9999 200.200.200.0/24 9999 200.200.201.0/24 9999
Case 5(cont.) router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0network 200.200.201.0neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 out neighbor 1.1.1.1 route-map MY-PREPEND out ! route-map MY-PREPEND permit 10match ip address 110set ip as-path prepend 9999 route-map MY-PREPEND permit 20 ! access-li 100 per ip host 200.200.200.0 ho 255.255.255.0
Case5(cont.) 200.200.200.0/23 AS400 AS100 200.200.200.0/23 AS9999 AS500 AS200 AS300 AS600 *>200.200.200.0/23 9999 *>200.200.200.0/24 9999 *>200.200.200.0/23 100 9999 *>200.200.200.0/23 300 200 9999 *>200.200.200.0/24 300 200 9999
Case5 (cont.) router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0 mask 255.255.254.0network 200.200.200.0neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 110 out ! access-li 100 per ip host 200.200.200.0 ho 255.255.254.0 ! access-li 110 per ip host 200.200.200.0 ho 255.255.254.0 access-li 110 per ip host 200.200.201.0 ho 255.255.255.0 ! ip route 200.200.200.0 255.255.254.0 Null0
상황2 • ABC-B 기업 • Cisco 4500 라우터 2대 • 2Mbps 3회선 • 2회선은 ISP-AS100, 1회선은 ISP-AS200에 접속 • Inbound Traffic이 많음 • IP block 200.200.200.0/22 이용 • AS Number 9999
상황2에 대한 검토 • 4500 라우터가 2대이므로, 회선을 분산해서 수용하는 것이 바람직 • AS100에 연결된 2회선을 각각 다른 라우터에 수용하는 경우 및 분산 수용하는 경우에 따라 Traffic 조절 방법이 다름 • 4500 라우터에서 RAM이 32M라고 할 경우 국내 정보를 모두 받을 수 있으므로 국내정보 모두 유지
Case6 • 동일 ISP에 연결되는 회선은 동일 라우터에 수용 • one BGP session with AS100 L0: 6.6.6.1 AS9999 1.1.1.2 1.1.1.1 AS100 A 200.200.200.1 2.2.2.2 2.2.2.1 Internet L0: 4.4.4.1 국내 인터넷 AS200 200.200.200.2 3.3.3.2 3.3.3.1 B
Case6(cont.) ! Router A interface loopback 0ip address 4.4.4.1 255.255.255.252 router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0 mask 255.255.252.0neighbor 6.6.6.1 remote-as 100neighbor 6.6.6.1 ebgp-multihop 3neighbor 6.6.6.1 update-source loopback 0neighbor 6.6.6.1 filter-list 10 outneighbor 6.6.6.1 distribute-list 100 outneighbor 200.200.200.2 remote-as 9999neighbor 200.200.200.2 next-hop-self ! ip route 6.6.6.1 255.255.255.255 1.1.1.2 ip route 6.6.6.1 255.255.255.255 2.2.2.2 ! ip as-path access-list 10 permit ^$ ip route 200.200.200.0 255.255.252.0 Null0 access-li 100 per ip host 200.200.200.0 ho 255.255.252.0
Case6(cont.) ! Router B router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0 mask 255.255.252.0neighbor 3.3.3.1 remote-as 100neighbor 3.3.3.1 filter-list 10 outneighbor 3.3.3.1 distribute-list 100 outneighbor 200.200.200.1 remote-as 9999neighbor 200.200.200.1 next-hop-self ! access-li 100 per ip host 200.200.200.0 ho 255.255.252.0 ip as-path access-list 10 permit ^$ ip route 200.200.200.0 255.255.252.0 Null0
Case7 • 동일 ISP에 연결되는 회선은 동일 라우터에 수용 • Two BGP sessions with AS100 L0: 6.6.6.1 AS9999 1.1.1.2 1.1.1.1 AS100 A 200.200.200.1 2.2.2.2 2.2.2.1 Internet L0: 4.4.4.1 국내 인터넷 AS200 200.200.200.2 3.3.3.2 3.3.3.1 B
Case7(cont.) ! Router A interface loopback 0ip address 4.4.4.1 255.255.255.252 router bgp 9999no synchronizationno auto-summarynetwork 200.200.200.0 mask 255.255.252.0neighbor 1.1.1.1 remote-as 100neighbor 1.1.1.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 remote-as 100neighbor 2.2.2.1 filter-list 10 outneighbor 2.2.2.1 distribute-list 100 out neighbor 200.200.200.2 remote-as 9999neighbor 200.200.200.2 next-hop-self ! ip as-path access-list 10 permit ^$ ip route 200.200.200.0 255.255.252.0 Null0 access-li 100 per ip host 200.200.200.0 ho 255.255.252.0
Case7(cont.) • 이 configuration에는 큰 문제점이 있습니다. 무슨 문제일까요?
Case7(cont.) -> 해결방안 ! Router A …….. router bgp 9999……..network 200.200.200.0 mask 255.255.252.0network 200.200.200.0 mask 255.255.254.0network 200.200.202.0 mask 255.255.254.0 neighbor 1.1.1.1 remote-as 100neighbor 1.1.1.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 remote-as 100neighbor 2.2.2.1 filter-list 10 outneighbor 2.2.2.1 distribute-list 110 out ……... ! access-li 100 per ip host 200.200.200.0 ho 255.255.252.0 access-li 100 per ip host 200.200.200.0 ho 255.255.254.0 ! access-li 110 per ip host 200.200.200.0 ho 255.255.252.0 access-li 110 per ip host 200.200.202.0 ho 255.255.254.0
Case7(cont.) -> 해결방안 ! Router B …….. router bgp 9999……..network 200.200.200.0 mask 255.255.252.0network 200.200.200.0 mask 255.255.254.0network 200.200.202.0 mask 255.255.254.0 neighbor 3.3.3.1 remote-as 100neighbor 3.3.3.1 filter-list 10 outneighbor 3.3.3.1 distribute-list 100 out……... ! access-li 100 per ip host 200.200.200.0 ho 255.255.252.0 access-li 100 per ip host 200.200.200.0 ho 255.255.254.0 access-li 100 per ip host 200.200.202.0 ho 255.255.254.0 ! ! 만약 access-list 100에서 ! host 200.200.200.0 ho 255.255.254.0 와 ! host 200.200.202.0 ho 255.255.254.0 가 없다면 문제점은?
Case8 • 분산 수용 * 이 경우에는 bgp session을 어떻게 맺으면 좋을까요? L0: 6.6.6.1 AS9999 1.1.1.2 1.1.1.1 AS100 A 200.200.200.1 2.2.2.1 Internet L0: 4.4.4.1 국내 인터넷 2.2.2.2 AS200 200.200.200.2 3.3.3.2 3.3.3.1 B
상황3 • ABC-C 기업 • Cisco 2501 라우터 1대 • 2Mbps 2 회선 • 1회선씩 ISP-AS100, ISP-AS200에 접속 • Outbound Traffic이 많음 • IP block 200.200.200.0/24 이용 • AS Number 9999
Case9 • 구성도 AS100 1.1.1.1 AS9999 Internet 1.1.1.2 국내 인터넷 2.2.2.2 AS200 2.2.2.1
Case9(cont.) router bgp 9999…….neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 out ! ! AS100에 연결된 회선에 Outbound Traffic이 높음 ! 어떻게 하면 될까요?
Case9(cont.) - 해결방안1 router bgp 9999…….neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 outneighbor 1.1.1.1 filter-list 20 inneighbor 2.2.2.1 filter-list 20 in ! ip as-path access-list 20 deny .* ! ip route 0.0.0.0 0.0.0.0 1.1.1.1 ip route 0.0.0.0 0.0.0.0 2.2.2.1 ! ! 회선대역이 틀릴 경우는 바람직하지 않음 ! 또 다른 한가지 문제점이라고 할 수 있는 것이 있는데 그것은?
Case9(cont.) - 해결방안2 router bgp 9999…….neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 filter-list 10 outneighbor 2.2.2.1 filter-list 10 outneighbor 1.1.1.1 distribute-list 100 outneighbor 2.2.2.1 distribute-list 100 outneighbor 1.1.1.1 filter-list 20 in ! ip as-path access-list 20 permit ^(100_)+$ ! ip route 0.0.0.0 0.0.0.0 1.1.1.1 ip route 0.0.0.0 0.0.0.0 2.2.2.1 ! ! 회선대역이 틀릴 경우에도 이용할 수 있는 수단임 ! filter-list 20의 내용을 정기적으로 변경 필요
Case9(cont.) - 해결방안3 router bgp 9999…….neighbor 1.1.1.1 remote-as 100neighbor 2.2.2.1 remote-as 200neighbor 1.1.1.1 route-map HIGHMED in……. ! route-map HIGHMED permit 10match ip as-path 20set metric 1000 route-map HIGHMED permit 20 ! ip as-path access-list 20 permit 300$ ip as-path access-list 20 permit 300 900 ip as-path access-list 20 permit 400 ip as-path access-list 20 permit 700 800 …………. !
Appendix (For Your Info.) • 데이콤 내부 교육용으로 만든 자료이니 참고하세요. • 앞에 있는 내용들과 중복된 사항들이 많습니다. • 오류가 있을 가능성도 있습니다.
Example-1 • as-path 길이가 짧은 것이 우선함 *>10.1.1.0/24 3786 100 i 10.1.1.0/24 4766 3559 100 i DACOM AS3786 ISP1 AS2000 CUST AS100 ISP2 AS3000 10.1.1.0/24 KT AS3559 KT AS4766
Example-2 • as-path 길이가 같은 경우는 router-ID가 작은 것을 best path로 선택함 *>10.1.1.0/24 3786 100 i 10.1.1.0/24 3976 100 i DACOM AS3786 ISP1 AS2000 CUST AS100 ISP2 AS3000 10.1.1.0/24 INET AS3976 10.1.1.0/24 3786 100 i *>10.1.1.0/24 3976 100 i
Example-3 • 다른 두 ISP에게 MED를 조정해서 내보내는 것은 inbound traffic에 거의 영향을 미치지 못함 Set MED=10 out for 14.1.1.0/24 12.1.1.0/24로 가는 traffic DACOM AS3786 ISP AS200 CUST AS100 INET AS3976 Set MED=10 out for 12.1.1.0/24 14.1.1.0/24로 가는 traffic 12.1.1.0/24 14.1.1.0/24