业务地址和接口地址?傻傻分不清楚

Posted by 琉璃康康 on September 8, 2018

最近就想总结一些这两种IP,正好赶上了一个项目让这篇文案迅速成型。

起因是要升级一台本地的通信网络设备A,结果升级之后收不到远端设备B回复的GTP信令消息了,然后A就把B的IP标记成了不可使用的IP,这也是A设备的一个功能,而且标记为不可用的IP后,当下次用户上线就不选择此IP进行GTP Tunnel的建立了,从而避免了时间和资源的浪费,多么完美。

结果客户炸毛了,质问为什么要标记成不可用,升级前怎么没有,能不能关了?质疑的多了,搞的我都怀疑设备A真的有问题了,但是还是怀疑客户传输网络有问题。

中间细节不表,客户就拉我们和传输工程师(阿三哥们)在线会议,阿三哥从传输网络的路由器直接ping设备A和设备B的业务IP,并且得到了成功的响应,然后三哥们坚信传输没问题。

但是从设备B上ping设备A的业务地址却没有响应。

这就有点儿意思了。

1.什么是接口地址(Interface IP)和业务地址(Service IP)

业务和接口IP

先来说说上图,A和B是一对热恋中的小情侣,A住在555府邸,B则住在666的Penthouse大平层。

那么一个问题,小男生A骑着骏马去找女朋友B,他是要见到B本人呢还是看门牌号就打道回府了呢?

显而易见,一定要见到B本人你侬我侬互吐衷肠之后才能策马奔腾往回去吧!

在这个过程中,A和B是最终互通有无的个体,所以他们就是在这个交往中的业务地址,而各自府邸的代号(555和666)就是其接口地址。

对应到网络中,接口地址就是网络设备接口上配置的IP,是要关联到端口的;业务地址则是真实表示业务的逻辑IP地址比如DNS业务地址、NTP业务地址、MME的S6a业务地址、PGW的S5/S8业务地址等等。

2. 接口地址到底是干什么的?

业务和接口IP

这个时候市政决定在A到B的路中间修了另外一条路,三岔路口出现,同时路人C开始站岗负责指挥交通。

此时A又要去找B玩耍了,到达路口一怔:“我去,走哪里?”

C笑盈盈的出现了:“老弟,去哪里呀?”

A:“我要找小女盆友B!”

C:“哦,我看看,B在666大厦,根据最长匹配667,那么需要走2号出口思密达。”

A高高新兴策马奔腾从2号口出去到了666大厦,从而终于再次得见小女朋友B。

在这个过程中,C就是A和B之间的路由器,当A到达三岔路口迷茫不知所措的时候,C挺身而出通过手中的小本本(路由表)给A指明了前进的方向需要去到666才能见到女友B。

而这些接口地址(666、667)是作为指明A找到B的方向而存在的,也就是只负责业务递交,不能负责具体业务。

说白了,接口地址就是负责完成路由任务的,将数据包递交到直连的对端路由器或者设备即可。

3. 为什么要区分接口地址和业务地址?

依然拿上图来说:

业务和接口IP

为了有来有往,B今天决定去找小男朋友A,梳洗打扮三小时,五分钟到三岔口,蒙圈。

C这个时候出来说:“前方路途险峻,女施主就不要去啦,贫僧愿代劳前往。”

你说B能干么?你个小三想上位?想的美。

所以区分业务地址和接口地址的目的就是要明确消息的收发到底应该是谁跟谁之间,业务地址和业务地址交流具体的业务内容,接口地址和接口地址交流来保证路由畅通即可,不能乱了章法,等级制度还是蛮森严的。

业务和接口IP

4. 遇到的问题

而今次遇到的问题就是传输工程师地址类型不明,当我们在网络中做一个ping(或者traceroute)的动作,如果不指定任何的源地址,那么就会根据路由表从定义的接口地址中随机选择一个作为源地址来完成ping(traceroute)的动作,虽然可能可达,但是并不能代表端到端的业务地址畅通。

而当我们在设备B上以业务地址作为源来ping设备A的时候发现业务地址是不通的,从而判断传输网络必然存在问题。

即使这样客户和传输工程师依然坚信传输没有问题,因为毕竟设备A升级前确实没有不可达的IP出现。

所以建议客户在设备A的直连路由器R1和设备B的直连路由器R2上同时抓包,结果:

1
2
1. A发给B的Request,R1和R2都可以抓到。
2. B回给A的Response,R2可以抓到,但是R1一无所获。

到此,传输工程师终于承认其传输网络存在问题了。

5. 排错时如何使用接口地址和业务地址

所以在网络传输的问题排查时,一定要清楚现在正在排查的是业务地址间的问题还是接口地址间的问题。

其实接口地址间很少出问题,因为比如上图中A到路由器R1间的接口地址,基本直连——就是一个网线连接你我,那么在网络设计上,是可以使用最长/30位掩码的。

所以当我们看到设备端口是up的时候,接口地址间基本没有问题了。

这个时候开始专注于各自的业务地址,当在做业务地址间的ping或者traceroute的时候一定要确定本端的业务地址可以作为源地址,否则通与不通都不能代表任何结果。

那么一个问题来了:有木有业务地址和接口地址是一样的呢?答案是肯定的,比如Linux Server上的业务地址就可以直接使用接口地址。

好了,就到这里了,下课!╮( ̄▽ ̄””)╭

大家周末愉快~


欢迎关注公众号:七禾页话(qiheyehk),旅行、摄影。。。