Korea FreeBSD Users Group News, Internal, Projects, Home
Software, Support, Documentation

Re: [KFUG] mbuf cluster .



[ ³¯Â¥¼ø »öÀÎ ] [ ´ñ±Û¼ø »öÀÎ ] [ ÃÖ»óÀ§ »öÀÎ] [ °Ë»ö]

[ÀÌÀü ±Û] [´ÙÀ½ ±Û] [ÀÌÀü ´ñ±Û] [´ÙÀ½ ´ñ±Û]


On Tue, Jun 01, 2004 at 12:07:50AM +0900, hwangij wrote:
 > 
 > 	    ----------
 >             | host 1  |
 >             ----------
 >                 |
 >                 |
 >          a   ----------    b
 >          ---| route 1 |---------------------------
 > 	|    ----------                                 |
 >         |                                                 |
 >         |                                            -----------
 >    -----------                                     | router 2 |
 >    | host 2  |                                      -----------
 >    ----------                                            |
 >                                                            |
 >                                                            |
 >                                                      -----------
 >                                                      | host 3   |
 >                                                      -----------
 > 
 > host1에서 전송하는 패킷은 host2로 전송하지만,
 > 저는 router1에서 host2로 전달되는 패킷을 host3로 직접 전달하기 위하여
 > 아래와 같이 encapsulation을 하여 전송하도록 하였습니다.
 > |----------------------------------------------------------------------|
 > |    src     |    dst       |     ----------------------------------
 > |
 > |    host 2 |     host 3   |    |   src     |  dst       |   Data
 > |       |
 > |             |               |    |   host 1 |  host 2   |
 > |       |
 > |             |               |    ----------------------------------
 > |
 > |----------------------------------------------------------------------|
 > 
 > 
 > 허나 router1에서 b 인터페이스로 전달하지 않고
 > " a 인터페이스로 전달하여 host2를 거쳐 host3로 전달하고 있습니다."
 > 
어떤목적때문에 그런지는 모르겠지만 이런일은 routing daemon이나
pf/ipf/ipfw의 policy routing을 이용할 수 있습니다.
또는 아주 간단히는 router1에 host route를 생성하면 가능합니다.
말씀하신 encapsulation은 host나 router의 수가 증가하면 제대로 동작할 수
없고 중복된 forwrading으로 latency를 증가시킵니다.

 > 패킷을 전달할때, 인터페이스를 결정은 어디에서 하는지 알고 싶습니다.
 > 
IP address의 routing은 RADIX tree(Patricia tree)에서 수행합니다.
(sys/net/radix.[ch]) Interface 결정은 ip_output()에서 RADIX tree
lookup으로 결정된 route를 이용해서 결정됩니다. 만일 route가
가 결정되지 않았다면(ip_output()의 ro argument 가 NULL일경우)
ip_output()에서 새로운 route를 생성합니다.
(ifatoia()와 ro->ro_rt->rt_ifp 부분을 보세요.)
IPv6라면 ip6_output()을 보세요.(sys/netinet6/ip6_output.c)

 > 더불어, b 인터페이스로 전달하도록 하려면 어떻게 해야 하는지도 알고
 > 싶습니다.
 > 감사 합니다.
 > 
RADIX tree에서 해당 interface를 선택하도록 설정하거나(route(8)이용)
pf라면 'route-to'를 ipf라면 'to' 같은것을 사용할 수 있습니다.

routing을위한 일반적인 encapsulation문제라면 gre(4)를 보세요.
(WCCPv1은 지원되지만 WCCPv2의 경우는 아직 제대로 구현되지 않았습니다.)
-- 
Pyun YongHyeon <http://www.kr.freebsd.org/~yongari>
_______________________________________________
한국 FreeBSD 사용자 그룹(KFUG) questions 메일링 리스트
questions at kr.FreeBSD.org
http://www.kr.FreeBSD.org/mailman/listinfo/questions


[ ³¯Â¥¼ø »öÀÎ ] [ ´ñ±Û¼ø »öÀÎ ] [ ÃÖ»óÀ§ »öÀÎ] [ °Ë»ö]

Copyright © 1998-2005 Korea FreeBSD Users Group.
All rights reserved. webmaster at kr.FreeBSD.org
$Date: 2004/06/01 14:12:07 $
Powered by FreeBSD