본문 바로가기
IT-Network

[Tunnel] GRE Tunnel 구조

by lindsay.hyun 2022. 11. 9.
반응형

GRE Tunnel 이란?

GRE tunnel은 직접 연결되어 있지 않은 L3 장비 간에 tunnel 기술을 이용해서 마치 직접 연결되어 있는 것처럼 만드는 기술입니다. 그러면 직접 연결돼있는 것처럼 만드는 것이 어떤 장점이 있을까요? GRE tunnel 기술은 멀리 떨어져 있는 장비 간에 Routing protocol 돌리기 위해서 만들어진 tunnel 기술입니다. 일반적으로 회사에서는 본사와 지사 간에 인터넷으로 연결되어 있다 하더라도 마치 전용회선을 사용해서 연결된 것처럼 라우팅 프로토콜을 돌리고 싶을 것 입니다. IGP를 사용해서 유연하게 관리하고 싶을 것 입니다. 하지만 IGP는 직접 연결되어 있어야만 통신이 가능하기 때문에 그래서 만들어진 기술이 GRE tunnel입니다. 

 

GRE Tunnel Packet Header (RFC 2890)

GRE tunnel 기술은 1994년도에 시스코에서 만들어졌으며 계속 발전해 오다가 2000년도에 현재 사용 중인 GRE인 RFC 2890이 만들어졌습니다. 그래서 그 과도기에 조금씩 변경되었기 때문에 책마다 GRE header를 설명하는 부분이 조금 다를 수 있습니다. 이번에는 RFC 2890을 기준으로 이야기해 보겠습니다. 

 

먼저 본래의 데이터와 L3 original header가 존재했을 때, tunnel header가 추가가 될 것입니다. 그리고 많은 기능이 있는 것은 아니지만 GRE가 제공하는 몇 가지 서비스가 있습니다. 그러한 서비스들에 정보를 제공하기 위해 그 사이에 GRE header가 들어갈 것입니다. 그럼 그 헤더의 내용을 하나씩 확인해 보겠습니다.

GRE-header
GRE-header

맨 앞부분을 보면 C, K, S라는 문자가 있고, C와 K 중간에 한 비트가 비어있습니다. 그것은 과거에 어떤 용도로 사용되었으나 더 이상 필요가 없어져서 사용되지 않는 비트입니다. 그런데 기존 기술과 호환성을 유지해야 하기 때문에 다른 용도로도 사용하지 못하고 있는 비트입니다. 나중에 과거에 사용하던 GRE 기술, 저 비트를 사용하던 장비가 다 사라졌을 때, 저 비트로 다른 용도로 사용할 수 있게 될 것입니다. 

C는 checksum을 의미합니다. 원래는 checksum 기능이 없으나, 우리가 어떤 명령어를 사용해서 checksum 기능은 enable을 할 수가 있습니다. 그것이 enable이 되면 C 비트가 1이 되면서 checksum가 사용되게 됩니다. K는 Key를 의미합니다. 마찬가지로 Key는 default로 사용하지는 않지만 어떤 command를 사용해서 key를 설정하게 되면 K 비트가 1로 세팅되면서 key field가 활성화돼서 사용이 됩니다. S는 sequence number를 의미합니다. 데이터를 전송을 할 때 번호를 매겨서 전송하겠다는 이야기입니다. C, K, S 이 기능들은 default로 disable이 되어있고 어떤 명령어를 입력해야만 enable 시킬 수 있습니다.  

Reserved 0와 Reserved 1은 나중에 다른 용도로 사용하기 위해 남겨놓은 비트입니다. 

Ver 버전은 GRE가 계속 발전되어 왔긴 하지만 버전을 올릴 만큼 버전을 올릴 만큼 큰 기능 차이가 없다고 판단했는지 최조 만들었던 0번을 계속 유지하고 있습니다. 

Protocol Type은  Next header를 의미합니다. 저 위치에 있는 next header가 ipv4 header가 올 수 있고 혹은 ipv6 header도 올 수 있는 것처럼 다양한 L3 header가 올 수 있기 때문에 상대방에게 어떤 프로토콜한테 줘야 한다는 정보를 알려줘야 하기 때문에 Next header 정보가 Protocol Type에 들어갑니다. 

반응형

댓글