Kubernetes中Pod之间使用虚拟二层网络连接引起的调研
传统的三层网络
-
在传统的大型数据中心,网络通常是三层结构。这个模型包含了以下三层:
- Access Layer(接入层):有时也称为Edge Layer。接入交换机通常位于机架顶部,所以它们也被称为ToR(Top of Rack)交换机,它们物理连接服务器。
- Aggregation Layer(汇聚层):有时候也称为Distribution Layer。汇聚交换机连接Access交换机,同时提供其他的服务,例如防火墙,SSL offload,入侵检测,网络分析等。
- Core Layer(核心层):核心交换机为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性,核心交换机为通常为整个网络提供一个弹性的L3路由网络。
-
三层网络框架示意图如下:
其中:汇聚交换机以上的为L2网络,以上是L3网络。每组汇聚交换机管理一个POD(Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
比如:同一机柜的连接的交换机叫接入交换机,连接多个接入交换机的叫汇聚交换机,它们处于同一个vlan网络。(在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN,报文中使用12位来表示VLAN,因此VLAN只能分配4096个)
核心交换机是解决不同数据中心之间的联通
南北流向和东西流向
- 南北向流量:数据中心之外的客户端到数据中心服务器之间的流量,或者数据中心服务器访问互联网的流量。
- 东西向流量:数据中心内的服务器之间的流量。
- 东西向流量分为L2和L3流量:
- L2流量:
(1)东西向的L2流量,如果源和目的主机都在同一个接入层交换机下,那么可以达到全速,因为接入交换机就能完成转发。
(2)如果需要跨机架,但仍然是在一个汇聚层POD内,则需要通过汇聚层交换机进行转发,带宽取决于汇聚层交换机的转发速率,端口带宽和同时有多少个接入层交换机共享汇聚层交换机。汇聚层和接入层之间一般使用STP(后面会提到),这使得一个汇聚层POD只能有一个汇聚层交换机在工作。为了满足跨机架的L2转发,汇聚层交换机的性能,例如带宽,转发速率必然要大于接入层交换机。
(3)如果L2流量需要跨汇聚层POD(大二层架构),那必须经过核心交换机。同样的问题仍然存在,对核心交换机的要求会更高。
- L3流量:
东西向的L3流量,不论是不是在一个接入层交换机下,都需要走到具有L3功能的核心交换机才能完成转发。如下图所示:
STP
为什么要用STP
广播风暴:
前提:node1找node3,但node3网络有问题
过程:
- node1->Access Lay1;
- Access Lay1->Aggregation Lay1; Access Lay1->Aggregation Lay2;
- Aggregation Lay1->Access Lay2(node3网络有问题,Access Lay2会将node3对应的mac删除);Aggregation Lay2->Access Lay2 ;
- Access Lay2 ->Aggregation Lay1;
- Aggregation Lay1->Access Lay1;
- 掉转到第二步
STP:
汇聚交换机和接入交换机之间通常使用STP(Spanning Tree Protocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机可用,其他的汇聚层交换机在出现故障时才被使用(三层框架中的虚线)。也就是说汇聚层是一个active-passive的HA模式。这样在汇聚层,做不到水平扩展,因为就算加入多个汇聚层交换机,仍然只有一个在工作。
大二层网络
随着云计算的发展,计算资源被池化,为了使得计算资源可以任意分配,需要一个大二层的网络架构。即整个数据中心网络都是一个L2广播域,这样,服务器可以在任意地点创建,迁移,而不需要对IP地址或者默认网关做修改。大二层网络架构,L2/L3分界在核心交换机,核心交换机以下,也就是整个数据中心,是L2网络(当然,可以包含多个VLAN,VLAN之间通过核心交换机做路由进行连通)。大二层的网络架构如下图所示:
不存在STP问题的原因:
服务器->接入层->汇聚层->核心层->汇聚层->接入层