brctl로 인터페이스를 묶었을때 커널 상에서 일어나는 작업들에
글쓴이: blue39 / 작성시간: 금, 2004/01/16 - 4:31오후
안녕하세요~~
brctl로 인터페이스들을 논리적인 하나의 인터페이스를 묶을때 과연 커널 안에
서는 어떤 작업들이 수행될까요? brctl로 묶은 상태에서는 패킷을 전달할때
ARP 이상의 상위 프로토콜에 대해서는 알지 못하는 걸로 알고 있는데요. 또한
묶인 인터페이스 사이에 패킷을 포워딩할때 복사의 횟수가 줄어든다는 의미가
이처럼 ARP 이상의 프로토콜 레이어를 거치지 않고 그 밑단에서 포워딩이 이루
어지기 때문에 불필요한 데이터의 복사와 전달이 줄어든다는 의미라고 생각하는
데요. 그런데 실질적으로 이렇게 인터페이스들을 묶으면 그에따른 세부 정보들
이 필요할거 같은데요. 가령 묶여 있는 인터페이스의 목록이라던가 어디로 받은
패킷을 어디로 포워딩 시켜야 한다던지 등등의 정보가 어딘가에 저장이 되어 있
어야 할거 같은데 이 부분에 대한 정보는 잘 않보이네요. 그리고 마지막으로
brctl 함수를 보면 ioctl 함수를 이용해서 등록할 브리지 명과 플래그로 SIOGIFBR 이라는 녀석을 넘기는데요 그럼 이 ioctl이 작용 했을때 커널 내에서
어떤 일들이 일어나는지 정말 궁금합니다. 질문이 너무 길었나요? ^^;
여러분의 조언 부탁드립니다.
좋은 하루 보내시구요.
Forums:
무플 방지
....베가를 사서는 usb 케이블로 노트북 우분투에 물리려고 이쪽을 찾아보는데, 이 질문 자체도 꽤 어려운 말들로 가득하네요. -_-;;
일종의 MAC routing decision을 합니다
eth0, eth1 을 br0로 묶는다면 두 네트워크는 논리적으로 하나의 네트워크가 되고
그 호스트는 마치 switch 처럼 행동합니다.
브릿지가 된 그 호스트는 각 물리적인 포트에 어떤 호스트가 직접 링크되어 있는지 정보를
저장합니다.
예를 들어 eth0에 직접 링크된 네트워크 세그먼트에는 MAC_ADDRESS A, B를 가진 호스트가 존재하고
eth1 에는 MAC_ADDRESS C, D가 존재한다는 정보를 저장하죠.
MAC ADDRESS 정보는 각 포트로 도착하는 패킷의 SOURCE MAC ADDRESS 정보를 수집해서
저장합니다.
그러다가 Destination MAC address가 C인 패킷이 eth0에 도착한다면
br0에 묶여있는 다른 물리적인 인터페이스에 그것이 링크되어 있는지 조사하고
eth1에 직접 링크되어 있으므로 그 포트로 포워딩을 하죠.
브릿지가 아닐 경우 IP address를 key로 하여 IP routing decision을 하지만
브릿지로 만들 경우 MAC routing decision을 하는 셈이지요.
/***************************************
Being the one is just like being in love.
***************************************/
댓글 달기