2022. 4. 28. 16:23ㆍ강의 내용 정리/컴퓨터 네트워크
Network Layer 2
1. Softwarization
"Software is eating up the world."
- Mark Adreeseen
- 전세계에서 주요한 소프트웨어를 장악하는 것은 리눅스이다. 리눅스 파운데이션은 전통적인 OSI 7 layer는 소프트웨어가 IO Abstraction and data path에, disaggregate는 네트워크 하드웨어와 커뮤니케이션과 해당된다. 어플리케이션 하나에 모든 것을 다하는 것이 과거의 접근이었다면 최근에는 하드웨어와 소프트웨어가 분리되어있음. 1계층부터 4계층까지 IO Abstraction and data path에 집어넣는다. 전통적인 OSI 7 layer 처럼 네트워크를 복잡하게 분리하는 것이 아니라 1 ~ 4계층을 밑에 깐다. 또한 위에 있는 계층이 더욱 중요해진다. 하드웨어에 필요한 네트워크 기술과 소프트웨어를 덮는다. 네트워크를 관리자가 제어하고 싶은 경우에는 이러한 기능도 추가한다. 또한 클라우드도 사용한다. Orchestration and management와 이후 네트워크 분석도 진행한다. 네트워크 분석을 기반으로 컨트롤하고자 한다. 이후 소프트웨어 기능을 구현한다. 이에 따라 네트워크관련 내용은 하단부에 포함해서 안보이게 하고자 한다. 이러한 방법은 2010년대 중반부터 유행한다.
- 중요한 프로젝트들은 대부분 리눅스 파운데이션을 기반으로 만들어졌다. 과거는 표준을 중요시했지만 현재는 리눅스 파운데이션 산하에서 새롭게 만들어진 네트워크 기술들이 오픈소스로 인해 확산되고 있고, 네트워크는 리눅스 파운데이션 소프트웨어가 먹고 있다.
[리눅스 파운데이션 산하에서 만들고 있는 네트워크 관련 프로젝트 중 일부]
- 새로운 오픈소스 네트워크 소프트웨어가 존재하니 이를 이해하는 것이 중요하다.
1970년대 만들어진 TCP/IP도 여러 오픈소스 소프트웨어가 존재한다. router를 구현하기 위한 소프트웨어가 많았고, 각각의 기술로 이론이 성립되고 구현되어 장비로 만들어져서 팔린다. 그러나 전통적인 router도 많이 팔리긴 한다.
Ericsson's Annual Sales
오픈소스가 존재했지만 특별한 서비스가 없었기에 소프트웨어는 크게 중요한 느낌이 아니었다.
아이폰 이전에는 스마트폰은 단순히 이메일, 전화의 역할이었지만 스마트폰 도입 이후 소프트웨어가 중요해지고 많이 팔렸다.
1. 인텔 CPU가 스마트폰에 도입이 되고 더 좋은 컴퓨터가 통신 장비에 깔림 -> 통신사 입장에서는 대부분의 제품이 인텔 CPU를 가지고 있기에 제조회사는 차별화된 제품을 제공하지 못한다면 하드웨어를 판매하지 못함
2. 이동통신에서 인터넷이 확산되기 시작했다.
결국 전화 중심이 아닌 새로운 통신 서비스의 입장에서 바라보게 됨. 이에 따라 서비스와 서비스를 잘 제공하기 위한 네트워크가 필요하게 된다. 따라서 routing과 forwarding은 점점 줄어들게 된다. 소프트웨어의 비중이 확산된다.
인텔 CPU의 기반에는 리눅스를 운영체제로 선택했다. 따라서 통신 네트워크는 전통적인 라우팅과 포워딩에서 똑똑한 서비스와 네트워크를 제공해서 엔드유저 어플리케이션을 잘 돌아가게 하는 것으로 돌아간다.
이를 기반으로 에릭슨은 우리의 네트워크 장비가 어떻게 변해야한다고 비전을 선포함
12개가 넘는 하드웨어와 소프트웨어를 하드웨어는 3개, 소프트웨어는 2~3개로 줄이겠다는 비전을 밝힘. 더이상 한정된 기능만 지원하는 것이 아니라 여러 기능을 지원하는 장비를 제공한다. 또한 굳이 하드웨어를 사지 않더라도 소프트웨어를 쓰는 만큼 비용을 지불하게끔하는 리스 모델을 도입하고자 함. 물리적인 환경에서 제공하는 것이 아닌 가상화를 제공하고자함
인텔 CPU와 리눅스가 네트워크 환경을 바꿔버리고 에릭슨은 이를 지킴
에릭슨은 약속대로 3개의 하드웨어를 만듦.
- RBS는 안테나가 있어서 사용자와 첫번째로 접근하는 장치로 무선관련된 OSI 1, 2가 하드웨어로 들어가기에 이동통신의 기지국 역할을 한다. -> 무선 하드웨어
- blade server는 cpu를 가지고 있는 서버이다.
- SSR 8000은 포워딩과 라우팅을 할 때 빠르게 동작해야한다. 여러 개의 이더넷 줄을 실시간으로 처리해야하기에 특별한 하드웨어가 잘 구성되어있어야한다. -> 유선 하드웨어
- 장치 주변에 적혀있는 것들은 기존 하드웨어와 소프트웨어를 의미한다. 해당 기능들을 합쳐서 하나의 장치로 만든 것이다. 이러한 컨셉 덕분에 공용하드웨어를 사고 필요하면 옵션으로 추가 하드웨어를 구매해서 옵션으로 돌리는 식으로 할 수 있다.
- 하드웨어는 줄어들고 하드웨어 위에서 통신을 어떻게 짜는가가 굉장히 중요해졌다. 이에 따라 장치 중심에서 소프트웨어 중심으로 바뀌고 있다.
용량이 커지거나 작아지거나 할 때 요즘 나오는 통신장치는 rec으로 만든다. -> 필요한 모듈만 사용한다. 이를 common platform이라 한다. 네트워크 장치가 기본적인 하드웨어가 주어지면 어떤 소프트웨어를 올리는지가 더 중요해졌다.
과거인 경우에는 라우터를 사용했지만 최근 통신 장치는 common platform이고 여러 스펙들이 있어서 할 수 있는 하드웨어가 존재하고 이 위에 소프트웨어를 올리면 된다. 이때 라우터 소프트웨어를 올리면 라우터가 된다. 박스 하드웨어를 세 종류로 나눈 것이다. 필요한 박스 하드웨어를 가지고 필요한 소프트웨어를 만들어서 이를 올린다. 이때 네트워크 장치들이 가상화되어있다고 얘기한다. -> 네트워크 함수가 가상화되어있다고 한다. 박스를 받았을 때 딱 기능이 정해져있지 않고, 필요한 소프트웨어를 필요한 만큼만 돌리는 것을 네트워크를 가상화한다고 한다.
네트워크는 이동통신/유선통신이던 음성전화에서 인터넷과 서비스로 넘어가고 거대한 변화를 만났으니 일반 컴퓨터처럼 하드웨어가 들어가있는 컴퓨터를 쭉 깔고 그 외에 소프트웨어로 하는 것이 더 중요해졌다.
왼쪽과 오른쪽은 비교되어있는데 과거에는 네트워크 엘리먼트라고 한다. -> 장치는 딱 역할과 기능이 정해져있었다. 이에따라 정해진 위치에 설치되어야했다. 이러한 장치는 서로 다른 제조업체가 만들더라도 호환성이 중요했었기에 표준이 매우 중요했다. 인터넷은 라우터 중심인데 본인들이 알아서 판단해서 본인이 맞는 쪽으로 패킷을 보낸다. 라우터를 소유한 통신업자가 원하는 방향으로 패킷을 보낼 수 없었다. 즉, 소프트웨어는 하드웨어가 뭐가 돌아가냐에 따라 영향을 받기 때문에 장치보단 장치 내의 소프트웨어 함수가 중요해진다. 현재 사회는 네트워크의 장치 중심이 아닌 박스 중심이다. 표준이 중요한 분야도 있지만 지금은 표준이 의미가 없어지는 부분도 존재해진다. 따라서 표준이 약화되었다. 지금은 컨트롤 가능해진다. -> SDN과 현재 사회에서 중요해진 특성이다. 네트워크를 제어하는 것이 서비스 입장에서는 중요할 수 있다. TCP/IP는 라우터를 설치할 뿐 제어할 수 없었는데 이제는 제어할 수 있게 되었다. 과거에는 불가능했었다.
Softwarization 요약
인텔 CPU와 리눅스의 확산으로 하드웨어는 평균이 되었다. 특별한 하드웨어가 들어갔지만 그 주도권은 소프트웨어가 쥐게 되었다. 반드시 이해해야하는 단어이다. -> 장치에 무슨 소프트웨어가 들어갔는지가 중요하다.
2. Software defined Network(ing)
1) Internet
- 네트워크에 대한 철학
- 통신업자가 인공지능을 하는 이유를 설명할 수 있다.
- IP 라우터가 연결되어있으니 서로 메세지를 주고받으며 길을 뚫음
- 통신과 수신을 한다. -> 라우터가 동작하는 지를 판단하기 위함 -> 라우터가 받아서 길잡이 역할을 했다. 분산처리하며 최적화되지 않으며 통신업자의 의도대로 움직이지도 않았음
2) Router
- 전통적인 방식의 라우터의 소프트웨어가 어떻게 구성되었는지 확인하게 됨
- 패킷이 포트로부터 받으면 어디로 보낼지 테이블이 존재했다. 라우팅 소프트웨어가 주변 라우터와 통신해서 어디로 보낼지 결정하는데 컨트롤러가 이를 돌림 -> 이러한 결과로 라우팅 테이블과 포워딩 테이블을 만들었었음 -> 독립적으로 동작할 필요가 있을까? 의문점이 생길 수 있음
아래의 문제점이 발생한다.
(1) 새로운 통신 프로토콜
(2) 사용자 전용 Customozed 라우팅
(3) 패킷 레벨 전송 경로 제어
(4) 서비스 인식 기반 전송 기술
(5) 서비스 인식 기반 패킷 처리 기술
(6) Cross Layer 서비스 지원
(7) 멀티벤터 장비의 일관된 제어 및 관리
- 서비스들마다 필요한 기능들이 다른데 이를 반영하지도 못한다. ex) 로스 발생 x한 서비스나 실시간 서비스
- 레이어간 통신이 불가능했다.
1 ~ 3번째는 내 의도대로 만들고 싶어하는 것
4 ~ 6번째는 서비스를 운영하기 위한 네트워크가 도구이기에 이를 제어하고자 함 -> 서비스를 잘하도록 도와줄 필요가 존재한다.
3) SDN
- 메세지를 어떻게 전송하는가
- 라우터 안에서 돌아가는 것을 컴퓨터에서 구현을 시작했지만 이것이 돌아가기 시작함
- Data Plane과 Control Plane이 나눠지고 패킷을 받아서 처리하는 Data Plane은 값을 저장하고 데이터를 확인하는 Forward가 있다. 라우터는 라우터간의 통신을 해서 라우터 테이블을 만들었지만 컨트롤하는 소프트웨어를 바깥으로 빼냈다. 스위치 안에는 forwarding 테이블을 바깥 장치로부터 가져와서 본인의 테이블로 업데이트하는 역할을 한다. 즉, 스위치는 외부 장치로부터 받은 테이블을 가지고 본인의 포워딩 테이블을 업데이트하고 받은 테이블에서 시킨대로 포워딩을 한다.
(1) openflow 프로토콜
Control Plane 소프트웨어는 기존의 라우터에 해당하는 자리에 openflow switch가 들어간다. 패킷이 들어오면
- secure channel 외부와 통신하는 채널 -> secure channel이 테이블을 받아서 통신한다.
- flow table은 통신 네트워크 전체를 거시적인 관점에서 바라보는 중앙 집권형 컨트롤러가 제공한다.
- 컨트롤러가 스위치에게 플로우 테이블을 전달하는 프로토콜의 이름이 오픈플로우임 -> 이를 개방형 관점에서 오픈 플로우 명령을 지원하는 스위치는 똑같은 정보를 내리는 것에 의거해 모두 동일하게 동작한다는 판단하에 오픈 플로우 프로토콜이라 한다.
(2) Open Flow Protocol
Rule
- 스위치 포트, 맥의 어드레스, 소스/데스티네이션 어드레스 등 2, 3, 4계층의 주소를 전달한다. -> 계층 파괴 및 Cross layer를 진행한다. 4계층 정보까지 가면 동일한 목적지로 가는 것은 동일하지만 TCP의 번호가 다르다면 주어진대로 다르게 동작할 수 있다. 계층은 파괴되었다.
ex) 기존의 경우는 A와 B의 IP 통신은 라우터가 동작한다. 하지만 서비스가 달라지면 컨트롤러가 정한대로 갈 수 있다. IP에서는 동일한 목적지는 메세지의 종류와 관계없이 같은 취급을 하지만 음성, 이미지 등을 나눠서 서비스별로 다르게 처리할 수 있다. 2, 3, 4계층도 포함하기에 똑똑하게 처리 가능하다.
Action
1. 라우트를 포워딩해라
2. DHCP 리퀘스트에 걸리면 컨트롤러에 보내라. DHCP 서버가 별도로 없어도 컨트롤러가 DHCP 소프트웨어를 처리할 수 있게된다.
3. 어떤 룰에 걸리면 패킷을 버려라
cf) 파이어 월 -> 허가된 리스트만 통신 / 블랙 리스트에 걸린 얘들은 통신 불허 // 액션 3번을 적용하면 블랙리스트에 해당하는 얘들은 컨트롤러가 룰로 전달해서 이를 버릴 수 있다. -> 파이어 월의 기능도 할 수 있다.
4. 트랜스코딩을 하는 기능등을 해서 장치에 따라 다르게 동작하게끔 할 수 있음
-> 메세지를 전달하는 것을 넘어서 더 많은 일을 할 수 있게된다. => 컨트롤러는 네트워크 컨트롤을 해야하기에 인공지능을 해야한다.
- 다시 중앙집중화되었고 스위치는 파이어월, DHCP, 트랜스코딩 서버스럽게도 행동할 수 있게 된다.
3. Network function Virtualization
1) NFV란?
- 스탠다드 서버(리눅스 기반의 컴퓨터), 스탠다드 스토리지(디스크), 스탠다드 스위치(openflow에서 언급한 스위치)가 존재하고 어떤 소프트웨어가 돌아갈지 독립적으로 존재하고 앞에서 에릭슨을 얘기한 것처럼 원하는 소프트웨어를 내리면 그 소프트웨어대로 동작한다. -> 스탠다드 기반으로 장치를 두고, 네트워크 기능만 구현해놓는다. 네트워크 기능이 서버 위에서 돌아가면 라우터처럼 동작한다 -> 이를 가상화라고 한다.
범용성이 있는 장치에 필요한만큼 네트워크 기능을 사용하게끔 하는 것이 network 가상화라 한다.
가상화된 네트워크 소프트웨어를 가상화 어플라이언스라고 한다.
피지컬한 박스가 존재하는 것을 classical network appliance라고 한다.
2) NFV와 SDN은 다르다.
SDN은 받은 패킷을 어디로 내보낼지에 대한 길잡이(네트워킹)에 대한 내용이다. NFV는 박스 안에 국한된 기능에 대한 내용이므로 이를 구분하는 것이 중요하다. 새로운 생각과 창조적인 아이디어가 중요하다. cf) 통신사는 이를 구현하기 위해 개발자를 많이 뽑는다.
클라우드 컴퓨팅에서 이러한 소프트웨어를 짜도록 제공해준다.
4. SDN/NFV
SDN과 NFV의 구분
- Access: 이동통신망
- Server: 구글과 같은 접속한 곳
- FW(Firewall): 보안을 하기 위해 사용한다.
- DPI: 패킷을 깊게 확인하는 것
- CDN: 필요하다면 컨텐트를 캐쉬, 트랜스코딩을 진행한다.
-> 옛날에는 Edge functions를 하는 장치가 비싼 가격으로 존재했다. 지금은 각각의 소프트웨어로 존재하고, 이를 나눠서 필요한 부분에서 사용한다. 즉, 이제는 별도의 소프트웨어로 사용할 수 있기에 이를 가져올 수 있는 회사가 늘고, SDN으로 연결해서 전후관계만 가져갈 수 있게된다.
- 장비에 대해 소프트웨어화되었고, 이를 본인이 짤 수 있다.
- 필요한 기능이 있고 이를 체인처럼 연결하는 것이기에 서비스 체이닝이라는 아이디어도 갖게 된다.
5. SDN/NFV Softwares
실제 구현 및 도입 사례
1) OpenDaylight
- 전통적인 통신장치와 새로운 SDN/NFV를 모두 사용할 수 있음
- 오픈소스 소프트웨어이다.
2) ONOS
- SDN 구현 위주인 소프트웨어
3) OpenStack Networking
- 네트워크 관점에서 소프트웨어를 추가함
- NFV 컨셉을 구현하기 위해 클라우드 컴퓨팅을 기반해서 구현함
- 외부 통신 및 본인이 원하는 동작을 구현한다.
- 이를 지원하는 스위치가 나오고 이에 따라 여기에서 소프트웨어를 직접 짤 수 있다.
- bare metal: 메탈밖에 없다.
- 리눅스로 만드는 유무선 공유기에 포함되어있다.
- NAT, PAT, DHPC 등을 할 수 있다.
- 유무선 공유기에도 오픈 플로우가 동작한다.
- 각 트래픽이 온 것을 어디로 내보내는지, 어떤 트래픽은 빠르게 보낼지를 정할 수 있다.
6. SDN/NFV Use Cases
- 영국의 국영 통신사
- 필요한 인과관계를 연결하는 역할을 한다.
- 수많은 네트워크 장치가 있기에 CPU가 존재하고 SDN이 있으니 연결이 가능하고, 필요한 기능을 필요한 구간에서 구현할 수 있다.
- 네트워크 안에서 필요한 만큼 사용할 수 있다.
- 유튜브 서버가 미국에 있어서 조금 느렸지만 이후 한국에 들어온 뒤 조금 빨라짐 -> LG u+와 함께 제휴를 맺어 LG 사용자는 더 빨라짐
- 이동통신 기지국은 여러 곳에 퍼져있고, 네트워크 장치가 아파트 관리사무소에 있기도 한다. 수많은 기지국 옆에 CPU와 디스크를 두고 이를 캐쉬서버로 쓰면 굉장히 빨라짐
- CDN도 가입자 바로 앞까지 보낼 수 있고 이를 엣지 컴퓨팅 등으로 불린다.
셋탑박스를 설치할 때 설치하는 사람의 비용이 크기에 이를 설치하지 않고, 집 바깥의 IP TV 소프트웨어 서버에 그 기능을 두어서 셋탑박스 소프트웨어를 바깥에서 돌릴 수 있다. 이를 통해 NFV식으로 사용할 수 있다.
- DAC 레이어 장치들도 없어지려 한다.
- 이는 통신사 입장에서 보기에 조금 무겁다.
- 네이버나 구글은 본인들이 조금 더 가볍게 필요한 기능을 구현해서 사용한다.
- 스토리지에서도 이러한 개념이 등장하기 시작한다.
- 서비스를 확장시키는 것으로 넘어가고 있다.
7. SDN/NFV into 5G
METIS2020
5G 이동통신을 어떻게 만들 것인지에 대한 아키텍쳐
- NFV orchestrator(제어) / SDN(줄 관리)
과거에는 단말기 기지국이 하나였다면 이제는 컴퓨터와 디스크를 여기에 두겠다는 NFV 철학으로 어디에든 두게 된다.
- 사용자가 원하는 니즈에 부응해 필요한 기능을 구현하고 네트워크에 구현하고자 하는 SDN과 NFV가 필요했다.
- 이는 거대한 프로그래밍환경이 된 것이다.
- VNF와 SDN은 5G에서 필수이다.
8. P4 (programming language)
- 포트, 포워딩 테이블을 사용해서 내보내는 것은 하드웨어의 영역이었지만 P4는 이 부분도 프로그램으로 짜고자 했다.
- C나 Python으로 사용할 수 있다.
- layer 2를 완전히 프로그래밍으로 짜더라도 링크속도가 나오도록 한다.
- 하드웨어가 좋아지다보니 프로그래밍 언어로 사용하더라도 빠르게 동작할 수 있게된다.
'강의 내용 정리 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 (8), Transport Layer 2 (0) | 2022.05.24 |
---|---|
컴퓨터 네트워크 (7), Transport layer 1 (0) | 2022.04.28 |
컴퓨터 네트워크 (5), Network Layer 1 (0) | 2022.04.28 |
컴퓨터 네트워크 (4), MAC/DLC (0) | 2022.04.28 |
컴퓨터 네트워크(3), DLC Layer (0) | 2022.04.28 |