linode singapore 昨天改路由 联通延迟丢包突破天际

2016-09-16 20:25:25 +08:00
 redsonic
官方的说法是为了网络优化,可现在魔都联通绕美国,延迟突破 400ms ,丢包 25%。 原来好端端的 PACNET HK 不走 改走阿三的 TATA US 。

AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-2-2.tcore2.SVW-Singapore.as6453.net
ipinfo_no=0
5. AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-7-2.tcore2.LVW-Los-Angeles.as6453.net 34.0% 100 177.2 174.0 172.4 181.8 2.4
ipinfo_no=0
AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-2-2.tcore2.SVW-Singapore.as6453.net
ipinfo_no=0
6. AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-2-2.tcore1.LVW-Los-Angeles.as6453.net 6.0% 100 173.3 178.3 172.9 191.0 4.7
ipinfo_no=0
AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-7-2.tcore2.LVW-Los-Angeles.as6453.net
ipinfo_no=0
7. AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US if-ae-2-2.tcore1.LVW-Los-Angeles.as6453.net 0.0% 100 187.6 179.7 171.6 191.5 4.2
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.33.57
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.40.189
ipinfo_no=0
AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US 66.110.59.118
ipinfo_no=0
8. AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.25.21 0.0% 100 390.2 284.7 172.1 418.0 109.6
ipinfo_no=0
AS6453| AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US 66.110.59.118
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.40.189
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.33.57
ipinfo_no=0
9. AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.97.61 0.0% 100 387.8 394.8 377.3 450.8 11.4
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.25.21
ipinfo_no=0
10. AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.3.205 2.0% 100 396.8 405.2 375.5 471.6 18.6
ipinfo_no=0
AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.97.61
ipinfo_no=0
11. AS4837| CHINA169-BACKBONE CNCGROUP China169 Backbone, CN 219.158.3.205 31.0% 100 399.7 412.7 386.8 468.1 13.2
ipinfo_no=0
AS17621| CNCGROUP-SH China Unicom Shanghai network, CN 139.226.225.142
ipinfo_no=0
12. AS17621| CNCGROUP-SH China Unicom Shanghai network, CN 139.226.225.142 54.0% 100 408.9 411.1 392.7 437.3 11.4
ipinfo_no=0
AS17621| CNCGROUP-SH China Unicom Shanghai network, CN 112.64.249.162
ipinfo_no=0
13. AS17621| CNCGROUP-SH China Unicom Shanghai network, CN 112.64.249.162 80.0% 100 410.4 420.8 400.2 442.8 9.4
399 次点击
所在节点    VPS
6 条回复
seeley
2016-09-17 12:36:48 +08:00
次奥 刚测了一下确实改了 经由美西去星国 太平洋一个来回
幸好放弃得早
yexm0
2016-09-17 19:33:22 +08:00
@redsonic MTR 咋吧后面那个" AS6453 - TATA COMMUNICATIONS (AMERICA) INC, US"调出来?
redsonic
2016-09-17 19:38:45 +08:00
@yexm0 我自己随便改的代码
redsonic
2016-09-17 20:09:12 +08:00
@yexm0
修改 asn.c ,新增一个 get_asn_name 函数。 随手改的,自己用,没有测-y 非 0 的情况。基于 mtr-0.85_p20140126 版本,其他版本估计也能直接打这个补丁。原作者-y 0 参数的输出都是 hardcode 6 位 AS 输出,因为 asn name 不定长,所以这样改有可能后面的项会移位。如果原作者想真正加这个功能恐怕会改其他输出的代码。


--- asn.c.bak 2016-09-02 11:25:32.733209580 +0800
+++ asn.c 2016-09-17 19:59:55.710935263 +0800
@@ -56,16 +56,18 @@
int ipinfo_no = -1;
int ipinfo_max = -1;
int iihash = 0;
-char fmtinfo[32];
+char fmtinfo[96];
+char fmtinfo2[96];
extern int af; /* address family of remote target */

-// items width: ASN, Route, Country, Registry, Allocated
-int iiwidth[] = { 6, 19, 4, 8, 11}; // item len + space
+// items width: ASN, Route, Country, Registry, Allocated
+int iiwidth[] = {66, 19, 4, 8, 11}; // item len + space
int iiwidth_len = sizeof(iiwidth)/sizeof((iiwidth)[0]);

typedef char* items_t[ITEMSMAX + 1];
items_t items_a; // without hash: items
char txtrec[NAMELEN + 1]; // without hash: txtrec
+char txtrec2[NAMELEN + 1];
items_t* items = &items_a;


@@ -129,7 +131,7 @@
txtlen = NAMELEN;

if (iihash) {
- if (!(txt = malloc(txtlen + 1)))
+ if (!(txt = malloc(txtlen + 1 + 96)))
return NULL;
} else
txt = (char*)txtrec;
@@ -156,6 +158,76 @@
return p;
}

+char * get_asn_name(char *asn) {
+ char lookup_key[NAMELEN];
+ char asn1[6];
+
+ unsigned char answer[PACKETSZ], *pt;
+ char host[128];
+ int len, exp, size, txtlen, type;
+
+ if (!asn)
+ return NULL;
+
+ strcpy(asn1, asn);
+
+ if (snprintf(lookup_key, NAMELEN, "AS%s.asn.cymru.com", asn) >= NAMELEN)
+ return NULL;
+
+ if(res_init() < 0) {
+ fprintf(stderr,"@res_init failed\n");
+ return NULL;
+ }
+ memset(answer, 0, PACKETSZ);
+ if((len = res_query(lookup_key, C_IN, T_TXT, answer, PACKETSZ)) < 0) {
+ return UNKN;
+ }
+
+ pt = answer + sizeof(HEADER);
+
+ if((exp = dn_expand(answer, answer + len, pt, host, sizeof(host))) < 0) {
+ printf("@dn_expand failed\n"); return NULL;
+ }
+
+ pt += exp;
+
+ GETSHORT(type, pt);
+ if(type != T_TXT) {
+ printf("@Broken DNS reply.\n"); return NULL;
+ }
+
+ pt += INT16SZ; /* class */
+
+ if((exp = dn_expand(answer, answer + len, pt, host, sizeof(host))) < 0) {
+ printf("@second dn_expand failed\n"); return NULL;
+ }
+
+ pt += exp;
+ GETSHORT(type, pt);
+ if(type != T_TXT) {
+ printf("@Not a TXT record\n"); return NULL;
+ }
+
+ pt += INT16SZ; /* class */
+ pt += INT32SZ; /* ttl */
+ GETSHORT(size, pt);
+ txtlen = *pt;
+
+
+ if(txtlen >= size || !txtlen) {
+ printf("@Broken TXT record (txtlen = %d, size = %d)\n", txtlen, size); return NULL;
+ }
+
+ if (txtlen > NAMELEN)
+ txtlen = NAMELEN;
+
+ pt++;
+ strncpy(txtrec2, (char*) pt, txtlen);
+ txtrec2[txtlen] = 0;
+
+ strcat(asn, strrchr(txtrec2, ITEMSEP));
+ return strrchr(txtrec2, ITEMSEP);
+}
// originX.asn.cymru.com txtrec: ASN | Route | Country | Registry | Allocated
char* split_txtrec(char *txtrec) {
if (!txtrec)
@@ -187,6 +259,7 @@
for (j = i; j <= ITEMSMAX; j++)
(*items)[j] = NULL;

+ get_asn_name((*items)[0]);
if (i > ipinfo_max)
ipinfo_max = i;
printf("ipinfo_no=%d\n", ipinfo_no);
@@ -281,7 +354,7 @@
char *ipinfo = get_ipinfo(addr);
char fmt[8];
snprintf(fmt, sizeof(fmt), "%s%%-%ds", ipinfo_no?"":"AS", get_iiwidth());
- snprintf(fmtinfo, sizeof(fmtinfo), fmt, ipinfo?ipinfo:UNKN);
+ snprintf(fmtinfo, sizeof(fmtinfo2), fmt, ipinfo?ipinfo:UNKN);
return fmtinfo;
}
yexm0
2016-09-17 23:23:23 +08:00
@redsonic 不知为啥它的 0.87 版本只能发 10 个包....奇葩
redsonic
2016-09-18 02:33:34 +08:00
@yexm0 我的补丁的问题? 不打补丁也只能发 10 个包?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX