|
9 F5 h$ [) K' D" d% r 今天咱们来聊聊SDN。 0 l1 i3 k1 ^/ v8 i
SDN 是一种相对开放、相对较新的网络技术。一般来说,你会在开发运营、校园网、数据中心安全或者是服务提供商网络中接触到它。 9 u. i/ }0 H4 n/ _6 h
作为一名网络工程师,我是建议你必须要稍微详细了解下SDN的,比如:
' H* d. f, E3 b c$ B5 R6 D 它是如何定义的? ! v' \$ S0 S# T7 `) N1 s
它的架构特点是啥?
- k; \, w4 t8 `1 Y 它具备哪些优势? + [% V. s6 G o
哪些场景可以利用 SDN 的特点,哪些场景不适用?
3 V$ W3 d7 W( i" G' B 想要详细且系统的学习SDN的技术点,看完老杨这篇文章大概率还是不够的。因为,你不得不承认,只要是在自媒体上出现的内容,因为算法的原因,都是碎片化的。 - M4 i: b. j& [0 z, M5 \
你看完老杨这篇文章,下次我出下篇时,又有哪些人能立刻收到消息看完的?就是这个道理。
* |1 R# c0 y1 j; w) \
* z" }) i7 _6 z4 R+ k$ q9 [ 想要系统化、逻辑化学习,还有一种更加高效的方式,就是学习思科或者华为的IA认证+IE认证。
$ Z( L. z% u8 |; b1 @ 这部分内容,在认证的初级和高级都有涉猎,在认证里有非常完整的技术点(理论+实践),想要详细学习这部分内容的,可以私信我。 $ [( m6 j' \+ D6 E+ T
01 啥是SDN?
% O2 q( U& L4 a 软件定义网络全称为 Software Defined Network ,在 2006 年,由美国斯坦福大学提出的一种新型网络架构。 5 |" R6 j, B5 x. K
5 Q% i' S6 v0 q: j* J0 H 无论哪种定义,SDN大致拥有以下3个特征: 网络开放可编程控制平面与数据平面分离逻辑上的集中控制
2 B, X8 M+ i& A, }- ?! U5 q- i 正所谓“不为业务负责的技术,都是耍流氓”,SDN是在这个前提下出现的,是为了满足业务的实际需求而诞生的。 # A5 m( K: L# o
SDN旨在为公司提供稳定且适应性强的网络架构, 老杨个人觉得,SDN本质上是将原有的分布式控制转变为集中式控制。
8 q8 V9 y) P7 J% C' k 这个架构具备处理由云化及传统 IT 基础设施组成的复杂系统的能力,也具备操纵底层网络基础结构的能力。 % x6 m3 y. x7 S# c
它能使网络控制可编程,且可以使用软件进行控制,实现更大的敏捷性。 5 ]2 M8 q2 B7 @' S' h/ Y
# v( j1 Y9 h; b# G; k 这时候,你身为管理员,就可以根据需要动态调整网络中的流量,你可以从中央控制台调整流量,而无需接触网络中的各个交换机。
0 }3 V7 p1 U4 p( i: j% J4 O 无论服务器和设备之间的特定连接如何,集中式SDN 控制器都会指导交换机在任何需要的地方提供网络服务。 4 ~% [' A# |' x; t* I# ?2 x
因此, SDN 技术能够有效降低网络设备负载,协助网络运营商更好地智能化的管控基础设施,降低整体网络运营成本。 & W+ G% v8 m- L4 w3 \8 G3 `
它与传统网络架构是非常不同的:
$ M2 \/ Q* }; W4 i+ F; q/ z 在传统网络架构中,单个网络设备根据其配置的路由表做出流量决策,SDN 在网络中发挥作用已有十年,并影响了许多网络创新。
/ B2 _# N2 s3 W# J8 t) [9 E& }7 d 02 SDN架构,一张图搞定3 I* q" l9 \- y9 H) E6 S& o' x
SDN架构的典型表示包括三层:应用层、控制层和基础设施层,这些层使用北向和南向应用程序编程接口 ( API ) 进行通信。
' m6 `' `+ a9 Q& }9 k! G4 }7 U 下面这张图存好,看完就能大概理清逻辑。
- @9 n! ?5 `+ ]6 w$ M: z
( q) V% f$ |" M7 M- ~$ i 01应用层
( s# u! y5 z, L) q# O; s# A7 o 应用层包含组织使用的典型网络应用或功能,这可能包括入侵检测系统、负载均衡或防火墙。 8 g7 X& U% A5 ]0 @0 k
传统网络将使用专用设备,例如防火墙或负载均衡器,而软件定义的网络则用使用控制器来管理数据平面行为的应用程序替换设备。 2 I: M9 o) w# ^0 D# P" \
02控制层 ! Z: J2 V( c1 Q3 \* D( I, J' O
控制层代表集中式 SDN 控制器软件,充当软件定义网络的大脑,该控制器驻留在服务器上并管理整个网络的策略和流量。
# r' z" V+ s8 v! n6 Q 03基础设施层 $ {. |9 w/ A/ f% |- a+ w, r9 g
基础设施层由网络中的物理交换机组成,这些交换机将网络流量转发到它们的目的地。 2 B' d- j+ e% `% ]' ?! W
04API接口 9 l5 Q/ m: j2 M' S/ g
这三层使用各自的北向和南向API 进行通信,应用程序通过其北向接口与控制器通信,尽管存在其他协议,但控制器和交换机使用南向接口(例如OpenFlow)进行通信。 ' Y R1 k- |% x0 M9 n
控制器的北向API目前还没有正式的标准来匹配OpenFlow作为通用的南向接口,鉴于其广泛的供应商支持,随着时间的推移,OpenDaylight 控制器的北向 API 可能会成为事实上的标准。
+ H: Y' f3 \5 u9 h6 R* e! J& |
5 _6 P: u# o" \$ n" U; _, Z: x 03 SDN的工作原理,我这么和你说
0 D$ B0 Y& M% M. C2 E3 R SDN 实际上包含很多种类型的技术:比如功能分离、网络虚拟化和通过可编程性实现的自动化。 $ D2 g4 A4 b! `1 m8 f) t# t
最初,SDN 技术只专注于网络控制平面与数据平面的分离,当控制平面决定数据包应该如何流经网络时,数据平面将数据包从一个地方移动到另一个地方。 3 C) d# V5 ]7 e3 P" ?& u
在经典的 SDN 场景中,数据包到达网络交换机,交换机专有固件中内置的规则告诉交换机将数据包转发到何处,这些数据包处理规则从集中控制器发送到交换机。
2 U- T {- R9 ?2 h 交换机(也称为数据平面设备)根据需要向控制器查询指导,并向控制器提供有关其处理的流量的信息。
5 y6 a7 {/ C/ k3 X J$ k ( P' m8 T) o0 c) L8 k
交换机将每个数据包沿着相同的路径发送到相同的目的地,并以相同的方式处理所有数据包。 # d$ ^& V4 r9 V: B$ i3 g
软件定义网络使用有时称为自适应或动态的操作模式,其中交换机向控制器发出路由请求,以获取没有特定路由的数据包。 ) i/ u; v% J/ o3 d6 {$ O0 n
此过程与自适应路由分开,自适应路由通过路由器和基于网络拓扑的算法而不是通过控制器发出路由请求。
+ s& v! Q o0 g v
2 b/ I% R$ p; X3 ^5 p! ] SDN 的虚拟化方面通过虚拟覆盖发挥作用,虚拟覆盖是物理网络之上的逻辑独立网络,用户可以实现端到端的覆盖来抽象底层网络和分段网络流量。 ( V& ^. }+ w$ O8 M% `
这种微分段对于具有多租户云环境和云服务的服务提供商和运营商特别有用。 4 z8 {; ]: X6 E6 R2 G( n) _
因为,他们可以为每个租户提供具有特定策略的单独虚拟网络。 7 Q$ Q5 n( @( | c* D
04 SDN 和 SD-WAN,到底有啥区别?
! ?: D! o0 V/ T! q2 Z SD-WAN 是一种技术,它使用 SDN 概念跨 WAN 分配网络流量,以自动确定最有效的方式来路由进出分支机构和数据中心站点的流量。 " J% ?: w* f r6 X
SDN 和 SD-WAN 有相似之处,例如,它们都将控制平面和数据平面分开,并且都支持额外的虚拟网络功能的实现。
$ g. u* v& T# V& |3 W/ E# ] 然而,虽然 SDN 主要侧重于局域网内的内部操作,但 SD-WAN 侧重于连接组织的不同地理位置。这是通过将应用程序路由到 WAN 来完成的。 3 R0 x* w8 \' K1 v- `% E3 l
3 q9 X/ x$ R% b E# L$ F
SDN 和 SD-WAN 之间的其他区别包括: 客户可以对 SDN 进行编程,而供应商可以对 SD-WAN 进行编程。SDN 由封闭系统内的网络功能虚拟化 ( NFV )启用,另一方面,SD-WAN 提供虚拟运行或在 SD-WAN 设备上运行的应用程序路由。SD-WAN 在消费级宽带互联网上使用基于应用程序的路由系统,与对 SDN 至关重要的多协议标签交换 ( MPLS ) 相比,这可实现更好的质量性能和更低的每兆字节成本。3 `2 n* L" A( c6 N- R- b* _
所以,这么来看,SDN 和 SD-WAN 是两种不同的技术,旨在实现不同的业务目标。 * H7 w6 E" W. G2 n2 D4 Z: M* w! D6 |
通常,中小型企业在其集中位置使用 SDN,而希望在其总部和外部站点之间建立互连的大型公司则使用 SD-WAN。 3 v2 }7 @- B5 R, F
1 G J3 ?7 _5 K! U5 c1 p
这里就有小友想问了,所以看了这么多下来,我想深入学习,有没有什么思路? - x" w, {4 B3 f- N
老杨认为,SDN的学习路线是"先有基础,再学其架构体系,后应用于特定场景"。
$ v; s6 e5 T" w. c9 d “软件”无非就是要学习一门编程语言,如Java、Python啥的。而“网络”环境原来都是设备厂商专有操作系统,现在语言构建的包大多运行在Linux环境上,这就涉及到部署软件如何在Linux上。 & j3 t, t/ ^2 M# N
比如,网络APP是一个Web应用,那么就需要了解如何部署语言环境、容器以及如何修改配置文件等。 " f: G! A; F) u7 j+ ^& ]7 n
虽然, SDN 已经能够弥补传统网络技术的不足,但是其在实际应用的过程中仍存在一定的问题。 6 t% \( @6 D/ _& I
比如:控制器接口不规范、运算任务相对繁重、安全性得不到保障、整体稳定性较差等。
/ j4 ~. K: l6 m: o4 U SDN 技术在 2011 年左右与 OpenFlow 协议一起推出时受到了很多炒作。从那个时候开始,SDN的采用速度相对放缓了很多,尤其是在网络较小且资源较少的企业。
0 N ]' P5 x+ W" u d; O 嗯,毕竟,不少企业都认为SDN 部署的成本不菲。 $ L* T, R/ e! ?
不过你要是想找,还是很好找到踪迹的。毕竟 SDN 部署在每个行业中都可以找到,但该技术在技术相关领域和金融服务方面的效果更好。 / {! e+ x; M4 n; a8 b
虽然前段时间开始流传着“SDN已死”的说法,但随着工业 4.0 带动企业的数字化转型, SDN 的发展道路会越发宽广,企业对其的依赖程度会逐步提升。
0 v# r3 \; |: V( A9 A/ r & |/ R- _, U6 f9 Y% G8 A/ H/ Y
不管它的发展如何,整体上看,它的确是一个很好的技术。所以,你要做的就是:
3 U$ A) x5 T+ J- W 好好了解,好好学习,抓住现在这个想法,不要放过每个你想提升的瞬间。
8 D: n) c2 G9 E5 M3 a 整理:老杨丨8年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 + K2 G3 N; W$ M- o7 f( S* X0 @
( L+ d2 R* F4 a! n; P+ ^ W
% ]7 H( d; r1 {( ? J. d |