流量交换点:从开始到创建自己的IX



Kleinrock在接受采访时说:“我们在SRI的人员之间建立了电话联系。”
“我们输入了L,然后在电话中问:“您看到L了吗?”
回答是:“是的,我们看到了L。”
“我们输入了O,然后问,“你看到O了吗?”
“是的,我们看到了O。”
“然后我们键入G,然后系统崩溃了” ...

然而一场革命已经开始...

互联网的开始。

大家好!

我叫Alexander,我是Linxdatacenter的网络工程师。 在今天的文章中,我们将讨论流量交换点(Internet交换点,IXP):出现在它们之前的东西,它们解决的任务以及如何构建。 同样在本文中,我将演示IXP如何使用EVE-NG平台和BIRD软件路由器工作,以便您可以了解其“幕后”工作方式。

一点历史


如果您在这里查看 ,您会发现交通交换点的数量开始迅速增长,始于1993年。 这是由于当时存在的大多数电信运营商流量通过美国骨干网传递的事实。 因此,例如,当流量从法国的运营商流向德国的运营商时,它首先是从法国流向美国,然后才是从美国流向德国。 在这种情况下,骨干网充当了法国和德国之间的中转站。 即使是一国之内的流量也常常不是直接通过,而是通过美国运营商的核心网络。

这种情况不仅影响过境运输的成本,还影响渠道的质量和延误。 互联网用户数量增加,新运营商出现,流量增加,互联网增长。 全世界的运营商开始意识到,需要一种更为合理的方法来组织运营商之间的交互。 “运营商A为什么我要为穿越另一个国家的过境付费,以便将交通运输给位于相邻街道上的运营商B?” 当时,电信运营商曾提出过类似的要求。 因此,在世界各地,交通交换点开始出现在运营商集中点:

  • 1994年-伦敦的LINX,
  • 1995年-DE-CIX在法兰克福,
  • 1995年-MSK-IX,在莫斯科等

互联网和今天


从概念上讲,现代Internet的体系结构是一组自治系统(自治系统,AS)以及它们之间的许多物理和逻辑连接,它们确定了从一个AS到另一个AS的流量路径。

AS通常是电信运营商,Internet提供商,CDN,数据中心,企业级公司。 AS通常使用BGP协议在它们之间组织对等。

自治系统如何组织这些关系取决于许多因素:

  • 地域
  • 经济的
  • 政治的
  • 业主之间的安排和共同利益,

当然,该方案具有一定的结构和层次。 因此,运营商分为1级,2级和3级,如果本地Internet提供商(3级)的客户通常是普通用户,则例如对于1级运营商其他运营商。 第三层运营商汇总其订户自身的流量,第二层电信运营商依次汇总三层运营商的流量,以及第一层-所有Internet流量。

可以用以下方式表示:


在这张图片中,您可以看到流量是从下往上汇总的,即 从最终用户到一级运营商。 在AS之间也存在彼此大致相等的水平流量交换。

该方案的一个组成部分,同时还有一个缺点是,在地理区域内,靠近最终用户的自治系统之间存在一定的连接混乱。 考虑下图:



假设在一个大城市中,有5个通信运营商,由于某种原因,它们之间的对等组织如上所示。
如果连接到Internet提供商Go的用户Petya想访问连接到ASM提供商的服务器,则它们之间的通信将被强制通过5个自治系统。 这会增加延迟,因为 增加流量将通过的网络设备的数量,以及Go和ASM之间的自治系统上的转接流量的数量。
如何减少被迫通过流量的中转自治系统的数量? 没错-交通交换点。

如今,由于电信运营商,用户和流量的增加以及CDN网络生成的内容数量的增加,新的IXP的出现是由于与90年代早期至2000年代初期的需求相同,只是规模较小。和数据中心。

什么是交通交换点?


流量交换点是具有特殊网络基础结构的地方,对相互流量交换感兴趣的参与者可以组织相互对等。 流量交换点的主要参与者:电信运营商,Internet提供商,内容提供商和数据中心。 在交通交换点,参与者直接相互连接。 这样可以解决以下问题:

  • 减少延迟
  • 减少过境交通量,
  • 优化AS之间的路由。

考虑到在世界上许多大城市都存在IXP,这一切都会对整个Internet产生有利的影响。

如果在IXP的帮助下解决了Petya的上述问题,结果将是这样的:



交通交换点如何安排?


通常,IXP是一个独立的AS,具有自己的公共IPv4 / IPv6地址块。

IXP网络通常是连续的L2域。 有时,它只是承载所有IXP客户端的VLAN。 当涉及到更大的,地理上分散的IXP时,可以使用诸如MPLS,VXLAN等技术来组织L2域。

IXP元素


  • SCS。 这里没有什么异常:机架,光学越野,配线架。
  • 开关是IXP的基础。 交换机端口是IXP网络入口点。 交换机还执行部分安全功能-过滤掉IXP网络上不应该存在的垃圾流量。 通常,将根据功能需求(可靠性,支持的端口速度,安全功能,sFlow支持等)来选择交换机。
  • 路由服务器(RS)是任何现代流量交换点必不可少的组成部分。 它非常类似于iBGP中的路由反射器或OSPF中的指定路由器,可以解决相同的问题。 随着流量交换点中参与者的数量增加,BGP会话的数量也增加,每个参与者都需要支持该会话,即 它类似于iBGP中的经典全网状拓扑。 RS解决了以下问题:与每个感兴趣的IXP参与者建立BGP会话,他成为RS的客户端。 当然,RS从其一个客户端接受BGP更新,然后将此更新发送给所有其他客户端,但从中接收此更新的客户端除外。 因此,RS消除了在所有IXP参与者之间安装全网状网络的需求,并优雅地解决了可伸缩性问题。 值得注意的是,路由服务器透明地将路由从一个AS传输到另一个AS,而不更改传输的BGP属性,例如,不会在其AS中向AS路径添加数字。 同样,路由的基本过滤在RS上进行:例如,RS不接受火星人网络和IXP前缀。

    开源软件路由器BIRD(鸟互联网路由守护程序)通常用作路由服务器解决方案。 很好是因为它是免费的,可以在大多数linux发行版中快速部署,具有用于设置路由/过滤策略的灵活机制,并且对计算资源的要求不高。 另外,可以将Cisco,Juniper等的硬件/虚拟路由器选择为RS。
  • 安全性 由于IXP网络是大量AS的集中,因此必须明确定义所有参与者必须遵循的安全策略。 通常,此处将使用在IXP之外的两个单独的BGP对等点之间建立BGP邻居的所有相同机制,以及一些其他安全功能。

    例如,优良作法是仅允许来自特定IXP mac地址的流量,该地址是事先协商的。 拒绝带有非0x0800(IPv4),0x08dd(IPv6),0x0806(ARP)的以太类型字段的流量; 这样做是为了过滤掉没有BGP对等空间的流量。 也可以使用诸如GTSM,RPKI等机制。

不论规模大小,以上都是任何IXP的主要组成部分。 当然,大型IXP可能会使用其他技术和解决方案。
IXP可能还会为其成员提供其他服务:

  • 托管在IXP TLD DNS服务器上,
  • 安装硬件NTP服务器,使参与者可以精确地同步时间,
  • 提供针对DDoS攻击等的保护

工作原理


我们将以EVE-NG模拟的最简单的IXP为例,分析流量交换点的工作原理,然后考虑BIRD软件路由器的基本配置。 为了简化该方案,我们省略了冗余和容错之类的重要内容。

网络拓扑如下图所示。



假设我们管理一个小型流量交换点,并提供以下对等选项:

  • 公共对等
  • 私人对等
  • 通过路由服务器进行对等。

我们的AS号码是555,我们拥有一个IPv4地址块-50.50.50.0/24,我们从中为想要连接到我们网络的用户发布IP地址。

50.50.50.254-在路由服务器接口上配置的IP地址,如果通过RS对等,则此IP客户端将建立BGP会话。

同样对于通过RS进行对等,我们还基于BGP社区开发了最简单的路由策略,该策略允许IXP参与者调节向谁发送路由以及向谁发送哪些路由:
BGP社区内容描述
LOCAL_AS:PEER_AS仅传递前缀PEER_AS
LOCAL_AS:IXP_AS将前缀传递给所有IXP成员

3个客户希望与我们的IXP连接并交换流量; 假设这些是互联网提供商。 他们都希望通过路由服务器组织对等。 下面是带有客户端连接参数的图:
顾客客户AS号客户宣布的前缀客户端发出的IP地址以连接到IXP
ISP#1AS 1001.1.0.0/1650.50.50.10/24
ISP#2AS 2002.2.0.0/1650.50.50.20/24
ISP#3AS 3003.3.0.0/1650.50.50.30/24

客户端路由器上的基本BGP设置:


router bgp 100 no bgp enforce-first-as bgp log-neighbor-changes neighbor 50.50.50.254 remote-as 555 address-family ipv4 network 1.1.0.0 mask 255.255.0.0 neighbor 50.50.50.254 activate neighbor 50.50.50.254 send-community both neighbor 50.50.50.254 soft-reconfiguration inbound neighbor 50.50.50.254 route-map ixp-out out exit-address-family ip prefix-list as100-prefixes seq 5 permit 1.1.0.0/16 route-map bgp-out permit 10 match ip address prefix-list as100-prefixes set community 555:555 

此处的设置不是bgp先执行为。 缺省情况下,BGP要求从其接收此更新的对等方的as bgp号应存在于接收到的BGP更新的as-path中。 但是,由于路由服务器未对as-path进行更改,因此as-path中将不存在其编号,并且更新将被丢弃。 此设置用于使路由器忽略此规则。

我们还看到客户端在此前缀上安装了bgp社区555:555,根据我们的政策,这意味着客户端希望向所有其他参与者宣布此前缀。

对于其他客户端的路由器,除其唯一参数外,设置将相似。

BIRD配置示例:


 define ixp_as = 555; define ixp_prefixes = [ 50.50.50.0/24+ ]; template bgp RS_CLIENT { local as ixp_as; rs client; } 

以下内容描述了不接受火星人前缀以及IXP前缀本身的过滤器:

 function catch_martians_and_ixp() prefix set martians; prefix set ixp_prefixes; { martians = [ 0.0.0.0/8+, 10.0.0.0/8+, 100.64.0.0/10+, 127.0.0.0/8+, 169.254.0.0/16+, 172.16.0.0/12+, 192.0.0.0/24+, 192.0.2.0/24+, 192.168.0.0/16+, 198.18.0.0/15+, 198.51.100.0/24+, 203.0.113.0/24+, 224.0.0.0/4+, 240.0.0.0/4+ ]; if net ~ martians || net ~ ixp_prefixes then return false; return true; } 

此功能实现了我们前面介绍的路由策略。

 function bgp_ixp_policy(int peer_as) { if (ixp_as, ixp_as) ~ bgp_community then return true; if (ixp_as, peer_as) ~ bgp_community then return true; return false; } filter reject_martians_and_ixp { if catch_martians_and_ixp() then reject; if ( net ~ [0.0.0.0/0{25,32} ] ) then { reject; } accept; } 

我们建立对等网络,应用适当的过滤器和策略。

 protocol as_100 from RS_CLIENT { neighbor 50.50.50.10 as 100; ipv4 { export where bgp_ixp_policy(100); import filter reject_martians_and_ixp; } } protocol as_200 from RS_CLIENT { neighbor 50.50.50.20 as 200; ipv4 { export where bgp_ixp_policy(200); import filter reject_martians_and_ixp; } } protocol as_300 from RS_CLIENT { neighbor 50.50.50.30 as 300; ipv4 { export where bgp_ixp_policy(300); import filter reject_martians_and_ixp; } } 

值得注意的是,在路由服务器上,这是将不同对等方添加到不同RIB的路由的好方法。 BIRD允许您执行此操作。 在我们的示例中,为简单起见,将从所有客户端收到的所有更新都添加到一个公用RIB中。

所以,让我们检查一下我们得到了什么。

在路由服务器上,我们看到在所有三个客户端中都安装了BGP会话:



我们看到我们收到了所有客户的前缀:



在as 100路由器上,我们看到,如果与路由服务器只有一个BGP会话,我们会分别从200和300获得前缀,而BGP属性没有改变,就好像客户端之间的对等直接进行一样:



因此,我们看到路由服务器的存在极大地简化了IXP上对等组织。

我希望这个演示可以帮助您更好地了解如何安排流量交换点以及如何在IXP上实现路由服务器。

Linxdatacenter ix


在Linxdatacenter,我们基于2个交换机和2个路由服务器的容错基础架构构建了自己的IXP。 现在,我们的IXP以测试模式启动,并且我们邀请所有人连接到Linxdatacenter IX并参与测试。 连接时,将为您提供带宽为1 Gbit / s的端口,可以通过我们的路由服务器进行对等,以及访问IX-portal的个人帐户(可在ix.linxdatacenter.com上找到)

写评论或私人消息以访问测试。

结论


流量交换点是在Internet诞生之初出现的,它是一种解决电信运营商之间流量不理想问题的工具。 现在,随着新的全球服务的出现和CDN流量的增加,交换点也正在继续优化全球网络的运行。 全球IXP数量的增加对服务的最终用户以及电信运营商,内容运营商等都有利。 对于IXP参与者而言,其好处体现在降低组织外部对等服务的成本,减少使高级运营商付出成本的流量,优化路由以及与内容运营商建立直接接口的能力。

有用的链接


Source: https://habr.com/ru/post/zh-CN478832/


All Articles