본문 바로가기
네트워크 (LAN,WAN)

DSR - Dynamic Source Routing Protocol

by 날으는물고기 2009. 11. 30.

DSR - Dynamic Source Routing Protocol

* hop-by-hop 라우팅 프로토콜이 아닌 source routing 기반

* route discovery, route maintenance 메커니즘을 정의

* route discovery

- Source node가 Destination까지의 경로를 찾는 과정 (캐쉬에 경로가 없을 때)
- ROUTE REQUEST 패킷을 broadcast, 이는 망에서 flood 됨
- RREQ메시지에 route record 포함 -중간 노드에서 순서대로 추가
- 중복방지를 위한 sequence number
- Destination node에서 ROUTE REPLY 패킷을 전송
- Route discovery의 cost를 줄이기 위해 각 node는 source route의 캐쉬를 유지
--- learned, overheard
--- RREQ의 propagation 범위를 줄이는 효과


* route maintenance
- 사용중인 route를 monitor 하여 link failure 검출
--- link level ACK
--- passive ACK : 패킷을 next hop에 보낸후, next hop이 패킷을 forwarding하는지 overhearing
- Link failure를 검출한 host는 ROUTE ERROR패킷을 source에게 전송
- Cache 내에서 해당 route를 모두 삭제
 
* Route Discovery 최적화
- Overheard, Forward한 routing information을 cache함 - route discovery 빈도를 줄임
- ROUTE REQUEST 의 propagation을 줄이기 위해 cache된 route를 사용하여 응답
- ROUTE REPLY Storm이 발생할 수 있음 - 목적지 경로까지의 홉수에 비례하는 ‘delay’를 주어 방지, Source가 최단 경로를 먼저 받을 수 있음
 
* Route Maintenance 최적화
- 만약 overheard 패킷의 경로보다 더 빠른 경로를 알고 있으면, gratuitous Route Reply를 보내 더 빠른 경로를 유지할 수 있도록 함

- 각 노드는 RouteError를 야기했던 data packet을 복원하려는 시도를 함
- 받은 RouteError를 RouteRequest에 piggyback - stale 된 경로를 널리 알리기 위해
- RouteError메시지를 엿들어 자기 cache와 확인



* DSR이 다른 MANET 라우팅 프로토콜(DSDV,TORA,AODV)에 비해 좋은 성능


linux Source routing 적용 & 삭제 방법

** 적용방법 **

## 처음 상태
ezWall# ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup 253

## 라우팅을 위한 rule 을 생성한다
ezWall# ip rule add from 192.168.1.50/32 table 200

## 생성된 후
ezWall# ip rule list
0:      from all lookup local
32765:  from 192.168.1.50 lookup 200
32766:  from all lookup main
32767:  from all lookup 253

## 생성된 rule 에 라우팅을 추가한다
ezWall# ip route add 0.0.0.0/0 via 192.168.1.35 table 200

## 생성된 후
ezWall# ip route list table 200
default via 192.168.1.35 dev eth3

## cache를 삭제하여 라우팅을 적용한다
ezWall# ip route flush cache

## 적용된 후 -- 라우팅 테이블 변경사항은 표시되지 않는다
ezWall# ip route
192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.1
218.145.125.0/24 dev eth0  proto kernel  scope link  src 218.145.125.32
default via 218.145.125.1 dev eth0

ezWall# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U        40 0          0 eth3
218.145.125.0   0.0.0.0         255.255.255.0   U        40 0          0 eth0
0.0.0.0         218.145.125.1   0.0.0.0         UG       40 0          0 eth0

** 삭제방법 ** 

## 설정된 rule 을 삭제한다
ezWall# ip rule list
0:      from all lookup local
32765:  from 192.168.1.50 lookup 200
32766:  from all lookup main
32767:  from all lookup 253

ezWall# ip rule del from 192.168.1.50 table 200

## 삭제된 후
ezWall# ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup 253

## cahe를 삭제하여 라우팅을 적용한다
ezWall# ip route flush cache

## 삭제된 후 -- 라우팅 테이블 변경사항은 표시되지 않는다
ezWall# ip route
192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.1
218.145.125.0/24 dev eth0  proto kernel  scope link  src 218.145.125.32
default via 218.145.125.1 dev eth0

ezWall# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U        40 0          0 eth3
218.145.125.0   0.0.0.0         255.255.255.0   U        40 0          0 eth0
0.0.0.0         218.145.125.1   0.0.0.0         UG       40 0          0 eth0



출처 : http://cafe.naver.com/kbnetworking
728x90

댓글