용어
AS, ASN
AS ( Autonomous System ) : 한 회사나 단체에서 관리하는 라우터 집단
ASN ( AS Number ) : 인터넷 표준화기구 에 의해 AS 에 할당된 번호
AS Name : AS 이름
(Google Bards) 2023년 9월 8일 기준, 전 세계의 자율 시스템 번호 (ASN)는 약 70만 개입니다. 이는 2007년까지 사용되던 2바이트 ASN 대역(0 ~ 65,535)이 소진됨에 따라 2008년부터 사용되기 시작한 4바이트 ASN 대역(0 ~ 4,294,967,295)의 할당이 진행되고 있기 때문입니다.
참고
- https://krnic.or.kr/jsp/resources/asInfo.jsp
- https://www.iana.org/assignments/as-numbers/as-numbers.xhtml
AS 1237, AS17579
KISTI 가 관리중인 AS
|
| |||||||||||||
Prefix, IP ranges | ||||||||||||||
Peers |
IP Perfix, IP range, IP Block
(설명) http://www.ktword.co.kr/test/view/view.php?m_temp1=5246
(예) 134.75.0.0/16 = 134.75.0.0 - 134.75.255.255
https://ipinfo.io/AS1237/134.75.0.0/16
Peer
우리 기관의 라우터 포트에 꼽혀있는 이웃 기관의 라우터의 AS
(예) AS1237의 peer = KISTI와 KREONET을 통해 연결된 다른 (국내) 기관, https://bgp.he.net/AS1237#_peers
(예) AS17579의 peer = KISTI와 KREONET2을 통해 연결된 다른 (국외) 기관, https://bgp.he.net/AS17579#_peers
⭐ AS path
38229 9885 11537 17579 1237
38229 에서 1237까지 도달하려면 순차적으로 9885, 11537, 17579 을 거쳐야 한다는 뜻
해저케이블 단선 등으로 경로가 변하면 AS Path 가 변함
데이터
MRT 표준
RFC6396 Multi-Threaded Routing Toolkit (MRT) Routing Information Export Format
https://datatracker.ietf.org/doc/html/rfc6396
MRT 파일
RIB | RIB Updates | |
---|---|---|
Routing Information Base | ||
https://bgp.cgtf.net/collector1/ribs | https://bgp.cgtf.net/collector1/updates | |
https://bgp.cgtf.net/collector1/ribs/2023/08/rib.20230831.2200.mrt.bz2 | https://bgp.cgtf.net/collector1/updates/2023/08/updates.20230831.2355.mrt.bz2 | |
생성주기 | 2시간 | 5분 |
라우터가 알고 있는 전세계 모든 AS Path 정보 | 주변 라우터와 협상하면서 업데이트된 AS Path 정보 | |
용량 | 27M (압축)
| 100KB ~ 4MB 다양함 |
❗학습 데이터
기존에 연구망에서 준 데이터가 양이 부족할 것으로 예상된다.
학습은 2022.01. ~ 2023.08월까지 RIB 파일 https://bgp.cgtf.net/ribs 으로 진행한다.
2022.01. ~ 2023.08월까지 RIB 파일 개수는 7300여개로 모두 다운로드 받으면 140GB가 필요하고, 430시간이 소요될 것으로 예상된다.
MRT handling tools
https://github.com/t2mune/mrtparse
- examples/mrt2bgpdump.py
- examples/mrt2json.py
# iMac Pro 2017 에서 수행함 # Intel Xeon W 3.2GHz 8 core, RAM 32GB, NVMe SSD $ time wget https://bgp.cgtf.net/collector1/ribs/2023/08/rib.20230831.2200.mrt.bz2 3:34 total $ time python3 mrt2bgpdump.py rib.20230831.2200.mrt.bz2 > dump.txt 4:54 total $ time python3 mrt2json.py rib.20230831.2200.mrt.bz2 > dump.json 12:43.59 total $ wc -l dump.txt 6534434 $ head -n 10 dump.txt TABLE_DUMP2|08/31/23 22:00:01|B|192.248.3.218|38229|0.0.0.0/0|38229 45489|IGP TABLE_DUMP2|08/31/23 22:00:01|B|167.205.62.245|4796|0.0.0.0/0|4796 4761|IGP TABLE_DUMP2|08/31/23 22:00:01|B|203.188.118.253|3662|0.0.0.0/0|3662 17824 3491|IGP TABLE_DUMP2|08/31/23 22:00:01|B|67.199.131.66|24514|0.0.0.0/0|24514|IGP TABLE_DUMP2|08/31/23 22:00:01|B|202.112.4.60|4538|1.0.0.0/24|4538 174 13335|IGP TABLE_DUMP2|08/31/23 22:00:01|B|67.199.131.66|24514|1.0.0.0/24|24514 3257 13335|IGP TABLE_DUMP2|08/31/23 22:00:01|B|210.7.33.15|38022|1.0.0.0/24|38022 4826 13335|IGP TABLE_DUMP2|08/31/23 22:00:01|B|203.188.118.254|3662|1.0.0.0/24|3662 4635 13335|IGP TABLE_DUMP2|08/31/23 22:00:01|B|203.188.118.253|3662|1.0.0.0/24|3662 17824 3491 13335|IGP TABLE_DUMP2|08/31/23 22:00:01|B|121.52.144.237|45773|1.0.0.0/24|45773 17557 8529 13335|IGP
정의
⭐ 정상 AS Path의 정의
❗임의의 aaa → xxx 까지 경로에 대한 정상 AS Path는
2022년도 RIB 1년치 데이터 기준으로 했을 때, 가장 많이 보이는 경로로 정한다 (RIB Update 아님)
2022년도 한해 발생한 aaa → xxx 까지의 경로가 다음과 같으면 첫번재의 것을 정상으로 한다
AS path with prefix | 빈도 | |
---|---|---|
(prefix) aaa → bbb → xxx | 4000 | 정상 |
(prefix) aaa → ccc → ddd → xxx | 2000 | |
(prefix) aaa > eee → xxx | 1300 |
❗(유의) 20230831.2200 파일 기준 AS 38229(스리랑카 연구망) → AS 9949 (호서대학교) 까지,
서로 다른 Prefix 에 대해 25개의 entry 가 보인다. 각각의 prefix와 AS path를 함께 학습시켜야 한다.
참고로 114.70.166.0/24, 114.70.167.0/24, 114.70.168.0/24 은 AS 9949에 속한 prefix 이다.
$ grep '|38229|' dump.txt | grep '9949|' | wc -l 25 $ grep '|38229|' dump.txt | grep '9949|' TABLE_DUMP2|08/31/23 22:00:02|B|192.248.3.218|38229|114.70.166.0/24|38229 9885 11537 17579 1237 9949|IGP TABLE_DUMP2|08/31/23 22:00:02|B|192.248.3.218|38229|114.70.167.0/24|38229 9885 11537 17579 1237 9949|IGP TABLE_DUMP2|08/31/23 22:00:02|B|192.248.3.218|38229|114.70.168.0/25|38229 9885 11537 17579 1237 9949|IGP ...
❗(유의) 같은 AS 가 반복되어 나타나는 경우가 있다. 그대로 학습할 것을 권한다.
(ChatGPT) 특정 ASN이 반복적으로 나타나는 이유는 BGP 경로에서 AS 경로(prepend) 조작을 나타내고 있을 가능성이 높습니다. AS 경로(prepend) 조작은 BGP 경로의 길이를 인위적으로 늘리거나 조작하여 트래픽을 특정 경로로 유도하거나 특정 AS로의 트래픽을 제어하는 데 사용될 수 있습니다.
$ grep '17579 17579' dump.txt TABLE_DUMP2|08/31/23 22:00:02|B|203.185.103.1|3836|114.70.0.0/20|3836 7660 17579 17579 17579 17579 17579 1237 45379|IGP TABLE_DUMP2|08/31/23 22:00:02|B|203.185.103.1|3836|114.70.2.0/24|3836 7660 17579 17579 17579 17579 17579 1237 45379|IGP TABLE_DUMP2|08/31/23 22:00:02|B|203.185.103.1|3836|114.70.8.0/24|3836 7660 17579 17579 17579 17579 17579 1237 45379|IGP
❗IPv6 경로는 학습하지 않는다.
상기 파일에는 IPv6도 들어 있으므로 제외하고 학습한다.
문제
IPaddr/mask|스페이스로 구분된 ASN(AS Path)가 정상인지 비정상인지 판단
(예) 114.70.166.0/24|38229 9885 11537 17579 1237 9949 정상인가? 비정상인가?