B.A.T.M.A.N.

**B.A.T.M.A.N.**(Better Approach to Mobile Ad-hoc Networking)은 독일 "프라이풍크" 커뮤니티에서 개발 중인 멀티홉 모바일 애드혹 네트워크용 라우팅 프로토콜이며, OLSR이 대규모 메시 배포의 성능 요구 사항을 충족하지 못했기 때문에 이를 대체하기 위해 고안되었다.

B.A.T.M.A.N.의 핵심은 네트워크를 통한 최적의 경로에 대한 지식의 분산이다. 즉, 단일 노드가 모든 데이터를 가지고 있지 않다. 이 기술은 네트워크 변경에 대한 정보를 네트워크의 모든 노드에 전파할 필요성을 없애준다. 각 노드는 데이터를 수신한 "방향"에 대한 정보만 저장하고 그에 따라 데이터를 전송한다. 데이터는 노드에서 노드로 전달되며, 패킷은 개별적이고 동적으로 생성된 경로를 얻는다. 집단 지성 네트워크가 생성된다.

2007년 초, B.A.T.M.A.N. 개발자들은 네트워크 계층 대신 데이터 링크 계층(OSI 모델의 2계층)에서 라우팅하는 아이디어를 실험하기 시작했다. 3계층 라우팅 데몬과 구별하기 위해 "adv"(고급) 접미사가 선택되었다. UDP/IP를 통해 교환된 정보를 기반으로 라우팅 테이블을 조작하는 대신, 가상 네트워크 인터페이스를 제공하고 이더넷 패킷을 자체적으로 투명하게 전송한다. batman-adv 커널 모듈은 2.6.38부터 공식 리눅스 커널의 일부가 되었다.

## 작동 방식
B.A.T.M.A.N.은 고전적인 라우팅 프로토콜의 요소들을 가지고 있다: 다른 B.A.T.M.A.N. 노드를 감지하고 노드들 사이의 최적 경로를 찾는다. 또한 새로운 노드를 추적하고 그 존재를 이웃에게 알린다.

정적 네트워크에서는 네트워크 관리자 또는 기술자가 어떤 컴퓨터가 어떤 경로 또는 케이블을 통해 연결되는지 결정한다. 라디오 네트워크는 끊임없이 변화하며, 낮은 참여 임계값이 "프라이풍크" 네트워크 기반의 중요한 부분이기 때문에 이 작업은 최대한 자동화되어야 한다.

정기적으로 모든 노드는 브로드캐스트를 전송하여 자신의 존재를 모든 이웃에게 알린다. 이웃들은 이 메시지를 다시 자신의 이웃에게 전달하고, 이런 식으로 네트워크의 모든 노드에 정보가 전달된다. 특정 노드로 가는 최적의 경로를 찾기 위해 B.A.T.M.A.N.은 수신된 발신자 메시지를 세고, 메시지가 어떤 이웃을 통해 들어왔는지 기록한다.

거리 벡터 프로토콜처럼 B.A.T.M.A.N.은 전체 경로를 결정하려 하지 않고, 발신자 메시지를 사용하여 올바른 방향으로의 첫 번째 패킷 전송 단계만 결정한다. 데이터는 그 방향의 다음 이웃에게 전달되고, 다음 이웃도 같은 메커니즘을 사용한다. 이 과정은 데이터가 목적지에 도달할 때까지 반복된다.

라디오 네트워크 외에도 B.A.T.M.A.N.은 이더넷과 같은 일반적인 유선 케이블 연결에서도 사용할 수 있다.

## 역사
이 과제는 가능한 한 쉽고, 작고, 빠른 네트워크 프로토콜을 만드는 것이었다. 개발을 여러 단계로 나누고 반복적인 프로세스를 통해 복잡한 기능을 구현하는 것이 합리적이라고 보였다.

### 버전 1
첫 번째 단계에서는 라우팅 알고리즘이 구현되었고, 실제 적용 가능성과 당면 과제에 대한 적합성이 테스트되었다. 발신자 메시지(존재 여부 정보)를 송수신하기 위해 UDP 포트 1966이 선택되었다.

### 버전 2
버전 1 알고리즘은 중요한 가정을 했다: 노드가 다른 노드로부터 존재 데이터를 수신하자마자, 데이터도 다시 보낼 수 있다고 가정했다. 그러나 무선 네트워크에서는 단방향 통신만 가능한 경우, 즉 비대칭 링크가 존재할 수 있다. 이를 허용하고 발생하는 문제를 해결하기 위한 메커니즘이 프로토콜에 통합되었다. 이 메커니즘을 통해 노드는 이웃 노드가 양방향 통신을 제공하는지 여부를 결정할 수 있다. 양방향 노드만 네트워크의 일부로 간주되며, 단방향 노드는 더 이상 완전히 포함되지 않는다.

### 버전 3
이 버전의 가장 큰 혁신은 B.A.T.M.A.N.이 여러 네트워크 장치를 지원한다는 점이다. B.A.T.M.A.N.이 실행되는 컴퓨터나 라우터는 높은 건물과 같은 중앙 위치에 배치될 수 있으며, 여러 유선 또는 무선 네트워크 인터페이스가 연결될 수 있다. 이렇게 배치될 경우 B.A.T.M.A.N.은 재전송 지연 없이 여러 방향으로 네트워크 데이터를 릴레이할 수 있다.

네트워크를 통한 최적 경로를 결정하는 동안 특정 비정상적인 현상과 특별한 상황이 발생할 수 있었다. 이러한 문제들은 원형 라우팅(데이터가 목적지에 도달하는 것을 방해할 수 있음)을 방지하기 위해 해결되고 대처되었다.

노드는 인터넷 접속을 제공한다는 정보를 네트워크에 알릴 수 있다. 다른 노드들은 이 정보를 사용하여 자신에게 가까운 인터넷 연결이 있는지, 그리고 얼마나 많은 대역폭을 사용할 수 있는지 평가한다. 그들은 특정 게이트웨이를 사용하거나 B.A.T.M.A.N.이 연결 속도와 같은 기준에 따라 사용할 게이트웨이를 결정하도록 허용할 수 있다.

B.A.T.M.A.N. 자체를 실행하지 않는 장치를 알리는 기능도 이 버전에 포함되었다. 일반적으로 이 방법은 홈 네트워크를 메시 네트워크에 연결하는 데 사용된다. 지붕의 안테나 설치는 B.A.T.M.A.N.을 통해 무선 네트워크에 연결하고, 건물의 나머지 부분은 단순히 알려져 접근 가능하게 된다.

이 버전의 B.A.T.M.A.N.은 실제 환경에서 높은 수준의 안정성을 보이지만 수렴 시간이 다소 느리다는 것이 입증되었다. 이는 이론적 분석에 의해 확인된다.

### BMX6
BatMan-eXperimental (BMX)는 독립적인 브로드캐스트 데이터그램으로 OGM(원천 메시지)을 여러 번 전송하여 실제 지수를 근사화하는 것을 목표로 한다. 이는 악셀 노이만이 개발한 BATMAN의 독립적인 분기였다. 보안 신뢰 멀티 토폴로지 라우팅(SEMTOR)을 통합한 확장 버전은 BMX7이라고 불린다.

### IV

버전 4는 비정상적인 링크 상황에서 전송 품질을 더 잘 감지하는 알고리즘을 구현한다. 발신자 메시지는 이 데이터를 통합하도록 업데이트되어 다른 노드들이 비대칭 연결의 품질을 더 잘 감지할 수 있도록 한다.

### V

## 대중적 관심
2017년 B.A.T.M.A.N.은 HBO 시리즈 실리콘 밸리 (시트콤)(시즌 4 에피소드 2)의 화이트보드에 쓰여 있었는데, 주인공 리처드 헨드릭스가 자신의 "새로운 인터넷" 개념의 구성 요소로 B.A.T.M.A.N.을 포함하는 것으로 보인다(텍스트는 화이트보드 오른쪽 상단에 표시되어 있다).

## 같이 보기

* 네추쿠쿠는 유사한 목표를 가진 프로젝트이다.
* AODV
* 연관성 기반 라우팅 (ABR)
* 동적 소스 라우팅 (DSR)
* 애드혹 라우팅 프로토콜 목록
* 오픈 소스 라우팅 플랫폼 목록
* 모바일 애드혹 네트워크 (MANET)
* 무선 애드혹 망

## 각주

## 외부 링크
* 

분류:메시 망