link state : global(모든 정보 다 알고있음)
distance vector : decentralized(이웃정보만 알고 나머진 계산)
link state
Dijkstra's link-state routing algorithm
- 옆의 노드한테 broadcast함
- 모든 노드는 같은 정보를 가지게
- 처음 노드부터 끝 노드까지 순회하여 모든 노드에서의 최적 루트를 찾는다
algorithm complexity : n(n+1)/2 즉, O(n^2)의 복잡성을 가짐
message complexity : 각 라우터 O(n), 전부는 O(n^2)
oscillations possible
트래픽 양의 비례해서 cost를 바꿔주면 cost가 낮은쪽으로 트래픽이 또 몰림
결국 계속 왔다갔다 거리기 때문에 트래픽양에 비례해서 cost를 책정하면 안됨
Distance Vector
- 각 노드만의 정보를 neighor노드에게 보낸다.
- 만약 이웃으로부터 새로운 distance vector를 받았다면 계산을 통해 자신만의 테이블을 업데이트한다.
- 계속하면 최적 코스트 값에 수렴
- 비동기적
- 결국, 기다렸다가 -> 오면 재계산하고 -> 다시 알려주고(변경 있을때만)
link cost changes
만약 코스트가 감소된 경우엔 -> 정상 작동됨
하지만 코스트가 늘어난다면 -> 옆 친구가 더 작은 코스트있다고 잘못 알려줘서 빙빙꼬임
LS vs DV
message Complexity
LS: O(n^2)
DV: 이웃사정에 따라 다름
Speed
LS: O(n^2)
DV: 유동적
견고성
LS: 각 노드는 자기 테이블만 계산하기에(전파X) 잘못되더라도 특정 노드에 대해서만 영향있음
DV: 하나 잘못되면 다망가짐
Making Routing Scalable
intra-AS(내부) vs inter-AS(외부, 각 AS간)
- AS간 내부 라우팅 => interAS로
- 외부 라우팅 => interAS + intraAS
Intra-AS
1. RIP : DV사용 (이제 사용안함)
2. EIGRP : DV 베이스
3. OSPF : LS 사용 (현재 젤많이씀)
OSPF
- 각 라우터는 AS안의 전체 라우터에 OSPF link state 알림(IP바로 위에 합쳐서 전달됨)
- 각 라우터는 다익스트라 알고리즘 통해서 모든 정보 알고있음
- 메시 인증받아야함
- Hierarchical OSPF : local area + backbone으로 구성
topology : 각 노드간의 관계 정보
Inter-AS
BGP
- 나는 어느 서브넷에 있다 하는 내용을 전체 서브넷에게 알리는 프로토콜
- eBGP : 이웃간 AS들한테서 서브넷 정보 받아오는것
- iBGP : 받은 정보를 AS내부 라우터들에게 알려주는것
BGP's advertise message = prefix+attributes
prefix : 목적지 (subnet 주소)
attributes : AS-PATH(prefix에 가기위해 어떤 AS걸쳐야 하는지), NEXT-HOP(다음 hop의 gateway 라우터 알려줌)
- policy-based routing : policy에 따라 해당 루트를 사용할건지 결정
ex. 바로가는 루트하고 두번 걸쳐가는 루트가 있다고 정보가 들어오면 policy가 더 좋은 루트(여기선 바로가는거) 선택하고 내부 as에다가 ibgp로 전파
BGP 메시지
- OPEN : TCP 연결을 만들어 BGP peer들과 연결하고 전송을 인증한다.
- UPDATE : 새로운 path를 광고한다.(아니면 예전꺼 취소)
- KEEPALIVE : 연결 유지한다. update를 꾸준히 함(안하면 끊어지니깐)
- NOTIFICATION : 전 메시지에 대해 에러를 보고한다. 아니면 연결 끊을때도 사용
Hot Potato routing
만약 intra 라우터중 하나가 inter 라우터에서 온 정보를 두개 이상 받았다면 gateway의 cost가 작은 쪽으로 루트 설정
결국 BGP가 라우팅을 하는 기준은 아래와 같다.
1. policy의 결정에 따라
2. 가까운 AS-PATH
3. 가까운 NEXT-HOP라우터 : Hot Potato
4. 추가 기준
intra-AS vs inter-AS 차이점
- intra AS는 admin이 혼자라 policy가 중요하지 않는 방면 inter-AS는 admin이 누군가 어떻게 트래픽이 라우팅되는지 제어해주길 바란다.
- intra AS는 성능에 집중할 수 있지만 intra AS는 policy가 지배한다.
SDN(Software defined networking)
분산된 라우팅별 제어 방식을 통해 구현
- Per router는 각각의 routing algorithm에 의해 forwarding table을 갖고있떤 반면 SDN은 컴퓨터가 중앙 통제한다.
- flexibility가 높아지고 중앙 집권화된 시스템이 더 구현하기 쉬움
data plane
- 빠르고 간단한 스위치들
- flow table이 계산됨
- OpenFlow와 같이 controller와 통신하기 이해 연결되어 있는 프로토콜
SDN controller
- network 상태 정보를 가지고 있음
- network control application, network switch들과 상호작용
- 분산된 시스템으로 구현
network-control apps
- SDN에서 제공해주는 API를 통해 control function을 구현함
- 다른 업체에서 제공될 수 있음(SDN controller 과 업체가 다를 수 있음)
인터페이스 레이어 : API 추상화
network-wide state management :
네트워크 링크, 서비스 등 상태 저장
communication: controlled switches들과의 연결
OpenFlow protocol
- 스위치와 컨트롤러 사이 작동
- 메시지 교환 위해 TCP가 사용됨
- controller과 switch양쪽으로 메시지 보내는거 가능
- OpenFlow API와 구별됨 (API는 forwarding할때나 쓰임)
컨트롤러 -> 스위치
- Feature
- configure
- modify-state(대표적) : openflow 테이블 상태 수정하라
- packet-out
스위치 -> 컨트롤러
- packet-int
- flow-removed
- port status
ICMP : Internet Control Message Protocol
- host와 router간 통신하기 위해 사용 (error reporting or request/reply)
- 얘도 OSPF와 같이 IP바로 위에 작동 (IP datagram에 carry됨)
Traceroute
뭐 예를 들어 2번째 router까지 가는 시간 알고싶다하면 TTL을 2로해서 보냄, 그러면 2번째 router에서 TTL은 Expired되는데 이때 ICMP error message가 만들어서 돌아올거임. 이짓을 3번정도 해서 돌아오는시간 평균내면은 어느정도 시간이 걸리는지 짐작 가능 (ICMP 메시지엔 router 이름과 ip 주소를 곁들일 수 있음)
정지 기준은 일부로 포트가 없을만한 곳으로 보내서 드랍시킴
Network Management
-CLI(command line)
- SNMP/MIB
- NETCONF/YANG
YANG : 데이터 모델링 언어
NETCONF : YANG 호환하는 디바이스들과 통신
SNMP
MIB(Management Information Base)를 수집함
MIB : device 운영 정보
- request/response 방식
- 알아서 trap
SMI : data definition language
NETCONF
managing server와 managed network devices 사이 작동
- 운영 데이터나 통계 등을 조회
YANG
Netconf에서 사용하는 XML을 자동으로 만들어줌
'Network' 카테고리의 다른 글
Computer_Network_Link_Layer (0) | 2024.06.09 |
---|---|
Computer Network _ Network Layer_data plane (1) | 2024.06.08 |
ARP 캐시 테이블의 이해 (0) | 2024.02.29 |
DHCP 서비스, DNS 서비스, 물리적 주소 (0) | 2024.02.14 |
IP주소, 서브넷 마스크, 기본 게이트웨이 (4) | 2024.02.07 |