Routing Among ISPs: BGP
전에 살펴보았던 Inter-AS(Inter Domain) => AS끼리의 라우팅
Intra-AS(Intra domain)은 같은 AS내에서의 라우팅 개념
BGP : Border Gateway Protocol
인터넷이 붙어있을 수 있도록 "glue together"
=> ISP들을 연결
- policy-based Routing
- path vector routing Protocol로 분류
목적지 까지 가는데 ASN들의 full path list를 Routing Loop에 전달(advertise) 하지 않음(DV의 단점)
- advertise: will foward, 나중에 패킷이 오면 forwarding 하겠다.
- Classless inter Domain Routing
BGP는 패킷을 특정 목적지 주소가 아니라 CIDR로 표현된 주소의 앞쪽 Prefix를 향해 포워딩.
Prefix는 서브넷이나 서브넷 집합
- Incremental Updates: 변경된 내용만 Update
BGP : Peering
BGP간의 연결을 Peering 이라고 함.
peer들 사이에 BGP메시지를 주고 받는다
-
External BGP Peering between diffrent AS: eBGP
서로 다른 AS간 연결 맺을때 각 ASBR, Peer맺고 polcy기준으로 물리적으로 (directly) 연결
-
Internal BGP peering within the same AS : iBGP
iBGP Peer 들은 같은 ASN,그들은 TCP로 fully meshed(directly Connected 될 필요는 X)
eBGP와 iBGP running 하고 있는 라우터(ASBR)에서 나머지 모든 IBGP TCP Session 을 맺어야 함
결국 eBGP가 다른 AS로 부터 얻은 정보를 자신의 AS안에 있는 모든 라우터들에게 알려주기 위해 iBGP session을 직접 맺음
BGP : inter-AS routing
-
eBGP : learns subnet reachability information from neighboring ASs.
eBGP와 iBGP 모두 running하는 ASBR은 학습한 내용을 자신의 AS 안에 있는 모든 라우터와 맺은 TCP iBGP session으로 전달.
-
iBGP : propagates prefixed learned from outside the AS to all AS-internal routers.
eBGP를 운용중인 ASBR에게 받은 정보로 끝, 다른 internal iBGP와 정보를 주고 받지 X.
good Routes = policy
-
open: ASN number를 주고 받고 eBGP 인지 iBGP인지 판단
-
Update : 기존 경로를 철회하고 새로운 경로로 advertise
-
keepalive: Update 없이 연결 유지 및 ACKs OPEN Request
-
Notification: 이전 메시지에 있는 에러를 리포트, 또한 closed connection 사용.
Path attributes and BGP routes
BGP는 경로를 Prefix + attributes 형태로 advertise.
- prefix: 전파되는 목적지
- Attributes
- AS-PATH: 목적지 서브넷으로 가기 위한 Path Attribute, 어떤 AS를 거쳐야 하는 지의 AS list들
- NEXT-HOP: AS-PATH를 시작하는 라우터 인터페이스의 IP주소
각 BGP 경로는 NEXT-HOP, AS_PATH, 목적지 주소 Prefix로 구성
Hot Potato Routing
가능한 적은 cost로 intra-domain 벗어나도록 하는 AS를 선택하는 것(cost는 신경X)
SDN Control Plane
Internet Network layer는 역사적으로 router control approach 에 의해 시행되고 분배되었음
Per router Control Plane
전톡적으로 사용한 방식으로, 개별적인 routing 알고리즘을 사용하여, 각각의 라우터가 forwarding table과 상호작용(각각 진행)
Software-Defined Networking(SDN) control plane
Control plane 영역에서,
Remote controller 가 forwarding table을 계산하고 라우터에 설치까지(한데 모아서 진행)
why logically centralized?
- 네트워크 관리의 용이 : 라우터의 잘못된 구성을 방지하고, traffic flow에 대한 유연성을 증대시키기 위함
- Programming router 사용: 각각의 라우터가 계산을 하는 것 보다, 중앙에서 계산하고 뿌려주는게 더 효율적
- Open implementation of control Plane:
SDN 의 구성
- flow-based forwarding(Open Flow)의 일반화
- data plane, control plane을 구분해서 control
- control plane 관련 기능들은 data plane 외부로 빼놓기
- programmable control Apps
1. Data-palne switches
- 빠르고 간편하게 일반화된 data-plane forwarding을 실행
- flow(forwarding) table이 계산하면,controller supervision 아래 실시
- Open flow등 table-based switch control을 위한 API
- Controller 와 상호작용하기 위한 프로토콜(Open API)
2. SDN Controller(Network OS)
- network 상태 정볼르 유지
- 네트워크를 통제하는 어플리케이션과 northbound API를 통해 상호작용(상단)
- network switch들과 southbound API를 통해서 상호작용(하단)
- 퍼포먼스,규모, 오류-관용성 등등을 위해 distributed 되어 실시
Components of SDN Controller
3. network-control apps
- brains of control: lower-level service인 API는 SDN controller에 의해 제공받아서 기능을 통제
- unbundled: 제 3자에게도 제공이 가능하며 vender 나 SDN controller 에서 거리가 있어도 가능
Open flow protocol
- controller 와 switch 사이에서 동작
- TCP는 메시지 교환을 위해 사용
- Openflow 메시지의 3가지 클래스
- controller-to-switch
- 비동기(switch to controller)
- symmetric(misc.)
controller-to-switch messages
- features : 컨트롤러가 스위치 설정 파라미터들을 문의 혹은 설정 가능
- modify-state: 컨트롤러가 스위치 flow-table의 엔트리 추가, 제거, 수정, 설정하기 위해 사용
- packet-out: 컨트롤러가 제어하는 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용
asynchronous: switch-to-controller messages
- packet-in: 패킷을 컨트롤러에게 보내기 위해 사용
- flow-removed: 스위치가 컨트롤러에게 어떤 플로우 테이블 엔트리가 만료되었거나, modifiy-state 수신시 삭제되었음을 알림
- port status: 스위치가 컨트롤러에게 port의 상태 변화를 알리기 위해 사용
=> Flow table은 SDN controller 가 아닌 network-control Apps 가 프로그래밍, 컨트롤러는 전달
SDN : selected challenges
- control Plane 통제가 점점 어려워짐 -> 의존성, 퍼포먼스 규모, 분배시스템 보안 관련
- 네트워크와 프로토콜이 mission specific requirements에 유용
Internet Control Message Protocol : ICMP
ICMP는 호스트와 라우터가 서로간 네트워크 계층 정보를 주고 받기 위해 사용 ex. 오류보고
IP Datagram의 Payload 안에 TCP/UDP segment, OSPF, ICMP 메시지 들어갈 수 있음
ICMP report는 문제가 발생한 패킷을 처음 생성하여 보낸 IP에게 보냄
=> TTL= 1 로 보내어 One hop 딜리버리 타임 측정 혹은 목적지까지의 hop횟수 측정도 가능
Network management configuration : SNMP
network management?
- network = autonomous System, 수천개의 하드웨어, 소프트웨어가 상호작용하는 공간
- 항공기, 원전 등등 여러가지 것들에서 네트워크 감시나 통제가 필요함
Components of network management
- Managing server : 어플리케이션이나 특히 네트워크 관리자가 서버를 관리
- Managing Devies : 관리 대상 네트워크에 존재하는 장비들(호스트, 라우터, 스위치 등등)
- MIB(Management Infromaton Base): 관리되는 기기들에 agent를 띄워 관련 정보들을 여기에 저장.
Managing Server와 Agent 사이에 MIB DATA 를 주고 받는 프로토콜이 SNMP(UDP)