IPv6, SDN

gmkim·2023년 12월 11일
0

Network

목록 보기
7/9
post-thumbnail

IPv6

IPv6

 32bit가 부족할 것에 대비해 나온 것이 64bit를 사용하는 IPv6이다.

 더불어 IP버전을 바꾸면서 기존 IPv4의 header에서 필요없는 부분을 떼고, 진짜 사용할 것만 남겨 header format을 깔끔하게 바꾸었다.

IPv6 header

- ver : 4bit. IPv6 version에 해당하는 bit가 들어감.

- pri : data가 flow 형태로 전달되는데, flow간에 우선순위를 정해서 보낼 수 있게 해주자. 중간 라우터들이 우선순위에 대응해서 데이터를 빨리 보내줄 수 있음. scheduling하는 것임.

- flow label : flow를 구분해 줄 수 있는 ID. app1과 app2가 보내는 데이터는 다른 flow임.

- payload len : payload의 길이.

- next hdr : upper layer protocol에 대한 처리.

- hop limit : IPv4에서의 TTL이라고 보면 됨. 라우터 지날 때마다 하나씩 빼줌.

- source address, destination address (128bit) : 2^128개의 주소를 적을 수 있음. 이것은 어마어마한 수….

 header의 크기는 40byte로 딱 두배 늘어났는데, 표현할 수 있는 IP주소의 값은 어마어마하게 많아졌다. 안 쓸 이유가 없어보이는데 왜 안 쓸까?

 IPv6를 구현하려면 라우터에 기능이 들어가야 한다. 이것은 비용이 많이 들어간다. 그리고 전세계 모든 라우터를 교체하는 건 현실적으로 매우 힘들다.

Tunneling

 전세계 모든 라우터를 한번에 IPv6로 바꾸는 것을 불가능하다. IPv4**와 IPv6가 공존해야 하는 상황이 올 것이다. 이에 대비하여 "Tunneling"이라는 방법을 고안**했다.

 IPv4와 IPv6가 공존하는 상황이라 함은, IPv6를 인식하는 라우터와 인식하지 못하는 라우터가 있을 것이다. IPv6를 인식하지 못하는 라우터가 IPv6 datagram을 받을 때 처리하는 방법이 필요하다. 그래서 IPv4 datagram 내에다가 IPv6 datagram을 집어넣어서 IPv4 형식으로 처리할 수 있게 하는 방법인 tunneling을 고안했다.

 IPv6의 datagram을 보내는데, ABEF는 IPv6를 처리할 수 있고 CD는 처리하지 못하는 상황.

 이 때 CD 라우터를 지날 때 IPv4의 header를 붙여서 IPv4인 것처럼 보내서 통과하게 한다.

 B에서 C로 보낼 때, IPv6 datagram에 IPv4 header를 집어넣고 source IP는 B로, destination IP는 E로 설정해서 전송한다. 이렇게 C와D 라우터는 정상적으로 처리 후, E로 보낸다. E가 받았을 때는 이것을 읽고 IPv4를 떼버린다.

SDN

 - SDN은 control plane과 data plane을 분리한 하나의 네트워크 구조이고,

 - OpenFlow는 이 SDN 속에서 controller와 라우터간 인터페이스로, OpenFlow 프로토콜을 사용한다.

  •  OpenFlow를 요약하면, 중앙 controller가 경로 정보를 계산하여 라우터로 보내지며, 라우터의 flow table에 저장된다. 이후 라우터는 datagram을 받을 때마다 flow table과 비교하여 계산된 경로로 보내게 된다.
profile
🌊 Flooding loads of work

0개의 댓글