Null Interface의 Routing Loop 방지

Routing 2009. 10. 12. 17:58
네트워크 관련 커뮤니티에서 원작자 세노(박병석)님이 제로님의 Null Interfae 질문에 대한 답변을 일부 수정 및 그림 첨부하여 작성하였음을 알려드립니다.

어떻게 Null Interface가 Routing Loop를 방지하는가?

Null Interface는 특정주소를 목적지로 하는 트래픽을 차단(혹은 폐기)하기 위해서 사용하며, ACL 과는 달리  라우터의 CPU 소모율이 낮기 때문에 효과적으로 라우터의 부하를 줄이는 방법 입니다.

그런데 이러한 이점과 아울러 Null Interface는 Routing Loop를 방지하는데 일조하기도 합니다.

일반적으로 EIGRP나 BGP에서 specific한 어드레스를 summarization 하게 되면, summarization과 동시에 저절로
Null Interface 가 Routing Table에 생성 되는것을 볼 수 있습니다. 바로 이것이 Routing Loop 를 방지하기 위해 생성되는 것입니다.

이해를 돕기 위해 하나의 예를 들어 보겠습니다.


위 그림과 같이 RTA와 RTB 사이에는 BGP가 동작 한다고 가정합니다.

RTA의 뒷단에는 4개의 C Class 네트워크가 존재합니다.
RTA는 ISP 망에 존재하는 RTB를 통해 외부 Internet 으로 나갑니다.
RTA에서 RTB 쪽으로 default route 를 설정합니다.

이런 상황에서 flapping 으로 인한 네트웍 토플로지의 변화를 localize 함으로써 네트워크를 안정적으로 유지하고,
Routnig Table의 Entry 숫자를 줄임으로써 Routing Table의 크기를 줄여 결과적으로 효율적으로 bandwidth를 사용하기 위해RTA 뒷단에 있는 4개의 C Class 네트웍을 하나의 네트웍(192.168.4.0/22)으로 summarization 해서 (이 경우엔 CIDR 이겠죠?)
RTB로 Advertise 했다고 가정해 보죠. 여기서는 summary-only 키워드를 통해 summary 된 정보만 Advertize 했다고 가정하겠습니다.

이 경우에 RTA 에는 아래와 같은 Routing Table이 존재할 것입니다.
-RTA-
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
192.168.4.0/22 null 0
0.0.0.0 via RTB

여기서 null 0는 summarization과 동시에 자동으로 생성된 Null Interface 입니다.

물론, 이보다 specific 한 Route 가 존재하기 때문에 longest match에 입각하여 Null Interface로 인해 차단(혹은 폐기)되는 트래픽은 존재하지 않을 것입니다. 그리고 RTB에는 아래와 같은 Routing Table이 존재할 것입니다.
당연히 RTA에서 summarization한 결과를 넘겨줬기 때문에 RTB의 Routing Table에는 summary된 결과만이 존재할 것입니다.

-RTB-
192.168.4.0/22 via RTA

일반적인 경우 아무런 문제없이 RTA와 RTB 사이에 트래픽이 오고 갈 것입니다.
물론 이 경우 저절로 생성된 Null Interface는 유명무실 하겠지요?

그런데!!!
RTA의 뒷단에 있는 네트웍 가운데 하나,
예를 들어 192.168.7.0 네트웍으로 통하는 Link가 Down 되었다고 가정해 봅시다.


어떤일이 발생 할까요?

먼저 RTB의 Routing Table은 변화가 없을 것입니다. flapping 이라고 보긴 어렵지만 - 아니, 조금 큰 규모의 flapping 이라고 보아야 할까요? - 어찌됐건 summary된 모든 네트웍이 다 없어지지 않는 한 RTB에는 RTA로 부터 건네 받은 SUMMARY된 정보가Routing Table에 올라와 있을 것입니다.

그렇다면, 외부 Internet에서 192.168.7.0을 목적지로 하는 트래픽은 무리없이 RTA로 전달 되겠지요?

하지만 RTA의 Routing Table은 어떻게 변했을까요?
아래와 같이 192.168.7.0/24 Entry는 사라지고 없을 것입니다.
-RTA-
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.4.0/22 null 0
0.0.0.0 via RTB

여기서 바로 Null Interface의 진가가 나타나는 것입니다.

만약 Null Interface가 없다면, RTB로 부터 전달받은 192.168.7.0을 목적지로 하는 트래픽은 default route를 통해서 다시 RTB로 전달될 것입니다. 그리고 여기서 바로 Routing Loop가 발생하는 것이지요.
하지만 Null Interface가 존재하기 때문에 192.168.7.0을 목적지로 하는 트래픽은 폐기되고 말 것입니다.
따라서 Routing Loop가 발생하지 않게 되는것이죠..

Posted by 불량소금
,