이 포스트는 널널한 개발자님 강의를 참조하며 작성하였습니다.
첫번째 구조로 inline구조를 생각해볼 수 있다. inline구조는 무엇일까? 통과해서 지나가는 구조 즉, 패킷이 통과해서 지나간다. 이 inline 구조는 집에서도 확인이 가능하다. 바로 공유기인데 이게 전형적인 inline-device이다. 그 다음으로 라우터라는 것도 inline-device이다. 그리고 보안장치 중에 방화벽이 있는데 이 중에 패킷 필터링 방화벽이 전형적인 inline-device이다. 그러니까 inline이 나오면 다루는 데이터는 패킷이고 이 패킷이 bypass가 되던지 drop이 되던지 둘 중 하나를 한다. 위의 그림을 보면 192.168.0.10이라는 주소를 가진 host가 웹서버에 접속한 과정을 보인 것이다. 이런 구조로 inline device를 패킷이 통과해서 웹서버로 간다.
우리가 라우터를 도식화할때 점을 2개 그려서 그 점에 대고 다른 것과 직선형태로 연결을 한 형태로 그림을 그린다. 예를 들어 라우터의 왼편은 L2 distribution switch와 연결이 되어있고 오른편은 인터넷과 연결되었다고 하면 왼편은 내부가 되는거고 오른편은 외부가 된다. 그리고 트래픽이 바깥으로 나가는것을 out-bound라고 하고 안으로 유입되는것을 inbound라고 한다. 그러면 이 라우터를 뜯어보면 어떤 구조일까? 별거없고 위의 그림처럼 PC구조를 갖는다.
라우터의 왼쪽 인터페이스를 A, 오른쪽 인터페이스를 B라고 가정할때 A는 L2 distribution switch와 연결이 되어 있고 B는 인터넷과 연결이 되어 있을 것이다. 이때 유입되어 들어오는 최초 정보단위 데이터는 Frame 단위 데이터일텐데 이 Frame이 들어오면 NIC를 지나 S/W영역으로 올라갈텐데 일반적인 통신을 할 때는 L3를 거쳐 Application 영역까지 타고 올라갔는데 Inline device라고 하면 N/W스위치는 나한테 오는 정보만 있는것이 아니고 남한테 보내줘야 하는 데이터도 있다.
그래서 보통의 경우 패킷이 들어오면 NIC를 거쳐서 드라이버까지 올라갔다가 inline 모듈을 만나면 오른편 NIC로 내려간다. 이런 과정이 Out bound이다. 그럼 거꾸로는 Inbound일 것이다. 그래서 inline이다라고 하는 것은 이런 식으로 구현이 된다. 또 재밌는것이 inline 모듈이 커널모드에 작동중인데 이 구성요소가 user-mode영역에 있으면 안되는 것일까? 안될꺼는 없지만 user-mode에 있으면 거쳐가는 영역이 많고 커널에서 작동하는게 입출력 속도가 굉장히 빠르기에 커널에 inline 모듈이 존재한다.
또한 inline 모듈에서 En/Decapsulation이 일어나는데 NIC가 가속기라고 하면 속도측면에서 우월해진다. 그래서 inline-device는 이런걸 처리율이라고 이야기한다. 즉, 뭔가 통과해서 지나가야하니까 그 투과율이 얼마나 좋냐에 따라서 성능이 달라진다. 예를 들어 네트워크가 10Gbps로 엄청 빠른 속도인데 라우터가 1Gbps밖에 되지 않으면 속도자체가 하향평준화가 된다. 그래서 inline으로 만들때는 속도가 조금만 떨어지면 전체성능이 떨어지는 문제가 발생한다. 그래서 최대한 하드웨어 수준에서 Inbound, Outbound처리를 하면 좋을 것인데 이럴려면 하드웨어를 고쳐야 함으로 일전 수준의 inline 모듈과의 절충안을 찾아서 가는게 일반적이다.
inline모듈에서 패킷을 안보내면 drop 보내서 write하면 bypass이다. 그런데 inline모듈이 어떤 기준으로 bypass 혹은 drop을 하는지에 따라 장치의 성격도 바뀐다.