본문 바로가기
네트워크/BGP

Introduction to Regular Expressions(Regex)

by 최개미의 세계 2024. 7. 6.
728x90
반응형

1. Regular Expressions(Regex)

  • Regular Expressions를 줄여서 Regex로 많이 표현
  • Regular Expressions는 AS-Path Filtering 또는 특정 AS-Path에 대한 NLRI 정보를 볼 때 자주 사용
    • AS-Path는 BGP Category 중 ‘Well-known Mandatory’에 속하므로 BGP Update Message에 반드시 존재
  • 실제로 많은 Regex 기호가 존재하지만, ISP 관문 장비를 직접 다루지 않으면 많이 사용하지 않는 것으로 확인되어 본 글에는 대표적인 Regex만 기재하였으며 다른 기호가 필요하면 인터넷 검색으로 많은 Regex 기호 확인 가능
Regex Description
* ❍ 이전 문자 형태가 0번 이상 반복
+ ❍ 이전 문자 형태가 1번 이상 반복
? ❍ 이전 문자 형태가 1번 이하 반복
^ ❍ 문자열의 시작
$ ❍ 문자열의 끝
[ ] ❍ 한 문자의 범위를 지정
( ) ❍ 단일 항으로 그룹화
| ❍ 또는
- ❍ 한 문자의 범위를 지정할 때 시작과 끝을 분리
_ ❍ ASN 사이의 공백이나 AS-Path List의 끝과 일치
. ❍ 1글자(공백도 포함)

 

 

2. Regular Expressions Example

  • Regular Expressions Examples는 인터넷에서 많은 예시 확인 가능
Regex Description
^$ ❍ 문자열의 시작과 끝이 비어있는 것을 뜻하므로 AS-Path가 Empty인 것을 의미
^2 ❍ AS-Path 중, 맨 왼쪽(마지막) AS가 2라는 것을 의미
❍ ^2_와 동일한 의미
^2$ ❍ AS-Path에 ‘2’만 존재하는 것을 의미
_2_ ❍ AS-Path에 ‘2’가 존재하는 것을 의미
 - AS-Path 2의 앞/뒤에 어떠한 AS가 있어도 상관없음
_2$ ❍ AS-Path 중에 가장 오른쪽(최초 발생지) AS가 2인 것을 의미
^2_[0-9]*$ ❍ [0-9]*는 ASN이 어떤 것이든 하나의 AS를 의미
 - Ex) AS가 ‘Empty’, ‘123’, ‘79’, ‘3461’ 등등 어떤 것이든 상관없음
❍ ^2_[0-9]*$는 AS-Path가 ‘2 x’인 것을 의미
 - 여기서 x는 어떠한 숫자 및 Empty를 의미
^([0-9]+)_2 ❍ AS-Path가 ‘x 2 y’인 것을 의미
 - 여기서 x는 어떠한 숫자를 의미
 - 여기서 y는 어떠한 숫자 및 Empty를 의미
 - 하나의 AS가 떨어진 AS 2에서 생성된 NLRI 및 AS 2를 지나온 NLRI를 의미
^2_([0-9]+) ❍ [0-9]+는 ASN이 어떤 것이든 하나의 AS를 의미
 - Ex) AS가 123, 79, 3461 등등 어떤 것이든 상관없음
❍ ^2_([0-9]+)은 AS-Path가 ‘2 x’인 것을 의미
 - 여기서 x는 어떠한 숫자를 의미하여 서로 다른 숫자가 1개 이상 존재 가능
 - Ex) ‘2 3’, ‘2 3 4’, ‘2 3 3’ 등
^([0-9+])+$ ❍ 동일한 AS가 1개 이상 존재하는 AS를 의미
 - Ex) ‘9’, ‘9 9’, ‘9 9 9’ ... 등

 

 

3. Regular Expressions를 이용한 AS-Path Filtering

  • 기본적으로 eBGP Peer로부터 수신한 모든 NLRI를 모든 BGP Peer로 광고
  • Regular Expressions를 이용한 ‘AS-Path Filtering’으로 특정 AS의 NLRI 정보에 대한 BGP Update를 허용(or 거부)할 것인지 설정 가능
  • Regular Expressions를 이용한 'AS-Path Filtering'은 한 번만 구성하면 되고 New NLRI가 생성되어도 문제가 되지 않으므로 매우 유용
  • Cisco 기준으로 Prefix-List 또는 Distribute-List를 이용하여 Network Address 단위로 BGP Update를 허용(or 거부)할 것인지 설정 가능하지만 확장성이 부족
    • Ex) 1.1.1.0/24의 NLRI 정보는 Update 수신을 허용하며 2.2.2.0/24의 NLRI 정보는 Update 수신 거부
    • 해당 방법으로 설정할 시, 원하는 결과를 볼 수 있지만 BGP Table에 수많은 NLRI가 있으면 확장이 불가능

 

728x90
반응형